“棒棒糖”我们大家都吃过,就是一个大大的原点和一根小棍组成。那在论文中,我们也常常拿这种简单好看的图形来表示一些生物学的意义。
从生信角度上来看,棒棒糖图在ggplot中可以通过使用geom_point()函数绘制糖的部分,以及使用geom_segment()函数绘制棒棒的部分,来实现柱状图和散点图的效果组合而成的图形。
小果看到文章中好看的气泡图,忍不住想复刻出来,下面跟随小果的思路来绘制出你喜欢的气泡图叭~
基础棒棒糖
# 安装并加载包
install.packages(“ggplot2”)
library(ggplot2)
# 创造数值变量数据
data1 <- data.frame(x=seq(1,25), y=abs(rnorm(25)))
# 作图
p1 <- ggplot(data1, aes(x=x, y=y)) +
geom_point() +
geom_segment( aes(x=x, xend=x, y=0, yend=y))
按照小果前文的思路就是geom_point() + geom_segment()函数可以实现棒棒糖的绘制,但是目前看还是不太美观。我们需要进一步学习,来把图做的美观。
自定义点和线
data1 <- data.frame(x=c(paste(“pathway”,1:9)), y=abs(rnorm(9)))
ggplot(data1, aes(x=x, y=y)) +
geom_segment( aes(x=x, xend=x, y=0, yend=y),size=1, color=”grey”, linetype=”longdash” )+
geom_point( size=3, color=”black”, fill=alpha(“red”, 0.3), alpha=0.7, shape=21, stroke=2)#调节一些点的性质的参数+
theme_light() +
#coord_flip() + #控制图形是否水平放置,这里小果提示,可以尝试得到更好的效果哦~
theme(
panel.grid.major.x = element_blank(),
panel.border = element_blank(),
axis.ticks.x = element_blank()
) +
xlab(“Pathways”) +
ylab(“Counts”)
顺序调整
linstall.packages(“dply”)
install.packages(“forcats”)
library(ggplot2)
library(forcats)
library(dplyr)
data1%>%
mutate(x = fct_reorder(x,y))%>% #降序的话改为desc(y)
ggplot(aes(x= x, y=y,color = x)) #这里映射了相应的颜色+
geom_segment( aes(x=x, xend=x, y=0, yend=y),size=1,linetype=”dotdash” )+
geom_point( size=5, color= “black”, fill=alpha(“red”, 0.3), alpha=0.7, shape=21, stroke=2)+
theme_light() +
#coord_flip() + 控制图形是否水平放置
theme(
panel.grid.major.x = element_blank(),
panel.border = element_blank(),
axis.ticks.x = element_blank()
) +
xlab(“Pathways”) +
ylab(“Counts”)
这样是不是更加的清晰好看了呢~
更改图表的基线
data1%>%
mutate(x = fct_reorder(x,y))%>% #降序的话改为desc(y)
ggplot(aes(x= x, y=y,color = x)) +
geom_segment( aes(x=x, xend=x, y=1, yend=y),size=1,linetype=”dotdash” )+
geom_point( size=5, color= “black”, fill=alpha(“red”, 0.3), alpha=0.7, shape=21, stroke=2)+
theme_light() +
#coord_flip() + 控制图形是否水平放置
theme(
panel.grid.major.x = element_blank(),
panel.border = element_blank(),
axis.ticks.x = element_blank()
) +
xlab(“Pathways”) +
ylab(“Counts”)
这样的图是不是有点意思了~
控制图形是否水平放置
data1%>%
mutate(x = fct_reorder(x,y))%>% #降序的话改为desc(y)
ggplot(aes(x= x, y=y,color = x)) +
geom_segment( aes(x=x, xend=x, y=1, yend=y),size=1,linetype=”longdash” )+
geom_point( size=5, color= “black”, fill=alpha(“red”, 0.3), alpha=0.7, shape=21, stroke=2)+
theme_light() +
coord_flip() + #控制图形是否水平放置
theme(
panel.grid.major.x = element_blank(),
panel.border = element_blank(),
axis.ticks.x = element_blank()
) +
xlab(“Pathways”) +
ylab(“Counts”)
这样图就很接近论文中的图表了,可以根据自己的需求自行进行调节相应的参数哦~
图的含义
作图一定要明确相应的图想要展示给读者什么样的信息,那这里小果提供了一下几个有关气泡图的表达含义:
- 可视化变量之间的关系:通过将颜色映射到一个连续的变量,我们可以直观地看到变量之间的关系。例如,在气泡图中,可以使用颜色来表示第三个变量(例如,y变量),这样我们可以同时看到x、y两个变量之间的关系。
- 强调变量的连续性:使用颜色映射可以强调变量的连续性。对于气泡图来说,通过使用渐变的颜色,我们可以更好地展示变量的不同取值之间的变化。这对于展示物种分布、基因表达等连续性变量非常有用。
- 比较不同组之间的差异:通过在不同组之间使用不同的颜色映射,我们可以更好地比较它们之间的差异。例如,在棒棒糖图中,可以使用不同的颜色来表示不同的物种,这样我们可以直观地比较它们在不同组之间的丰度差异。
如果你在作图中有问题,可以借助一些网上的云作图工具来实现http://www.biocloudservice.com/home.html
好了,这样我们“棒棒糖”就画完了。小伙伴们如果有什么问题就和小果讨论吧。