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

数据到这里就处理结束了,让我们开始今天的主题吧:使用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.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.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.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.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.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.6 修改图例位置、背景及删除图例

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

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

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

图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

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

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

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

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

欢迎关注同名wxgzh

往期内容:

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

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

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

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

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

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

使用PicGo和gitee搭建图床

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

Rmarkdown的xaringan包来制作PPT

htlm文件部署到个人网站

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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容