ggplot2知识点图表





  • 网上书籍推荐

    Data Visualization

    A practical introduction
    Kieran Healy
    网址:
    https://socviz.co/





  • ggplot2是基于R语言下图形语法的一个绘图包,也是目前R语言中最流行最常用的绘图包,真的十分好用👍
    我在这里就抛砖引玉,希望能帮助大家快速了解一下这个包。

    1.ggplot基础

    在介绍ggplot基础之前,我们需要先安装一下这个包。

    install.packages("ggplot2") 
    library(ggplot2)
    

    1.1 ggplot函数

    接下来关于ggplot绘图的主要框架长这样(注意是ggplot函数不是ggplot2函数,一定要区分包和函数的名称):

    ggplot(data = <DATA>,  mapping = aes(<aesthetic_1> = <variable_1>,
                                         <aesthetic_2> = <variable_2>,...)) +
          geom_<TYPE>() +
          geom_<TYPE>() +
          <Other functions> +
          ...
    

    可以看到框架里面第一部分就是核心的ggplot函数,其中:
    data = <DATA>: 我们所用于绘图的数据
    mapping = aes(): aes就是aesthetic的缩写,有审美的意思,也就是说我们在指定了数据之后,想要让数据中的变量如何展现在图中,比如x轴、y轴分别是什么,指定颜色等等。

    1.2 geom函数

    geom函数是ggplot函数的好兄弟,通过geom函数就可以绘制我们所熟悉的散点图、柱状图、直方图、箱线图等等。主要的geom函数有以下几种:
    geom_point(): 散点图
    geom_bar(): 柱状图
    geom_boxplot(): 箱线图
    geom_histogram(): 直方图
    geom_smooth(): 平滑线
    geom_violin(): 小提琴图等等

    1.3 示例

    那么可以举一个非常简单的小栗子😁

    library(ggplot2)
    ggplot(data = mtcars, mapping = aes(x = wt, y = mpg)) 
    + geom_point()
    

    画出来的图长这样:
    000005.png
    mtcars是R里面自带的一个数据集,其中wt表示weight,y表示miles per gallon; geom_point()表示绘制的是散点图,这样这个图表就可以直观的反映在mtcars数据集中,重量和每加仑汽油能行驶的英里数之间的关系。
    接下来我们觉得这个黑色的点有点丑,能不能换个颜色呢,重新调整了一下代码:

    ggplot(data = mtcars, mapping = aes(x = wt, y = mpg, color = "blue")) 
    + geom_point()
    

    画出来的图长这样:
    000003.png
    咦,我刚刚明明想把点换成蓝色,为什么变成红色了!我的代码是哪里写的不对呢?
    这里需要注意的是,在ggplot函数中mapping = aes()是指定的一个mapping关系,也就是color这个参数对应了一个叫做"blue"的变量,可以看到图片的右边有一个"blue"的图例,然而实际上并没有这样一个变量,因此R语言中就使得所有点的颜色都是自己的默认颜色(红色)。
    那么如果我们想要把所有的点都变成蓝色应该怎么办呢?稍微修改一下上面的代码:

    ggplot(data = mtcars, mapping = aes(x = wt, y = mpg)) 
    + geom_point(color = "blue")
    

    000005.png
    我们其实只是将指定颜色的代码放进了geom()函数当中,其实也是make sense的,因为我们想要让散点图的点变成蓝色,所以应该写在geom()函数中嘛😬
    这样图片上面的点都变成蓝色了,右边的图例也消失了。看起来顺眼了许多。
    今天先写到这里,希望能够对大家理解ggplot2包有帮助,之后有时间会再写一些高级的功能😎


登录后回复