論文
Single-cell profiling of vascular endothelial cells reveals progressive organ-specific vulnerabilities during obesity
https://www.nature.com/articles/s42255-022-00674-x#Sec58
s42255-022-00674-x.pdf
https://github.com/Osynchronika/sc_EC_obesity_atlas
大部分 作圖的數據都有,可以試著用論文中提供的數據復現一下論文中的圖
今天的推文我們復現一下論文中的figure4f

image.png
之前的推文也介紹過這種形式的餅圖,可以也看看之前的推文
今天的這個圖上下兩層分開做,然后采用拼圖的方式實現
餅圖上展示比例的文本如何添加的精確的位置我暫時想不到比較好的方法了,推文里的解決辦法是構造大體的坐標,然后出圖后手動調節(jié)
論文中提供的數據

image.png
第一層餅圖的數據整理成如下格式

image.png
作圖代碼
library(ggplot2)
library(scatterpie)
library(readxl)
library(tidyverse)
fig4f.df01<-read_excel("data/20230207/figure4f.xlsx",
sheet = "Sheet1")
fig4f.df01
ggplot()+
geom_scatterpie(data=fig4f.df01,
aes(x,y,group=region,r=0.4),
cols = c("A","B"))+
coord_equal()
fig4f.df01
fig4f.df01 %>%
rowwise() %>%
mutate(A_prop=paste0(round(A/(A+B),2)*100,"%"),
B_prop=paste0(round(B/(A+B),2)*100,"%"),
x_A=x+0.1,
x_B=x-0.1,
y_A=y,y_B=y) -> fig4f.df01.1
ggplot()+
geom_scatterpie(data=fig4f.df01.1,
aes(x,y,group=region,r=0.4),
cols = c("A","B"))+
coord_equal()+
geom_text(data=fig4f.df01.1,
aes(x=x_A,y=y_A,label=A_prop),
hjust=0,color="black")+
geom_text(data=fig4f.df01.1,
aes(x=x_B,y=y_B,label=B_prop),
hjust=1,color="white")+
theme_void()+
theme(axis.title.y = element_text(angle = 90),
legend.title = element_blank())+
scale_fill_manual(values = c("A"="#89bd41","B"="#e20613"),
labels=c("A"="Obesity: up\nRev: restored",
"B"="Obesity: up\nRev: not restored"))+
labs(y="Upregulated")+
geom_text(data = data.frame(x=1:7,y=1.5,label=c("Brain","Heart","Lungs",
"Kidneys","Liver","Vis AT","Sc AT")),
aes(x=x,y=y,label=label),
fontface="bold")

image.png
第二層的思路是一樣的
作圖數據手動整理成如下格式

image.png
作圖代碼
fig4f.df02<-read_excel("data/20230207/figure4f.xlsx",
sheet = "Sheet2")
fig4f.df02
fig4f.df02
fig4f.df02 %>%
rowwise() %>%
mutate(A_prop=paste0(round(A/(A+B),2)*100,"%"),
B_prop=paste0(round(B/(A+B),2)*100,"%"),
x_A=x+0.1,
x_B=x-0.1,
y_A=y,y_B=y) -> fig4f.df02.1
ggplot()+
geom_scatterpie(data=fig4f.df02.1,
aes(x,y,group=region,r=0.4),
cols = c("A","B"))+
coord_equal()+
geom_text(data=fig4f.df02.1,
aes(x=x_A,y=y_A,label=A_prop),
hjust=0,color="white")+
geom_text(data=fig4f.df02.1,
aes(x=x_B,y=y_B,label=B_prop),
hjust=1,color="black")+
theme_void()+
theme(axis.title.y = element_text(angle = 90),
legend.title = element_blank())+
scale_fill_manual(values = c("A"="#312782","B"="#8abe42"),
labels=c("A"="Obesity: down\nRev: restored",
"B"="Obesity: down\nRev: not restored"))+
labs(y="Downregulated")

image.png
最后是拼圖
library(patchwork)
p1/p2
出圖后再手動編輯文本的位置

image.png
示例數據和代碼可以給推文點贊,然后點擊在看,最后留言獲取
歡迎大家關注我的公眾號
小明的數據分析筆記本
小明的數據分析筆記本 公眾號 主要分享:1、R語言和python做數據分析和數據可視化的簡單小例子;2、園藝植物相關轉錄組學、基因組學、群體遺傳學文獻閱讀筆記;3、生物信息學入門學習資料及自己的學習筆記!
微信公眾號好像又有改動,如果沒有將這個公眾號設為星標的話,會經常錯過公眾號的推文,個人建議將 小明的數據分析筆記本 公眾號添加星標,添加方法是
點開公眾號的頁面,右上角有三個點

image.png
點擊三個點,會跳出界面

image.png
直接點擊 設為星標 就可以了

image.png