本系列课程要求大家有一定的R语言基础,对于完全零基础的同学,建议去听一下师兄的《生信必备技巧之——R语言基础教程》。本课程将从最基本的绘图开始讲解,深入浅出的带大家理解和运用强大而灵活的ggplot2包。内容包括如何利用ggplot2绘制散点图、线图、柱状图、添加注解、修改坐标轴和图例等。
本次课程所用的配套书籍是:《R Graphic Cookbooks》
除了以上的基本图形外,师兄还会给大家讲解箱线图、提琴图、热图、火山图、气泡图、桑基图、PCA图等各种常用的生信图形的绘制,还不赶紧加入收藏夹,跟着师兄慢慢学起来吧!
R语言绘图练习02 -- 克利夫兰点图:
###########
# 柱状图拓展:克里夫兰点图绘制:
library(gcookbook)
tophit <- tophitters2001[1:25, ] # 取前25行;
# 从最基本的散点图出发
ggplot(tophit, aes(x=avg, y=name))+
geom_point()
# reorder排序一定要熟练:前面柱状图排序讲过:
ggplot(tophit, aes(x=avg, y=reorder(name, avg))) +
geom_point(size=3) + # 修改点的大小
theme_bw() + # 修改背景
theme(panel.grid.major.x=element_blank(), # 设置纵向网格线为空;
panel.grid.minor.x =element_blank(),
# 设置横向网格线为虚线(dashed);
panel.grid.major.y =element_line(colour="grey60", linetype="dashed"))
# 颠倒图形的x轴和y轴;
ggplot(tophit, aes(x=reorder(name,avg), y=avg)) +
geom_point(size=3) +
theme_bw() +
theme(axis.text.x= element_text(angle=60, hjust=1),
panel.grid.major.y=element_blank(),
panel.grid.minor.y =element_blank(),
panel.grid.major.x =element_line(colour="grey60", linetype="dashed"))
# 按照lg和avg对name进行排序,先按lg排,再按avg排;
nameorder <- tophit$name[order(tophit$lg, tophit$avg)]
# 将name变量转换为因子,因子水平设定为nameorder;
tophit$name <- factor(tophit$name, levels=nameorder)
## 绘制彩色克利夫兰点图:
ggplot(tophit, aes(x=avg, y=name))+
geom_segment(aes(yend=name), xend=0, colour="grey50")+
geom_point(size=3, aes(colour=lg))+ # 设置分组变量;
# limits限定颜色先后顺序;
scale_colour_brewer(palette="Set1", limits=c("NL", "AL"))+
theme_bw() +
theme(panel.grid.major.y =element_blank(), # 去除横向网格线
legend.position=c(1, 0.55), # 设置图例的位置:这里的1指的是与x轴的比例;
# legend.justification=c(1, 0.5)表示图例右边缘中点;
# (1,0)表示右下角,(0,1)表示左上角,以此类推;
legend.justification=c(1, 0.5))
# 分面绘制:facet_grid()函数:
ggplot(tophit, aes(x=avg, y=name))+
geom_segment(aes(yend=name), xend=0, colour="grey50")+
geom_point(size=3, aes(colour=lg))+
# guides去除图例;
scale_colour_brewer(palette="Set1", limits=c("NL", "AL"),guide = F)+
theme_bw() +
theme(panel.grid.major.y = element_blank()) +
# 一列多行:lg~.;行数等于lg的种类数目;
# scales设置每个分块的单位宽度;space设置每个分块的宽度;
facet_grid(lg~., scales="free_y", space="free_y")
往期文章
- R语言绘图(ggplot2、ggpubr)从入门到精通01--课程介绍
- R语言绘图(ggplot2、ggpubr)从入门到精通02--柱状图和直方图
- R语言绘图(ggplot2、ggpubr)从入门到精通03--箱式图和函数图像
- R语言绘图(ggplot2、ggpubr)从入门到精通04--柱状图美化之调色
- R语言绘图(ggplot2、ggpubr)从入门到精通05--柱状图美化之分组修改
- R语言绘图(ggplot2、ggpubr)从入门到精通06--柱状图美化之宽度调节
- R语言绘图(ggplot2、ggpubr)从入门到精通07--柱状图美化之如何加标签
- R语言绘图练习01 -- 各种类型的饼图