ggplot2入门大全(从菜鸟到高手)

2023-11-06

在开始ggplot2的学习之前,可以先看下我之前的一篇博客,关于快速作图——qplot

1、ggplot2中的mpg数据集

第一步当然是加载ggplot2,读取数据,了解数据。


> library(ggplot2)
Warning message:
程辑包‘ggplot2’是用R版本3.6.3 来建造的 
> mpg
# A tibble: 234 x 11
   manufacturer model      displ  year   cyl trans      drv     cty   hwy fl    class  
   <chr>        <chr>      <dbl> <int> <int> <chr>      <chr> <int> <int> <chr> <chr>  
 1 audi         a4           1.8  1999     4 auto(l5)   f        18    29 p     compact
 2 audi         a4           1.8  1999     4 manual(m5) f        21    29 p     compact
 3 audi         a4           2    2008     4 manual(m6) f        20    31 p     compact
 4 audi         a4           2    2008     4 auto(av)   f        21    30 p     compact
 5 audi         a4           2.8  1999     6 auto(l5)   f        16    26 p     compact
 6 audi         a4           2.8  1999     6 manual(m5) f        18    26 p     compact
 7 audi         a4           3.1  2008     6 auto(av)   f        18    27 p     compact
 8 audi         a4 quattro   1.8  1999     4 manual(m5) 4        18    26 p     compact
 9 audi         a4 quattro   1.8  1999     4 auto(l5)   4        16    25 p     compact
10 audi         a4 quattro   2    2008     4 manual(m6) 4        20    28 p     compact
# ... with 224 more rows
> str(mpg)
Classes ‘tbl_df’, ‘tbl’ and 'data.frame':	234 obs. of  11 variables:
 $ manufacturer: chr  "audi" "audi" "audi" "audi" ...
 $ model       : chr  "a4" "a4" "a4" "a4" ...
 $ displ       : num  1.8 1.8 2 2 2.8 2.8 3.1 1.8 1.8 2 ...
 $ year        : int  1999 1999 2008 2008 1999 1999 2008 1999 1999 2008 ...
 $ cyl         : int  4 4 4 4 6 6 6 4 4 4 ...
 $ trans       : chr  "auto(l5)" "manual(m5)" "manual(m6)" "auto(av)" ...
 $ drv         : chr  "f" "f" "f" "f" ...
 $ cty         : int  18 21 20 21 16 18 18 18 16 20 ...
 $ hwy         : int  29 29 31 30 26 26 27 26 25 28 ...
 $ fl          : chr  "p" "p" "p" "p" ...
 $ class       : chr  "compact" "compact" "compact" "compact" ...

ctyhwy 分别记录城市和高速公路驾驶耗油量(英里/加仑)

1 mile=1609.344 m;1 gal=3.785412L

displ 表示发动机排量(L)
drv 表示驱动系统:前轮驱动(f)、后轮驱动(r)和四轮驱动(4)
model 表示车辆型号,共有38种车型
class 表示车辆类别
全部变量的解释可以参考:mpg数据集内容

2、ggplot2图像的三个基本构成:数据、图形属性和几何对象

ggplot2 图像的三个基本构成:
1、数据
2、图形属性映射
3、几何对象

for example

ggplot(mpg,aes(x=displ,y=hwy))+geom_point()

在这里插入图片描述
它展现了由以下三个组件构成的散点图:

1、数据:mpg
2、图形属性映射:displ对应x轴,hwy对应y轴
3、几何对象:散点图

代码就像套公式,ggplot(mpg,aes(x=displ,y=hwy))+geom_point(),数据和图形属性映射包含在ggplot()中,而+可用来添加图层,随着学习的深入,+的东西会越来越丰富。

3、如何将变量映射到图形属性中

先补充一点,下面两行代码是一样的,默认先x后y。

ggplot(mpg,aes(x=displ,y=hwy))+geom_point()
ggplot(mpg,aes(displ,hwy))+geom_point()

然而这样做出来的图并不是我们想要的,因为不够美观。还需要进一步调整,比如:

#ggplot2通过 标度 可以将数据转换为图形属性。
ggplot(mpg,aes(displ,hwy,colour=class))+geom_point()#颜色
ggplot(mpg,aes(displ,hwy,shape=drv))+geom_point()#形状
ggplot(mpg,aes(displ,hwy,size=cyl))+geom_point()#大小

以第一个colour为例,不同类型的车一目了然。
在这里插入图片描述
那么,可以看出什么呢?比如发动机排量(displ)较大的双座车(2seater),油耗却不是最高的,所以固定油耗下行驶距离会更长。

  • 补充一个重点
    比较下面两张图像:
