美文网首页
第一部分探索--第1章 使用ggplot2进行数据可视化

第一部分探索--第1章 使用ggplot2进行数据可视化

作者: Hannahhao | 来源:发表于2019-12-09 19:20 被阅读0次

    1.1 简介

    tidyverse的一个核心R包--ggplot2
    首先安装tidyverse
    install.packages("tidyverse")
    其次要加载tidyverse:
    library(tidyverse)
    R包只需安装一次,但每次开始新会话时都要重新加载。

    1.2 第一步

    1.2.1 mpg数据框

    数据框:是变量(列)和观测(行)的矩形集合。
    mpg:包含了由美国环境保护协会收集的38种车型的观测数据。

    mpg
    ?mpg:了解更多关于mpg的信息,每个变量代表什么。举例:displ: 引擎大小,单位为升;hwy: 汽车在高速公路上行驶时的燃油效率,单位为英里/加仑。效率高耗油少效率低耗油多。

    1.2.2 创建ggplot图形

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

    1.jpeg
    提示: displ和hwy之间是负相关=大引擎更耗油
    ggplot(data=mpg) 创建一张空白图
    函数geom_point()=创建散点图
    ggplot2中每个几何对象函数都有一个mapping参数。mapping参数总是与aes()函数成对出现,aes()函数的x参数和y参数分别指定了映射到x轴的变量与映射到y轴的变量。

    1.2.3 绘图模板

    ggplot(data=<DATA>)+
    <GEOM_FUNCTION>(mapping=aes(<MAPPINGS>))
    接下来的部分是展示如何完成并扩展这个模板,以制作出各种类型的图。

    1.3 图形属性映射

    定义/概念学习
    图形属性:是图中对象的可视化属性,其中包括数据点的大小,形状和颜色。
    标度变换:ggplot2会自动为每个变量值分配唯一的图形属性水平的这个过程。
    aes():将图层中使用的每个图形属性映射集合在一起,然后传递给该图层的映射参数

    举例1:将点的颜色映射为变量class,从而揭示每辆汽车的类型
    ggplot(data=mpg)+
    geom_point(mapping=aes(x=displ, y=hwy, color=class))

    2

    举例2:将无序变量class映射为有序图形属性size:
    ggplot(data=mpg)+
    geom_point(mapping=aes(x=displ, y=hwy, size=class))

    3
    举例3:将变量class映射为不同点透明度:
    ggplot(data=mpg)+
    geom_point(mapping=aes(x=displ, y=hwy, alpha=class))
    4
    举例4:将变量class映射为不同形状:
    ggplot(data=mpg)+
    geom_point(mapping=aes(x=displ, y=hwy, shape=class))
    5
    “gglot2只能同时使用6种形状”

    为几何对象设置图形属性,要在函数aes()的外部进行设置,并为这个图形属性选择一个有意义的值
    ggplot(data=mpg)+
    geom_point(mapping=aes(x=displ, y=hwy), color="blue")

    6
    此时颜色不会传达关于变量的信息,只是改变图的外观。
    颜色名称是一个字符串;点的大小毫米表示;点的形状是一个数值。

    举例说明:
    ggplot(data=mpg)+
    geom_point(mapping=aes(x=displ, y=hwy), shape=24, color="red",fill="white")

    7
    8

    1.4 常见问题

    • 检查是否输入正确的代码
    • “+” 必须放在一行代码的末尾,不是开头
    • 运行?函数名或者选定函数名称后按F1键,可以获得任何R函数的帮助信息
    • 阅读错误消息
    • 搜Google

    1.5 分面 (特别适合添加分类变量)

    1.5.1 函数facet_wrap()
    ggplot(data=mpg)+
    geom_point(mapping=aes(x=displ, y=hwy))+
    facet_wrap(~class, nrow=2)

    9

    1.5.2 函数facet_grid()
    ggplot(data=mpg)+
    geom_point(mapping=aes(x=displ, y=hwy))+
    facet_wrap(drv ~ cyl)

    10

    1.6 几何对象

    几何对象:图中用来表示数据的几何图形对象。
    条形图——条形几何对象
    折线图——直线几何对象
    箱线图——矩形和直线几何对象
    散点图——点几何对象——geom_point
    曲线图——平滑曲线几何对象——geom_smooth
    ggplot2提供了30多种几何对象,其扩展包甚至提供更多。

    举例说明
    (一)1条平滑曲线
    ggplot(data=mpg)+
    geom_smooth(mapping=aes(x=displ,y=hwy))

    11
    (二)不同线性不同曲线,每条曲线对应映射到线型的变量的一个唯一值
    ggplot(data=mpg)+
    geom_smooth(mapping=aes(x=displ,y=hwy,linetype=drv))
    12
    (三)同一张图多个几何对象,向ggplot2()函数添加多个几何对象函数:
    举例:
    同一张图绘制两种几何对象(点+曲线)

    ggplot(data=mpg)+
    geom_point(mapping=aes(x=displ, y=hwy))+
    geom_smooth(mapping=aes(x=displ,y=hwy))
    等于以下代码(上个代码有重复内容)
    将一组映射传递给ggplot()函数,ggplot会将这些映射作为全局映射应用到图中的每个几何对象中。
    ggplot(data=mpg, mapping = aes(x=displ, y=hwy))+
    geom_point()+
    geom_smooth()
    都是下图:
    13
    如果将映射放在几何对象函数中,ggplot2会将其看作这个图层的局部映射,仅对该图层有效。
    ggplot(data=mpg, mapping = aes(x=displ, y=hwy))+
    geom_point(mapping=aes(color=class))+
    geom_smooth()
    14
    为不同图层指定不同的数据
    ggplot(data=mpg, mapping = aes(x=displ, y=hwy))+
    geom_point(mapping=aes(color=class))+
    geom_smooth(data=filter(mpg, class == "subcompact"),se=FALSE)
    15
    se=standard error, 是否display confidence interval around smooth

    1.7 统计变换

    定义/概念
    统计变换 stat (statistical transformation):绘图时用来计算新数据的算法。
    每个几何对象函数都有一个默认统计变换,每个统计变换函数都有一个默认几何对象。

    举例详述:
    ggplot(data=diamonds)+
    geom_bar(mapping = aes(x=cut))

    16
    ?geom_bar显示出stat的默认值是count:这说明geom_bar()使用stat_count()函数可以进行统计变换 继续往下看,可以发现“computed variables”,它告诉我们stat_count()会计算出两个新变量:count(bin中的点数) 和prop(groupwise proportion 比例)

    想要显示使用某种统计变换的3个原因如下:
    (1) 想要覆盖默认的统计变换
    条形高度已经存在与数据,而不是像前一个图一样,条形高度由对行进行计数来生成:


    <- 赋值;tibble:简单数据框,用tidyverse中的tibble包实现。

    (2) 想要覆盖从统计变换生成的变量到图形属性的默认映射。
    举例: 你或许想要显示一张表示比例而不是计数的条形图
    ggplot(data=diamonds)+
    geom_bar(mapping = aes(x=cut, y=..prop.., group=1))

    17

    (3) 在代码中强调统计变换
    举例:使用stat_summary()函数将人们的注意力吸引到你计算出的那些摘要统计量上。
    ggplot(data=diamonds)+
    stat_summary(mapping=aes(x=cut,y=depth),fun.ymin=min,fun.ymax = max, fun.y = median)

    18
    ggplot2速查表已下载
    (https://rstudio.com/resources/cheatsheets/)
    示列

    1.8 位置调整

    (一)为条形图上色
    ggplot(data=diamonds)+
    geom_bar(mapping = aes(x=cut, color=cut))

    19

    ggplot(data=diamonds)+
    geom_bar(mapping = aes(x=cut, fill=cut))

    20

    如果将图形属性映射到另一个变量(如,clarity),那么条形会自动分块堆叠起来。
    每个彩色矩形表示cut和clarit的一种组合。
    ggplot(data=diamonds)+
    geom_bar(mapping = aes(x=cut, fill=clarity))

    21
    这种堆叠是由position参数设定的位置调整功能自动完成的。

    (二)如果不想生成堆叠式条形图,还可以使用以下3种选项之一:"identity", "fill", "dodge"。

    • position = "identity": 将每个对象直接显示在图中。(不太适合条形图,因为重叠)

    设置alpha参数为较小的书,可以使得条形略微透明
    ggplot(data=diamonds, mapping = aes(x=cut,fill=clarity))+
    geom_bar(alpha=1/5, position = "identity")

    22
    设置fill=NA, 让条形完全透明
    ggplot(data=diamonds, mapping = aes(x=cut,color=clarity))+
    geom_bar(fill=NA, position = "identity")
    23
    • position = "fill": 效果与堆叠相似(每组条形具有同样的高度)
      ggplot(data=diamonds)+
      geom_bar(mapping = aes(x=cut, fill=clarity),position = "fill")
      24

    -position = "dodge": 将每组中的条形依次并列放置
    ggplot(data=diamonds)+
    geom_bar(mapping = aes(x=cut, fill=clarity),position = "dodge")

    25

    (三)散点图的位置调整

    • position = "jitter": 将重叠的点分散开来 = geom_jitter()
      ggplot(data = mpg)+
      geom_point(mapping = aes(x=displ,y=hwy),position="jitter")
      26

    1.9 坐标系

    - coord_flip()函数:交换x轴和y轴
    ggplot(data=mpg, mapping = aes(x=class,y=hwy))+
    geom_boxplot()

    27
    ggplot(data=mpg, mapping = aes(x=class,y=hwy))+
    geom_boxplot()+
    coord_flip()
    28

    - coord_quickmap()函数:为地图设置合适的纵横比,适用于空间数据
    未安装Package : map所以不能用数据和示例

    书里的图
    - coord_polar()函数:极坐标系,揭示条形图和鸡冠花图之间的有趣联系
    bar <- ggplot(data=diamonds)+
    geom_bar(mapping = aes(x=cut,fill=cut),show.legend = FALSE, width = 1)+
    theme(aspect.ratio = 1)+
    labs(x=NULL, y=NULL)

    bar+coord_flip()

    29
    bar+coord_polar()
    30

    1.10 图形分层语法

    一个正式语法系统(7个参数一同组成了图形语法)

    ggplot(data=<DATA>)+
    <GEOM_FUNCTION>(mapping = aes (<MAPPINGS>),stat = <STAT>, position =<POSITION>+
    <COORDINATE_FUNCTION>+
    <FACET_FUNCTION>
    

    如何从头构建一个基本图形
    step1 首先要有一个数据集
    step2 通过统计变换将其转换为想要显示的信息
    step3 选择一个几何对象来表示转换后的数据中的每个观测值
    step4 选择几何对象的图形属性来表示数据中的变量
    step5 选择放置几何对象的坐标系
    step6 进一步调整几何对象在坐标系中的位置(位置调整),将图划分为多个子图(分面)...

    使用这种方法可以构建任何图形。

    相关文章

      网友评论

          本文标题:第一部分探索--第1章 使用ggplot2进行数据可视化

          本文链接:https://www.haomeiwen.com/subject/iddmgctx.html