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入门大全(从菜鸟到高手) 的相关文章

  • ggplot2 + 使用比例 X 的日期结构

    我真的需要帮助 因为我已经迷路了 我正在尝试创建一个折线图 显示几个团队一年来的表现 我将一年分为几个季度 2012 年 1 月 1 日 2012 年 4 月 1 日 2012 年 8 月 1 日 12 1 12 并将 csv 数据帧加载到
  • ggplot2 方面的内部排序

    我正在尝试在 ggplot2 中绘制一个方面 但我很难使不同方面的内部顺序正确 数据如下 head THAT EXT ID FILE GENRE NODE 1 CKC 1823 01 CKC Novels better 2 CKC 1824
  • 使用变量标签作为标题和轴标题时自动化 ggplots

    我对 NSE 和绘图函数有点混淆 我试图在使用变量标签 而不是名称 标记轴等的同时自动绘制一些图 假设我们有一个大型数据集 所有变量都已标记 这里的小例子 library tidyverse library sjlabelled libra
  • 如何为每个条形图制作具有定义水平边框的堆叠条形图

    我有一些数据想以一种我不知道如何在条形图中显示的方式 希望你能帮我解决这个问题 我的表由 4 列组成 簇 0 6 IgG Status mild high mild low Severe High 患者 1 16 和值 每个簇的标准化值 这
  • 如何在双对数图(ggplot2)中添加趋势线?

    我需要绘制一个遵循幂律分布的数据向量 所以如果我将它们绘制在对数轴上 它们将是一条直线 但是 如果我没有明确提供 y 参数 我不知道如何绘制 这是代码 library poweRlaw library ggplot2 xmin 1 alph
  • 通过单击堆叠条形图打开选项卡

    我正在使用 R 构建一个包含转发的堆积条形图 ggplot and plotly 如果单击条形图的一部分 我希望打开一个新的浏览器选项卡并显示该特定日期的推文以及指定的转发量 但是 当我单击下面示例中的其中一个栏时 会打开一个不同的链接 表
  • 重叠并固定小平面中的 x 尺度(尺度=“自由”)以制作电影

    在另一篇文章中 Justin 的帮助下 我用以下方法绘制了模拟结果facet gridggplot2 中的选项 包含数据和答案的帖子在这里 使用facet grid选项通过ggplot2绘制数据框的列 https stackoverflow
  • 三角形内的热图

    考虑以下示例 triangle lines lt data frame X c 0 0 1 1 0 5 0 5 Y c 0 0 0 0 1 1 grp c 1 2 1 3 2 3 df lt matrix c c 0 2 0 5 0 8 c
  • 如何创建具有特定于每个方面的标题和副标题的分面图?

    生成一个图 该图与每列的单独图相结合 带有标题和副标题 以及每个图的垂直线 我使用直方图创建了带有垂直线的列 library ggplot2 library gridExtra library tidyr actualIris lt dat
  • 在动画 ggplot2 中的轴标签上包含图像

    我创建了一个动画条形图 显示玩家的进球数 虚构 请参阅示例的复制数据 df lt data frame Player rep c Aguero Salah Aubameyang Kane 6 Team rep c ManCity Liver
  • scale_y_discrete 忽略中断/标签

    漏洞 可能相关对此 https github com tidyverse ggplot2 issues 1589 dat data frame x 1 4 y ordered c 4 gt 5 1 1 levels c 1 5 gt 5 g
  • 有什么方法可以在地图上绘制多个条形图吗?

    我正在尝试在地图上绘制多个条形图 并且只是在寻找一个起点 我已经看过几个问题了 如下所示 地图上的条形图 https stackoverflow com questions 20465070 barplots on a map 使用ggpl
  • 如何更改 geom_bar 中条形之间的间距?

    我有一个两边都有正值的条形图 当我改变条形的宽度时 它们之间的空间变得很大并且看起来不太好 我试图用它来操纵它position position dodge 但它不起作用 如何减少栏之间的空间 这是代码 最初发布在这里与 x 轴交叉的堆积条
  • 更改 geom_text 的默认“a”图例以标记字符串本身

    类似于这个问题 https stackoverflow com questions 18337653 remove a from legend when using aesthetics and geom text 我想更改图例中的默认 a
  • 如何强制geom_point在R中显示比例大小?

    我的数据如下 抱歉有点大 test dput 我还有一个绘制这些数据的代码 这里的问题是它没有给我比例大小read counts value多变的 我怎样才能解决这个问题 谢谢 my code p ggplot test dput aes
  • 使用填充美学两次,具有两种不同的比例[重复]

    这个问题在这里已经有答案了 我正在尝试在一组多边形的顶部使用分组箱线图来绘制一个图 并且希望使用填充美学来基于连续变量为多边形着色 并且箱线图基于单独的分组变量 我发现了几篇文章可以帮助我获得多边形上的箱线图 并且找到了其他有相关问题的人
  • 如何用外部图像填充地图边界?

    我正在创建一张带有州边界的巴西地图 这可以直接使用ggplot2 and geom sf 然而 这一次 我不想用数据填充每个状态的颜色 而是想用外部图像 png 填充每个状态的边界 类似于this https online olivet e
  • 在 R 中使用 lapply 绘制多个数据帧

    我正在尝试使用 lapply 函数绘制多个数据帧 每个数据帧一个图 但是尽管有关此主题的所有帖子我都找不到答案 因为我不断收到错误 图的输出列表为空 我的数据结构如下 df1 lt mtcars gt group by cyl gt tal
  • ggplot2 geom_密度和geom_histogram在一个图中

    如何制作一个所有条形加起来为 1 的直方图 并在适合的上方添加一个密度层 set seed 1234 df lt data frame sex factor rep c F M each 200 weight round c rnorm 2
  • 如何在 R 或 Python 中制作旭日图?

    到目前为止 我一直无法找到一个可以创建旭日图的 R 库约翰 斯塔斯科 http www cc gatech edu gvu ii sunburst 有人知道如何在 R 或 Python 中实现这一点吗 在极坐标投影中使用 matplotli

随机推荐

  • 面试-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 如