ggplot(mpg,aes(x=displ,y=hwy))+geom_point(aes(colour="blue"))
ggplot(mpg,aes(x=displ,y=hwy))+geom_point(colour="blue")

在这里插入图片描述
在这里插入图片描述
为什么会这样呢?这就是“标度”的作用,可以体会一下,我不太会解释

最后,来了解一下“分面”。这个不用解释,目的就是把复杂的数据分一分类,做出来的图更直观。分面有两种类型,网格型和封装型,下面主要讨论更为常用的封装型。

ggplot(mpg,aes(displ,hwy))+geom_point()+facet_wrap(~class)

在这里插入图片描述
加上facet_wrap()即可,括号里是类别,别忘了波浪线~

4、如何指定不同的几何对象绘制各种各样的图形

聪明的你可能已经想到修改geom_point(),来画其他的图,恭喜你猜对了!
下面挑几个常用的图像类型展示一下:

No1、在图中添加平滑曲线

ggplot(mpg,aes(displ,hwy))+geom_point()+geom_smooth()

在这里插入图片描述
灰色部分表示逐点置信区间用以评估不确定性。如果不需要,可以输入geom_smooth(se=FALSE)。

  • 平滑方式并不相同,method="loess"是数据量较小时的默认选项,使用局部拟合回归(可以查阅帮助?loess),曲线的平滑程度由参数span控制,取值范围0(很不平滑)到1(很平滑)。

示例:

ggplot(mpg,aes(displ,hwy))+geom_point()+geom_smooth(method="loess",span=0.2)
ggplot(mpg,aes(displ,hwy))+geom_point()+geom_smooth(method="loess",span=1)

在这里插入图片描述

