今天我们学做一下nature文章(Deciphering human macrophage development at single-cell resolution)的图表,本意是展示细胞比例的变化,但是新奇之处在于用了面积图,也就是折线图下添加了面积!
image.png
首先熟悉一下之前的知识,我们将这幅图片读入,提取下它的配色!
library(RImagePalette)
library(png)
picture <- readPNG("1663902753133.png")
r <- nrow(picture)/ncol(picture)
plot(c(0,1),c(0,r),type = "n",xlab = "",ylab = "",asp=1)
rasterImage(picture,0,0,1,r)
mycolor<-image_palette(picture,n=10)
scales::show_col(mycolor)
mycolor
col <- c("#D57444", "#33B1C0", "#34993B", "#8C67AC")
数据用之前的折线图数据,效果如下。
data <- read.csv("趋势气泡图.csv", header = T)
ggplot(data, aes(x=Diameter, y=expression, fill=group)) +
geom_area(size=0.01,colour="white")+
labs(y="Expression")+
theme_bw()+
scale_fill_manual(values=col)+
theme(panel.grid.major=element_blank(),panel.grid.minor=element_blank(),
axis.text = element_text(color = "black",size = 10),
axis.title = element_text(color = 'black', size=12))+
geom_vline(aes(xintercept =100),linetype="dashed", size=1.2, colour="white")+
geom_vline(aes(xintercept =200),linetype="dashed", size=1.2, colour="white")+
geom_vline(aes(xintercept =300),linetype="dashed", size=1.2, colour="white")+
geom_vline(aes(xintercept =400),linetype="dashed", size=1.2, colour="white")
image.png
但是发现文章作者提供了原始数据,我们计算下细胞比例,整理为作图数据即可。这里折线高低并不能表示具体的数值,主要表示变化趋势!
df <- read.csv("nature_ratio.csv", header = T)
table(df$Stage)
A <- prop.table(table(df$cluster, df$Stage), margin = 2)
A <- as.data.frame(A)
colnames(A) <- c("celltype", "stage", "Freq")
添加上颜色,做面积图的要点在于先成折线图,再添加面积。这样的效果和原文差不多。
cluster_cols <- c("#DC050C", "#FB8072", "#1965B0", "#7BAFDE", "#882E72",
"#B17BA6", "#FF7F00", "#FDB462", "#E7298A", "#E78AC3",
"#33A02C", "#B2DF8A", "#55A1B1", "#8DD3C7", "#A6761D",
"#E6AB02", "#7570B3", "#BEAED4", "#666666", "#999999",
"#aa8282", "#d4b7b7", "#8600bf", "#ba5ce3", "#808000",
"#aeae5c", "#1e90ff", "#00bfff", "#56ff0d", "#ffff00")
ggplot(A,aes(x = stage,y =Freq,
group=celltype))+
stat_summary(geom = 'line',fun='mean',cex=1,col='white')+
geom_area(data = A,aes(fill=celltype))+
scale_fill_manual(values=cluster_cols)+
labs(x=NULL,y=NULL)+
theme_bw()+
theme(panel.grid.major=element_blank(),panel.grid.minor=element_blank(),
axis.text = element_text(color = "black",size = 10))+
geom_vline(aes(xintercept ="CS12"),linetype="dashed", size=1.2, colour="white")+
geom_vline(aes(xintercept ="CS13"),linetype="dashed", size=1.2, colour="white")+
geom_vline(aes(xintercept ="CS15"),linetype="dashed", size=1.2, colour="white")+
geom_vline(aes(xintercept ="CS17"),linetype="dashed", size=1.2, colour="white")+
geom_vline(aes(xintercept ="CS20"),linetype="dashed", size=1.2, colour="white")
image.png
觉得有用了可以在自己数据可视化中应用起来了。感觉小编分享有用的可点个赞,分享到再看,或者转发!所有数据代码已上传QQ群!更多精彩请访问我的公众号《KS科研分享与服务》!