ggplot2 图层元素
1. 数据(data):将要可视化的数据
2. 映射(aes):数据中的变量值 一般是X\Y
3. 几何对象(geom):如 bar 条形图,point 散点图
4. 统计变换(stats):对数据进行计算
5. 标度(scale):变量以什么形状、颜色映射到图形上
6. 分面(facet):将数据拆开,进行分层画图
7. 图层(Layer):数据、映射、几何对象、统计变换等构成一个图层。图层可以允许用户一步步的构建图形,方便单独对图层进行修改。
8.主题(theme):主题设定,与数据无关的图层可以通过这个函数实现。
9. 注释(annotate): 对图形增加文字类的注释
ggplot ()图层
ggplot ()图层包括数据和映射。ggplot 函数相当于一幅基本的画布,画
者在上面绘制好坐标轴,设置好基本的格局和色彩、线条。
geom_XXX () 图层
geom_XXX() 指的是我们要绘制的图形类型,常见包括以下:
geom_point()绘制散点图
geom_bar()绘制条形图
geom_line()绘制线图
geom_histogram()绘制直方图
geom_boxplot()绘制箱式图
geom_density()绘制概率密度函数
scale_ XXX 图层
scale_ XXX 标度是一种函数,size 对大小进行调整, shape 对形状进行调整,
fill、col对颜色进行调整,可根据自己喜好调整
ggplot(data =数据, aes(x =变量1 , y = 变量 2,col=变量3)) +
geom_point(stat ='count',position=”dodge”)+ #计数、并排
scale_fill_manual(values = c("颜色1","颜色2"))
facet_grid() 图层
facet_grid(...) 对图层进行分面,数据分成多个子集进行绘图
ggplot(data =数据, aes(x =变量 1 , y = 变量2,col=变量3)) +
geom_point(stat = 'count',position=”dodge”)+
scale_colour_manual(values = c("颜色1","颜色2"))+
facet_grid(变量 4~变量5) #要求变量属于分类变量,分成多行多列的图
theme() 图层
theme() 是主题修改,是一个对绘图精雕细琢的过程, 主要对标题、坐标轴
标签、图例标签等文字调整, 以及网格线、背景、轴的颜色搭配。
theme(plot.title = element_text(size = , color =, hjust =, face = ))
ggplot2 的作图一般步骤为:
1、 准备数据,一般为数据框,且一般为长表,即每个观测时间占一行,每个观
测变量占一列。
2、载入 R 包,R 包括可以通过 tidyverse包整体载入。
3、 将数据输入到ggplot()函数中,并指定参与作图的每个变量分别 映射到哪些
图形特性, 比如映射为 x 坐标、y 坐标、 颜色、 形状等。 这些映射称为aesthetic
mappings 或 aesthetics。
很多人不明白所谓的 映射。其实映射,通俗来讲,就是告诉软件,这幅图所
涉及到的变量, 并且指出每个变量的用途。 比如, x=gender, 指的是x 轴是性别;
y=age,指的是 y 轴表示年龄大小,shape=location,指的是不同地区图标的形状
不一样(比如城市用星号,农村用三角)
4、选择一个合适的图形类型,函数名以 geom_开头,如 geom_point()表示散点
图。图形类型简称为 geom。将ggplot()部分与 geom_xxx()部分用加号连接。
到此已经可以作图,下面的步骤是进一步的细化设定。
5、设定适当的坐标系统, 如coord_cartesian(), scale_x_log10()等。 仍用加号连接。
6、设定标题和图例位置等,如 labs()。仍用加号连接。
这个流程的一个大致的模板为:
p <-ggplot(data=<输入数据框>,
mapping=aes(<维度>=<变量名>,
<维度>=<变量名>, <...>))
p +geom_<图形类型>(<...>)+
scale_<映射>_<类型>(<...>) +
coord_<类型>(<...>)+
labs(<...>)
其中<...>表示额外的选项。变量 p 包含做出的图形的所有数据与设定,变量
名可以任意取。
网上找了网友分享的学习笔记,我照着他的代码跑了一遍:https://blog.csdn.net/wzgl__wh/article/details/51901093
其中data=mpg,mapping = aes(x=cty,y=hwy)表示数据层,geom_point()表示几何图形层,aes(colour=factor(mpg$year))表示美学图层。我将year映射为映射到颜色属性。 我们也可以绘制出它的拟合曲线以及置信区间,它根据年份绘出了两条拟合曲线以及置信区间。 > ggplot(data=mpg,mapping = aes(x=cty,y=hwy))+geom_point()+aes(colour=factor(mpg$year))+stat_smooth() 只想绘制一条拟合曲线和一个置信区间,我们只需要将代码稍微改变一下就可以搞定。 > ggplot(data=mpg,mapping = aes(x=cty,y=hwy))+geom_point(aes(colour=factor(mpg$year)))+stat_smooth() 现在将displ变量映射到散点大小,绘制出来的大小不同的散点。 > ggplot(data=mpg,mapping =aes(x=cty,y=hwy))+ + geom_point(aes(colour=factor(year),size=displ))+ + stat_smooth() 使用过Photoshop的人一定知道透明度,即alpha。当然我们的ggplot2包也可以改变alpha值得大小来改变散点的透明度。alpha的值在0—1之间,不在这个范围的话则会报错。为了与前面的图片有明显的区别,我们再这里的alpha值调的比较小。一般默认alpha值得大小为1。 > ggplot(data=mpg,mapping = aes(x=cty,y=hwy))+ + geom_point(aes(colour=factor(mpg$year),size=displ),alpha=0.25)+ + stat_smooth() 也可以给图片增加标题,并精细修改图片,给图片增加x,y轴说明,以及其他说明。 ggplot(mpg, aes(x=cty, y=hwy))+ geom_point(aes(colour=class,size=displ),alpha=0.6,position = "jitter")+ stat_smooth()+ scale_size_continuous(range = c(4, 10))+ facet_wrap(~ year,ncol=1)+ ggtitle("汽车油耗与型号")+ labs(y='每加仑高速公路行驶距离', x='每加仑城市公路行驶距离')+ guides(size=guide_legend(title='排量'), colour = guide_legend(title='车型', override.aes=list(size=5))) 我们可以把不同的图层叠加在一起,这样就画在了同一张图上面。比如说我们要研究mpg数据中cty和hwy,以及displ之间的关系,我们就可以通过如下代码,将他们之间的散点图画在一起。 ggplot()+ geom_point(aes(x=mpg$cty,y=mpg$hwy),color="red")+ geom_point(aes(x=mpg$cty,y=mpg$displ),color="green") 接下来,我们来绘制一个扇形图,我们来统计一下class中各个品牌所占比例,代码和图片如下: ggplot(mpg)+geom_bar(width=1, aes(x=factor(1),fill=mpg$class))+ coord_polar(theta="y") 也可以通过使用ggplot2包来绘制 Coxcomb Plots (鸡冠花图,又名玫瑰图),这个也非常简单。width的值可以调整各个扇形区域之间的距离。 ggplot(mpg, aes(x= factor(mpg$class))) + geom_bar(width=0.7,aes(color=factor(mpg$class))) + coord_polar() 也可以给他增添颜色,代码只要稍微改一下: ggplot(mpg, aes(x= factor(mpg$class),fill=mpg$class)) + geom_bar(width=0.7) + coord_polar() 这样跑下来加深了对于开始说的ggplot2 的作图步骤的理解。