在这里插入图片描述
但是,当数据量n超过1000时,loess并不适用,那该怎么办呢?下次再介绍

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ggplot2入门大全(从菜鸟到高手) 的相关文章

  • R 改变构面的顺序

    我正在尝试将方面的顺序从 BA SLG 更改为 SLG BA 我发现了与此类似的问题 但我认为我的解决方案可能不起作用 因为我已经在Excel中汇总了数据 因此 我的数据框可能会有所不同 无论如何 我尝试实现这个但无济于事 df2 lt f
  • 更改 R 中 ggplot geom_polygon 的颜色方案

    我正在使用地图库和 ggplot 的 geom polygon 创建地图 我只是想将默认的蓝色 红色 紫色配色方案更改为其他颜色 我对 ggplot 非常陌生 所以如果我没有使用正确的数据类型 请原谅 我使用的数据如下所示 gt head
  • ggplot2:带有 geom_line 的 x 轴因子不起作用

    我想要一个线图 其中value绘制为函数expt每级一行var 这是我的数据 lines lt expt var value 1 none p 0 183065327746799 2 none p 0 254234138384241 3 n
  • 如何使用plotmath更新ggplot图例标签

    我正在尝试更新ggplot要使用的图例标签plotmath但是 当我这样做时 它将之前组合的图例分成两部分 通过一个例子可能更容易理解 test data and the default plot gives the correct col
  • ggplot geom_bar - 条形太宽

    对于这个非信息性的标题 我感到很抱歉 gt y read csv textConnection scan sep n what raw org art type length 191 gk Finish short 4 147 ik Att
  • 根据一个或多个下拉选项创建具有不同类型线型的折线图

    在下面闪亮的应用程序中 我尝试根据侧边栏中的下拉选择创建点线图 我已成功在选择一个指标时创建折线图 但无法选择 2 个指标 为了x and y我想要一个solid线 对于x1 and y1我想要一个dashed线和对于x2 and y2一条
  • ggplot 中的条形图,每组有不同数量的条形图

    我的数据集如下所示 DSET lt data frame cbind c rep V1 3 rep V2 3 V3 c rep c X1 X2 X3 2 X1 c rep 1 7 names DSET lt c A B C DSET 3 l
  • 如何使用 purrr::pmap 在nested.data.frame中绘制多个ggplot

    我对 purrr pmap 在nested data frame中制作多个ggplot图有一些疑问 我可以使用 purrr map2 毫无问题地运行下面的代码 并且可以在nested data frame中制作多重图 2个图 作为示例 我在
  • 如何调整ggplot2中的标题位置

    这是代码 require ggplot2 require grid pdf a pdf png a png a lt qplot date unemploy data economics geom line opts title A b l
  • ggplot:按组自动化的百分位线

    我找到了dplyr gt 运算符有助于简单的 ggplot2 转换 无需求助于ggproto 这是必需的ggplot2 扩展 http docs ggplot2 org dev vignettes extending ggplot2 htm
  • 在 for 循环中绘制的多个 ggplot2 绘图的网格

    作为一个新的 ggplot2 用户 我对可能性的数量感到有点迷失 并且很难在网上找到我认为简单问题的简单答案 我想在同一张纸上显示 ggplot2 的多个图 但知道这些图来自 for 循环 以下示例无法编译 仅用于说明 for i in c
  • 在ggplot2中创建部分虚线

    我正在 R 中创建一个图 并且需要创建一条线 其中某些值是投影 投影用虚线表示 这是代码 df data frame date c rep 2008 2013 by 1 value c 303 407 538 696 881 1094 gg
  • 带有嵌套分组变量的多行轴标签,用于 - R 中的堆积条形图

    我想使用 ggplot 制作一个包含多个类别的堆叠条形图 并带有嵌套的标记 X 轴 类似于我使用 Excel 制作的条形图 如此处所示 我尝试使用给出的例子here https stackoverflow com questions 181
  • 我可以调整scale_color_brewer的下限吗?

    我已经订购了我想使用 color Brewer 的分类数据 但我很难看到非常低的值 有没有办法去掉这些较低的值或设置范围的下限 ggplot data frame x 1 6 y 10 15 w letters 1 6 aes x y co
  • 在 R 中,如何将 SpatialPolygons* 转换为地图对象

    我正在尝试利用ProportionalSymbolMap在此定义的地图JSS论文 http www jstatsoft org v15 i05 为了绘制比例符号 我首先需要一个地图类的对象 The methods http www ncea
  • 在 ggplot2 上绘制世界地图

    我一直在尝试在 ggplot2 上绘制世界地图 我跟踪了电子邮件的线索 带 l 的 ggplot 地图 https stackoverflow com questions 9558040 ggplot map with l但我确实遇到了同样
  • ggplot2:图例下方的中心图例而不是面板区域

    ggplot默认情况下 图例位于面板下方居中 这在某些情况下确实令人沮丧 请看下面的例子 ggplot diamonds aes cut fill clarity geom bar coord flip theme legend posit
  • tidyverse 干扰 ggplot2 吗?无法访问map_data

    在控制台中运行这些命令 输出为 gt cty0 ggplot2 map data county gt library tidyverse Loading tidyverse ggplot2 Loading tidyverse tibble
  • 使用faceting()时如何连接geom_point()和geom_line?

    我有一个问题 但我在互联网上没有找到任何相关信息 我很高兴得到一些提示 我有一个数据集 其中 x 轴是离散的 但我想将这些点相互连接 我可以做到 我的问题是当我添加分面选项时 我无法再将这些点相互链接起来 我找到了一个替代方案 但看起来不太
  • 如何使用 Facet R 添加线条[重复]

    这个问题在这里已经有答案了 所以我有一个多面图 我希望能够向其中添加随每个面而变化的线 这是代码 p lt ggplot mtcars aes x wt geom histogram bins 20 aes fill factor cyl

