Loading...
墨滴

fafu生信小蘑菇

2021/05/26  阅读:24  主题:自定义主题1

使用ggplot2绘制-堆叠柱形图参数细讲

ggplot2绘制-堆叠柱形图参数细讲

昨天我们主要说了如何使用群落微生物的物种属水平丰度表来绘制堆叠柱形图。但是昨天没有对ggplot2来绘制堆叠柱形图的具体参数来说明,那么今天就ggplot2绘制-堆叠柱形图参数来细讲。

数据还是用到昨天的数据,如果需要获取数据可以到同名微信公众号回复“数据”获取gitee仓库的链接,我已经将数据以及源代码上传到仓库。

1. 导入数据及数据预处理

这些数据以及预处理的详情可以查看上一篇推文,这里就不作过多解释。

setwd("C:/Users/shanpengloveforever/Desktop/图/微信"
#导入修改好的数据
data <- read.table("genus1.txt",header=T,sep="\t",row.names=1)

#加载包
library(reshape2)
library(ggplot2)

#把data 数据整理成 ggplot2 作图格式
#将菌名添加到data里面,为了后面的数据转化
data$Taxonomy <- factor(rownames(data), levels = rev(rownames(data)))
#宽数据转化为长数据
data1 <- melt(data, id = 'Taxonomy')

#加载group分组信息表
group <- read.delim('group.txt', sep = '\t', stringsAsFactors = FALSE)

names(data1)[2] <- 'sample'  #修改列名
#两个数据集合并
data2 <- merge(data1, group, by = 'sample')
图1-1 data
图1-1 data

数据到这里就处理结束了,让我们开始今天的主题吧:使用ggplot2绘制-堆叠柱形图参数细讲

2. 使用 ggplot2 绘制-堆叠柱形图参数细讲

2.1 直接使用ggplot( )函数来绘制data2的堆叠柱形图

geom_col( )和geom_bar( )两个函数都可以绘制堆叠柱形图,但是两个又不完全一样,主要是geom_bar自带统计属性。具体的差距可以在Rstudio 中输入' help("geom_col")'来查看帮助文档

geom_bar( )函数绘图需要加stat = "identity"命令,不然会报错。

​ 因为默认的统计变化将自动对“值"进行计数,而统计变换identity将保持数据不变。

ggplot(data2, aes( x = sample,y=100 * value,fill = Taxonomy))+
  #geom_col和geom_bar这两条命令都可以绘制堆叠柱形图
  geom_col(position = 'stack', width = 0.6)+
  #geom_bar(position = "stack", stat = "identity", width = 0.6) 
图2.1-1
图2.1-1

2.2 修改绘图参数,美化图片

2.2.1 固定主题的设置

theme_bw( ) 设置固定主题为传统的白色背景和深灰色的网格线

​ 另外一种固定主题是theme_gray( ) 淡灰色背景和白色网格线,这个是默认的

ggplot(data2, aes( x = sample,y=100 * value,fill = Taxonomy))+
  #geom_col和geom_bar这两条命令都可以绘制堆叠柱形图
  geom_col(position = 'stack', width = 0.6)
  #geom_bar(position = "stack", stat = "identity", width = 0.6) 
  theme_bw()   #设置固定主题为传统的白色背景和深灰色的网格线
图2.2-1
图2.2-1

2.2.2 修改填充颜色

scale_fill_manual(values=colors) #自定义的修改填充颜色,依据color中的颜色

#设置堆叠柱形图的颜色
colors<-rev(c('#FF0000''#FF88C2''#FF00FF''#9999FF'
          '#33FFFF','#33FF33''#D1BBFF''#770077',
          '#EE7700''#CCEEFF''#0000AA'))
ggplot(data2, aes( x = sample,y=100 * value,fill = Taxonomy))+
  #geom_col和geom_bar这两条命令都可以绘制堆叠柱形图
  geom_col(position = 'stack', width = 0.6)+
  theme_gray()
  #geom_bar(position = "stack", stat = "identity", width = 0.6) 
  theme_bw()   #设置固定主题为传统的白色背景和深灰色的网格线
  scale_fill_manual(values=colors)  #自定义的修改填充颜色
图2.2-2
图2.2-2

2.2.3 调整Y轴属性

scale_y_continuous(expand = c(0,0)) # 调整y轴属性,使柱子与X轴坐标接触

ggplot(data2, aes( x = sample,y=100 * value,fill = Taxonomy))+
  #geom_col和geom_bar这两条命令都可以绘制堆叠柱形图
  geom_col(position = 'stack', width = 0.6)+
  #geom_bar(position = "stack", stat = "identity", width = 0.6) 
  theme_bw()+   #设置固定主题为传统的白色背景和深灰色的网格线
  scale_fill_manual(values=colors)  #自定义的修改填充颜色
  scale_y_continuous(expand = c(0,0)) # 调整y轴属性,使柱子与X轴坐标接触
图2.2-3
图2.2-3

2.2.4 设置X轴和Y轴的名称以及添加标题

设置X轴和Y轴的名称以及添加标题

​ 在设定图标题时,使用\n可以使得长标题进行换行

ggplot(data2, aes( x = sample,y=100 * value,fill = Taxonomy))+
  #geom_col和geom_bar这两条命令都可以绘制堆叠柱形图
  geom_col(position = 'stack', width = 0.6)+
  #geom_bar(position = "stack", stat = "identity", width = 0.6) 
  theme_bw()+   #设置固定主题为传统的白色背景和深灰色的网格线
  scale_fill_manual(values=colors)+  #自定义的修改填充颜色
  scale_y_continuous(expand = c(0,0))+# 调整y轴属性,使柱子与X轴坐标接触
  #设置X轴和Y轴的名称以及添加标题
  #在设定图标题时,使用\n可以使得长标题进行换行
  labs(x="Samples",y="相对丰度\n Relative Abundance",
       fill="Phylum",title="属水平的相对丰度堆叠柱形图")
图2.2-4
图2.2-4

2.2.5 X轴、Y轴、标题及图例的文字的修改

X轴、Y轴、标题及图例的文字:在theme ( )函数中进行修改

​ angle:调整横轴标签倾斜角度,这个经常有被用到

ggplot(data2, aes( x = sample,y=100 * value,fill = Taxonomy))+
  #geom_col和geom_bar这两条命令都可以绘制堆叠柱形图
  geom_col(position = 'stack', width = 0.6)+
  #geom_bar(position = "stack", stat = "identity", width = 0.6) 
  theme_bw()+   #设置固定主题为传统的白色背景和深灰色的网格线
  scale_fill_manual(values=colors)+  #自定义的修改填充颜色
  scale_y_continuous(expand = c(0,0))+# 调整y轴属性,使柱子与X轴坐标接触
  #设置X轴和Y轴的名称以及添加标题
  #在设定图标题时,使用\n可以使得长标题进行换行
  labs(x="Samples",y="相对丰度\n Relative Abundance",
       fill="Phylum",title="属水平的相对丰度堆叠柱形图")+
  theme(
    #标题字体设置
    text=element_text(size=12),
    #设置标题居中hjust = 0.5
    plot.title = element_text(hjust = 0.5,vjust = 0.5), 
    #Y轴字体设置
    axis.text.y=element_text(size=12,color = "black"),
    #X轴字体设置
    #angle:调整横轴标签倾斜角度
    #hjust:上下移动横轴标签
    axis.text.x=element_text(size=12,  color = "black",angle = 45, hjust = 0.5,
                                       vjust = 0.5),
    #图例的标题字体设置,可以修改colour、size
    legend.title=element_text(size=12), 
    #图例字体设置
    legend.text=element_text(size=12)
    #legend.position = ' none' #删除图例
    #legend.position="bottom" #图例位置放中间,可选参数为“left”,“top”, “right”, “bottom”.
    #legend.background = element_rect(fill="lightblue",size=0.5, linetype="solid", colour ="darkblue")
  )
图2.2-5
图2.2-5

2.2.6 修改图例位置、背景及删除图例

修改图例的位置:legend.position="bottom" 图例位置放中间,可选参数为*“left”,“top”, “right”, “bottom”*

设置图例的背景,边框 legend.background = element_rect( )

删除图例:legend.position = ' none' 删除图例

图2.2-6 展示两种情况:

图2.2-6
图2.2-6

2.2.7 其他背景参数的修改

其他背景参数的修改

ggplot(data2, aes( x = sample,y=100 * value,fill = Taxonomy))+
  #geom_col和geom_bar这两条命令都可以绘制堆叠柱形图
  geom_col(position = 'stack', width = 0.6)+
  #geom_bar(position = "stack", stat = "identity", width = 0.6) 
  theme_bw()+   #设置固定主题为传统的白色背景和深灰色的网格线
  scale_fill_manual(values=colors)+  #自定义的修改填充颜色
  scale_y_continuous(expand = c(0,0))+# 调整y轴属性,使柱子与X轴坐标接触
  #设置X轴和Y轴的名称以及添加标题
  #在设定图标题时,使用\n可以使得长标题进行换行
  labs(x="Samples",y="相对丰度\n Relative Abundance",
       fill="Phylum",title="属水平的相对丰度堆叠柱形图")+
  theme(
    #标题字体设置
    text=element_text(size=12),
    #设置标题居中hjust = 0.5
    plot.title = element_text(hjust = 0.5,vjust = 0.5), 
    #Y轴字体设置
    axis.text.y=element_text(size=12,color = "black"),
    #X轴字体设置
    #angle:调整横轴标签倾斜角度
    #hjust:上下移动横轴标签
    axis.text.x=element_text(size=12,  color = "black",angle = 45, hjust = 0.5,
                                       vjust = 0.5),
    #图例的标题字体设置,可以修改colour、size
    legend.title=element_text(size=12), 
    #图例字体设置
    legend.text=element_text(size=12)
    #legend.position = ' none' #删除图例
    #legend.position="bottom" ,#图例位置放中间,可选参数为“left”,“top”, “right”, “bottom”.
    #legend.background = element_rect(fill="lightblue",size=0.5, linetype="solid", colour ="darkblue")
  )
  theme(panel.grid = element_blank(), #从图中删除非数据元素
        #修改面板背景
        panel.background = element_rect(color = 'black', fill = 'transparent'),
        )+ 
  guides(fill=guide_legend(keywidth = 1, keyheight = 1)) #修改图例的框大小
图2.2-7
图2.2-7

3. 图片保存为PDF或PNG格式

#记得先把图片保存到p
p
#保存图片为pdf格式
ggsave(filename = "genus1.pdf",
       p,
       width=10,
       heigh=8)
#保存图片为png格式
ggsave('genus1.png', p, width = 10, height = 8)
图3-1
图3-1

使用ggplot2 绘制堆叠柱形图的内容及图片美化的内容主要就是这些,不能说很全,但是应该够用,其实使用ggplot2绘制其他类型的图片,也主要是修改这些内容,所以要学会举一反三。加油!

谢谢你的阅读,请期待下一期

如有不足或错误之处,请批评指正。 有什么不明白的也欢迎留言讨论。

欢迎关注同名wxgzh

往期内容:

《数量生态学:R语言的应用》第三章-R模式

《数量生态学:R语言的应用》第二版第三章-关联测度与矩阵------Q模式

《数量生态学:R语言的应用》第二版笔记2

《数量生态学——R语言的应用》第二版阅读笔记--绪论和第二章(一部分)

R语言 pheatmap 包绘制热图(基础部分)

R语言pheatmap包绘制热图进阶教程

使用PicGo和gitee搭建图床

组间分析—T检验、R语言绘图

Rmarkdown的xaringan包来制作PPT

htlm文件部署到个人网站

感谢你的阅读!!!你的点赞关注转发是对我最大的鼓励。

fafu生信小蘑菇

2021/05/26  阅读:24  主题:自定义主题1

作者介绍

fafu生信小蘑菇