烟草味道|R可视化:ggplot2初探,手把手教你绘图

其实最基本的Rbase的画图能力已经非常不错了 , R中也还有很多画图的包 , 像grid和lattice , 本篇文章首先给大家写ggplot2就是因为它的语法非常的容易记 , 非常的直观 , 而且画图理念非常适合新手 。
什么叫gg呢?就是grammar of graphics , 什么意思?就是作图的语法 , 相当于我们掌握了ggplot就掌握了作图的语法 , 就好比我们只要掌握了英语语法 , 只需要几个单词就能写出成千上万的句子 , 掌握了ggplot2我们也可以很容易的完成成千上万的图!今天就手把手教大家画一个 。
ggplot2图像的构成学习ggplot2的第一步就是了解图像的构成 , 看下面这个由ggplot2画的图:
烟草味道|R可视化:ggplot2初探,手把手教你绘图这个图由3部分构成:

  • Data: 画图用的数据 , 这个图其实是美国谋杀数据的一个总结 , 我们将其称作图的数据部分 。
  • Geometry: 可以看出来 , 这个图是一个散点图 , 这个就叫做图的Geometry , 其他的Geometry还有barplot, histogram, smooth densities, qqplot, and boxplot等等 。
  • Aesthetic mapping:这个图其实用了很多的信号来表达数据 , 最明显的就是x-axis and y-axis , 还有不同的颜色来表示不同的区域等等 , 这些都称为Aesthetic mapping 。
了解了上面的基础知识我们现在就通过代码将上图画出来!!一步一步来 , 你一定可以的!
画图实操
  • 第一步: 生成一个ggplot2对象
library(dslabs)data(murders)p<-ggplot(data = http://kandian.youth.cn/index/murders)p
烟草味道|R可视化:ggplot2初探,手把手教你绘图
  • 第二步:给图形增加layer
通常来说我们会在第一个图层定义geometry , 因为我们要画散点图 , 所以我们用geom_point.
光定义了geometry不行呀 , 我们得指定数据呀 , 所以我们需要在geometry中指定用哪些数据画这个散点图:
murders %>% ggplot() +geom_point(aes(x = population/10^6, y = total))
  • 第三步:设置Aesthetic mappings
Aesthetic mappings就是告诉ggplot2我们的数据怎么样和图的特征连起来 , 比如轴、颜色等等都是Aesthetic mappings 。 我们是用aes来定义Aesthetic mappings , 而这个aes通常又会作为geometry的参数 。 比如下面的代码:
murders %>% ggplot() +geom_point(aes(x = population/10^6, y = total))
烟草味道|R可视化:ggplot2初探,手把手教你绘图
  • 第四步:给图添加标签和文字
图中的每一个点都代表一个州 , 它其实是有标签的 , 所以我们只需要在Aesthetic mappings中增加一个参数label.
p + geom_point(aes(population/10^6, total)) +geom_text(aes(population/10^6, total, label = abb))#加标签
烟草味道|R可视化:ggplot2初探,手把手教你绘图
  • 第五步:图像微调和放缩
上面的图有2个问题:首先是默认的点有点小 , 第二个就是标签和点重合导致不清晰 , 此时我们可以用size和nudge_x进行微调:
p + geom_point(aes(population/10^6, total), size = 3) +geom_text(aes(population/10^6, total, label = abb), nudge_x = 1.5)


推荐阅读