随机推荐

  • 面试-Redis篇-Redis有序集合实现多字段排序

    排行榜需求 根据分数进行排序 分数相同时根据时间并列排序 根据分数排序很容易实现 正序 redis Yii app gt redis gt zrange key start end true 倒序 redis Yii app gt redi
  • 基础算法题——错误票据(输入输出)

    前言 以前对getline并没有太深地理解 甚至觉得cin就够用 直至遇到了这道算法题 错误票据题目 问题描述 某涉密单位下发了某种票据 并要在年终全部收回 每张票据有唯一的ID号 全年所有票据的ID号是连续的 但ID的开始数码是随机选定的
  • rockchip — display-timing dts配置

    rockchip display timing dts配置 如何确定lcd timing参数
  • JDBC、C3P0、DBUtils

    一 JDBC的内容 JDBC API 定义了一系列的接口和类 集成在java sql和javax sql DriverManager 管理各种不同的JDBC驱动 JDBC驱动 负责连接不同类型的数据库 二 JDBC访问数据库步骤 Drive
  • 随机变量之常见分布

    0 概述 统计分析是可以帮助人们认清 刻画不确定性的方法 总体是某一特定事物可能发生结果的集合 随机变量 Random Variable 则是一个不确定事件结果是数值函数 Function 也就是说 把不确定事件的结果用数值来表述 即得到随
  • 开源盛会来袭,开发者们不容错过!

    开源社 KAIYUANSHE 当今国内开源势头正劲 想利用好开源软件 在开源的大潮中乘风破浪 成为佼佼者吗 2022 第七届中国开源年会 COSCon 22 将于 10 月 29 日 30 日 在线上 元宇宙 传统线上直播渠道 与线下 10
  • celery 启用worker ValueError: not enough values to unpack

    2018 01 12 19 08 15 545 INFO MainProcess Received task tasks add 5d387722 5389 441b 9b01 a619b93b4702 2018 01 12 19 08 1
  • oracle数据泵导入导出6,Oracle使用数据泵导入/导出数据(expdp/impdp)

    A电脑上的操作 expdp数据导出 运行cmd 登录数据库 输入命令 sqlplus 使用管理员角色登录需要在用户名后加 as sysdba 例如 sys as sysdba 创建目录路径 输入命令 create directory dat
  • Docker基础与基于Docker的ROS系统使用说明

    docker常用命令 docker load i xxx tar 将tar包导入为本地镜像 docker ps 列出所有正在运行的容器 docker image ls 列出所有的镜像 docker start
  • 浅谈 IEEE 802.3af 标准 PSE电路

    从第一篇文章 我们已经大致了解整个POE的组成 这篇文章我们主要学习 IEEE 802 3af 标准的 受电端电路 主要简化电路如下 电路中省略了芯片等 只为一个大概的电路图 从电路可以看出主要分为三个部分 具体过程如下 在分级阶段 PSE
  • spring cloud 升级config-client及部署问题

    接昨天 升级微服务到config client又遇到一些问题 花了大半天的时间 其实 不该花这么久的 所以还是踩坑了 直接说问题吧 rabbitmq连接报错 主要有几个报错 原因应该都是未连接上rabbitmq导致的 org springf
  • Ubuntu下QtOpenGL无法正常使用GLU库的解决方法

    本文来自 http www linuxdiyf com linux 2873 html 一 修改makefile文件 某个库的接口不被识别的最可能的原因是没有包含该库的头文件 可以尝试将 include
  • idea添加database插件_IDEA插件系列(6):Database Navigator插件操作数据库

    0 目录 1 插件介绍 2 安装方式 3 使用方法 1 插件介绍 Database Navigator插件 该产品为IntelliJ IDEA开发环境和相关产品增加了广泛的数据库开发和维护功能 它与合格且符合IDE要求的SQL和PL SQL
  • Web自动化测试12:Selenium窗口截图、验证码处理

    更多功能测试以及全套学习路线图均在专栏 戳进去领取 Web自动化测试01 认识web自动化在什么项目中适用 Web自动化测试02 Web自动化测试工具选择大全 Web自动化测试03 Selenium安装配置 详细教程 Web自动化测试04
  • kubernetes Deployment 详解 更新/回滚/缩放/暂停/恢复部署操作

    涉及文档 Deployments 官方文档 Deployments 简介 一个 Deployment 为 Pods 和 ReplicaSets 提供声明式的更新能力 你负责描述 Deployment 中的 目标状态 而 Deployment
  • SpringToolSuite4中集成maven

    目录 一 什么是Maven 二 Maven的使用 一 什么是Maven Maven是基于项目对象模型 POM project object model 可以通过一小段描述信息 配置 来管理项目的构建 报告和文档的软件项目管理工具 Maven
  • ImportError lib64 libstdc++.so.6 version CXXABI 1.3.9 not found required by home anaconda

    文章目录 1 现象 2 解决方案 3 参考 1 现象 ImportError lib64 libstdc so 6 version CXXABI 1 3 9 not found required by home qtxu anaconda3
  • YOLOX的解耦头结构思考

    问题 YOLOX提出了一个Decoupled Head结构以代替YOLO Head 进而在YOLOv3 baseline的基础上提升了1 1个百分点的mAP 那为什么解耦头结构就能够提升检测效果呢 调研 我主要在YOLOX原论文讲述Deco
  • Git创建、连接远程仓库命令

    目录 Git定义 作用 概念 配置 操作 全局配置 创建 添加到暂存盘 从暂存盘撤回 提交到版本库 从版本库切换版本库 查看记录 分支 标签 下载远程仓库 远程仓库 github 远程仓库 本地 本地推送到服务器 1 需要 2 成功 远程网
  • ggplot2入门大全(从菜鸟到高手)

    在开始ggplot2的学习之前 可以先看下我之前的一篇博客 关于快速作图 qplot 在本章你将学习 1 ggplot2中的mpg数据集 2 ggplot2图像的三个基本构成 数据 图形属性和几何对象 3 如何将变量映射到图形属性中 4 如