R可视化-绘制柱形图2

首先,我们准备绘图数据,数据来源是2018年的一篇研究论文,In Vitro and In Vivo Gene Therapy Vector Evolution via Multispecies Interbreeding and Retargeting of Adeno-Associated Viruses,我们把数据输入到文件AAV infectivity.csv,并保存在工作目录下。

下面开始正式绘图:

1
2
3
library(ggplot2) # 加载ggplot2
data1=read.csv("AAV infectivity.csv", header=T) # 加载数据到变量data1
head(data1,3) # 查看data1前三行
1
2
3
4
Cell.line Tissue.or.cell.type AAV.1 AAV.2  AAV.3   AAV.4  AAV.5
1 Huh-7 hu liver 4000 500 20000 2000000 400000
2 293 hu kidney 2000 500 20000 700000 400000
3 HeLa hu cervix 70000 2000 100000 2000000 30000

以第一列为横坐标,第三列为纵坐标,绘制条形图:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
pbar=ggplot(data1,aes(x=data1[,1],y=data1[,3]))+ # 调用ggplot函数,以data1的第一列为横坐标,第三列为纵坐标,作为第一图层;
geom_bar(stat="identity",position = "dodge",width=0.8,fill="lightblue",color="black")+ # 第二图层:绘制条形图,位置为肩并肩,柱子的宽度为0.8,填充为浅蓝色,边框为黑色;
geom_text(aes(label=paste(as.character(data1[,3]),sep="")),vjust=-0.5,size=4)+ # 第三图层:将第三列数据绘制在柱子顶端,字号为4号;
ggtitle(label="In Vitro infectivities of AAV1",subtitle="Data midified from [Grimm, D. et al. (2008). J. Virol. 82: 5887-5911]")+ # 第四图层:设定标题与副标题;
xlab("Cells")+ # 第五图层:X轴标签
ylab("In Vitro Infectivities of AAV1")+ # 第六图层:Y轴标签;
theme(plot.title = element_text(size=20,face="bold",vjust=1,hjust=0.5), # 第七图层:设定标题,字号20号,粗体,以及对齐方式;
axis.title.x = element_text(size=15,face="bold",vjust=0.5,hjust=0.5), # 第七图层:X轴标签,字号15号,粗体,水平垂直居中;
axis.title.y = element_text(size=15,face="bold",vjust=1,hjust=0.5), # 第七图层:Y轴标签,字号15号,粗体,水平居中;
axis.text.x=element_text(size=12,face="bold",vjust=1,hjust=1,angle=45), # 第七图层:X轴文字,字号12号,粗体,45度倾斜;
axis.text.y=element_text(size=12,face="bold",vjust=0.5,hjust=0.5), # 第七图层:Y轴文字,字号12号,粗体,水平垂直居中;
panel.background = element_rect(fill="transparent",color="black"), # 第七图层:背景颜色透明,边框黑色;
panel.grid.minor = element_blank(), # 第七图层:次网格线隐藏;
panel.grid.major = element_blank()) # 第七图层:主网格线隐藏;
pbar # 绘制条形图

如果需要对数据进行排序并绘制条形图,可以首先对第三列从大到小排序,命令如下:

1
2
data1=data1[order(data1[,3],decreasing = T),] # 对第三列进行降序排列;
head(data1,3) # 查看前三行;

以第三列从大到小排序后的data1如下:

1
2
3
4
Cell.line Tissue.or.cell.type   AAV.1 AAV.2  AAV.3    AAV.4   AAV.5
4 HepG2 hu liver 2000000 50000 300000 20000000 3000000
10 NIH3T3 mu fibroblasts 200000 20000 700000 700000 7000000
3 HeLa hu cervix 70000 2000 100000 2000000 30000

然而,此时绘制条形图,图形却不会从大到小排列,需要对第一列进行排列,

1
data1[,1]=factor(data1[,1],levels=data1[,1],order=T) # 对第一列排序;

再次调用ggplot作图,就会得到降序排列的条形图。

最后,保存图片为PDF格式,命令如下:

1
ggsave(pbar,filename="in vitro AAV1-order.pdf",width=12,height=9)
  • 本文作者:括囊无誉
  • 本文链接: R/R可视化-绘制柱形图2/
  • 版权声明: 本博客所有文章均为原创作品,转载请注明出处!
------ 本文结束 ------
坚持原创文章分享,您的支持将鼓励我继续创作!