ggplot2大概分为三个部分:
(1)数据层 (2)几何图形层 (3)美学层
函数 | |
---|---|
数据层 | ggplot(data,mapping = aes(x,y)) |
几何图形层 | geom_bar()/geom_plot()/… |
美学层 | aes(color = factor()) |
有了基本框架后,代码写起来就不会太乱。
1、数据层——ggplot()
ggplot(data,mapping=aes(x,y))
本人建议数据层只用两个参数即可:数据和映射。因为用何种画图方法、统计方法、美化方式,都可以在接下来两层更改。此做法可以使代码干净易读。
2、几何图形层——geom_x() or stat_x()
初学者比较建议第一种,因为后者我没去了解太多。。
本章学习的是geom_bar,先了解其内置参数。
Usage
两种形式
geom_bar(
mapping = NULL,
data = NULL,
stat = "count",
position = "stack",
...,
width = NULL,
na.rm = FALSE,
orientation = NA,
show.legend = NA,
inherit.aes = TRUE
)
stat_count(
mapping = NULL,
data = NULL,
geom = "bar",
position = "stack",
...,
width = NULL,
na.rm = FALSE,
orientation = NA,
show.legend = NA,
inherit.aes = TRUE
)
Arguments
函数 | 描述 |
---|---|
stat | identity提取横坐标x对应的y值 ;bin提取横坐标x的频数;(还有很多,自己搜索) |
position | fill:百分比化后重叠 ;dodge:并列数据,比如说如柱形图的并排方式;identity:不调整位置,默认。jitter:如果严重的重叠,随机抖一抖,让本来重叠的露出点头来。stack:在竖直方向叠罗汉,绘制出来类似条形图 |
… | used to set an aesthetic to a fixed value, like colour = “red” or size = 3. |
width | Bar width |
na.rm | 默认值为FALSE,缺失值移除时会有提示;如果设置为TRUE,则silently removed |
orientation | 层的方向,默认值为美学映射方向即(mapping),如果设置“x”或“y”则可改变。如垂直条形图和水平条形图。 |
show.legend | 是否在图层中显示图例,默认T |
inherit.aes | 如果为FALSE,则重写默认的美学,而不是与它们结合。这对于定义数据和美学的辅助函数非常有用,并且不应该从默认的绘图规范中继承行为,例如borders()。 |
以上即为geom_bar的基本参数,根据需要进行美学修饰即可。
注意 | 柱状图应用于离散变量的频数统计,直方图应用于连续变量的频数统计。 前者函数为geom_bar(),后者为geo_histogram().即,前者需要x,y向量;而后者只需一个向量以计算频数,类似table() |
---|---|
这里其实更好的说明了geom_bar中stat的含义。前者的stat = count,后者stat = bin | |
更多的stat | 例如stat = "density"是对频率的计算。geom_bar(…,stat = “density”,…) = geom_density(…);以此类推 |
stat_x()和geom_x()是非常多变的,需要各取所需的使用。
3、美学(aesthetic)修饰——aes()
1、fill和color都为上色函数,前者是全涂,后者为点涂。同时,图例会以此为标题,要修改则lab(fill/color = name)
操作 | 函数 | 举例 |
---|---|---|
修改名称 | 无论是修改图例名,或坐标轴。都可用labs() | ggplot() + labs(fill = “year”,x = “制造商”) |
修改颜色 | scale_color_manual(“图例名称”, values =c(“名称” = “颜色”,…) | 离散型 |
scale_fill_manual(“图例名称”, values =c(“名称” = “颜色”,…) | 离散型 | |
scale_color_brewer(name="…", palette ="…") | 离散型 | |
scale_fill_brewer(name="…", palette ="…") | 离散型 | |
修改颜色 | scale_color_gradient(low="…", high ="…") | 连续型(渐变色) |
scale_fill_gradient(limits =c(…), low ="…", high ="…") | 连续型 | |
scale_fill_gradient2(low ="…", high ="…", mid ="…", midpoint =…) | 连续型 |
platte样式:
4、主题——theme()
1、对字体、位置、排版等修改
函数 | 说明 |
---|---|
element_blank | 就空白的意思,例如可以去除图例名称等 |
element_rect | 可以为各种加边框,内置参数自查说明书 |
element_text | 改字体 |
element_line | 对line进行处理 |
举例公式:theme(element_rect(size =…, color =…, linetype= …, fill =…))
举例图片:
2、主题
3、分面
4、其他
坐标轴互换:很有用处
coord_flip()
图例位置:
theme(legend.position =“top”,“bottom”,“left”,“right”)
5、画组合图
怎么在一张画布内塞下多个图呢?
利用ggpurb::arrange()
ggpubr::ggarrange(a,b,nrow = 2,ncol = 1,labels = LETTERS[1:2],font.label = list(color = "red"))
6、更其他可供参考
1.修改图例名称
labs(fill=“name”)
2.隐藏图例标题
theme(legend.title=element_blank()
3.修改图例顺序
scale_color_discrete(limits=c(“a”,“d”,“c”))
4.不加legend
+theme(legend.position = “none”)
5.删除legend.title
theme(legend.title = element_blank())
6.修改legend的位置
theme(legend.position = “left”)#(right,top,bottom)
7.修改尺寸大小
theme(legend.text = element_text(colour = “red”,angle=45,size=10,hjust=3,vjust=3,face=“bold”))
8.颜色的修改及一致性
geom_bar(position = “stack”,aes(order=desc(name)))