Hoy reproducimos una imagen de 2021 Cell
.Graphical abstract
Título :El atlas de células de la mucosa oral humana revela un eje estromal-neutrófilo que regula la inmunidad tisular
DOI : 10.1016/j.cell.2020.07.009
Lee la imagen
Reproducir resultados
Muestra de datos y recogida de códigos
Proyecto VIP Canoe Notes 2022
empieza a dibujar
Gráfico circular
Gráfico de barras apiladas
Reproducción de imagen original
Contenido pasado
Lee la imagen
Eche un vistazo a este gráfico de resumen (flecha roja), el autor usa un gráfico de barras apiladas para mostrar el cambio en las proporciones entre los dos grupos de muestras y agrega una línea en el medio para que la comparación entre los mismos componentes sea más intuitiva. . Por lo general, este tipo de datos se muestra en un gráfico circular o en un gráfico de barras apiladas.Hoy usaremos tanto el gráfico circular como el gráfico de barras para reproducirlo.
Reproducir resultados
Muestra de datos y recogida de códigos
点赞
, 在看
este artículo, compártalo en el círculo de amigos 集赞20个
y 保留60分钟
envíe la captura de pantalla a WeChat para mzbj0002
recibirlo.
Canoe Notes 2022 VIP se puede obtener de forma gratuita .
Proyecto VIP Canoe Notes 2022
derechos e intereses:
Datos de muestra y código de todos los tuits de Canoe Notes 2022 (actualizados en tiempo real en el grupo VIP) .
Canoa Notas Grupo de Intercambio de Investigación Científica .
Compra a mitad de precio
跟着Cell学作图系列合集
(tutorial gratis + colección de códigos)|Sigue a Cell para aprender a dibujar una colección de series .
PEAJE:
99¥/persona . Puede agregar WeChat: mzbj0002
transferir dinero o dar una recompensa directamente al final del artículo.
empieza a dibujar
Gráfico circular
Los datos son los datos de localización subcelular de tres grupos de proteínas de muestra. El método de visualización general se mostrará mediante gráficos circulares. Los gráficos circulares son muy comunes y muy simples de hacer . Hay pocas funciones relacionadas en . Aquí usamos el tastypie
paquete, que tiene pie_bake
funciones que generan un ggplot
objeto que puede ser muy conveniente para ajustar su gráfico circular.
# 加载包及导入数据
library(ggplot2)
library(ggthemes)
library(tidyverse)
library(ggalluvial)
library(ggsci)
library(cowplot)
library(tastypie)
rm(list = ls())
df=read.csv('Sublocation.csv',header = T)
head(df)
p1=pie_bake(data = data.frame(subloc=df$Subcellar.location,ratio=df$A),
template = "blue1",#调色盘是必要参数,不影响手动添加颜色
perc = TRUE,#显示百分比
group_name = "a",
title ='A')+
theme_classic()+
scale_fill_npg()+#ggsci中的调色盘
theme(panel.background = element_blank(),
axis.line.x = element_blank(),
axis.line.y = element_blank(),
axis.title.y = element_blank(),
axis.title.x = element_blank(),
axis.text.x = element_blank(),
axis.text.y = element_blank(),
axis.ticks.x = element_blank(),
axis.ticks.y = element_blank(),
legend.title = element_text(),
plot.title = element_text(hjust = 0.5,vjust=-2,size = 15))+labs(fill = 'Subcellular location')
p2=pie_bake(data = data.frame(subloc=df$Subcellar.location,ratio=df$C),
template = "blue1",
perc = TRUE,
group_name = "a",
title ='C')+
theme_classic()+scale_fill_npg()+
theme(panel.background = element_blank(),
axis.line.x = element_blank(),
axis.line.y = element_blank(),
axis.title.y = element_blank(),
axis.title.x = element_blank(),
axis.text.x = element_blank(),
axis.text.y = element_blank(),
axis.ticks.x = element_blank(),
axis.ticks.y = element_blank(),
legend.title = element_text(),
plot.title = element_text(hjust = 0.5,vjust=-2,size = 15))+labs(fill = 'Subcellular location')
p3=pie_bake(data = data.frame(subloc=df$Subcellar.location,ratio=df$B),
template = "blue1",
perc = TRUE,
group_name = "a",
title ='B')+
theme_classic()+scale_fill_npg()+
theme(panel.background = element_blank(),
axis.line.x = element_blank(),
axis.line.y = element_blank(),
axis.title.y = element_blank(),
axis.title.x = element_blank(),
axis.text.x = element_blank(),
axis.text.y = element_blank(),
axis.ticks.x = element_blank(),
axis.ticks.y = element_blank(),
legend.title = element_text(),
plot.title = element_text(hjust = 0.5,vjust=-2,size = 15))+
labs(fill = 'Subcellular location')
plot_grid(p1,p2,p3)
También es muy sencillo hacer un gráfico circular en R, pero cuando se comparan varios grupos, la comparación de varios gráficos circulares no es tan intuitiva. En este momento, necesitamos hacer un gráfico de barras apiladas.
Gráfico de barras apiladas
Primero, preprocesar los datos en ggplot
un formato de datos adecuado para dibujar, convertir la tabla ancha en una tabla larga y crear una columna de proporciones para luego dividir el gráfico.
mdf=df%>%
pivot_longer(-Subcellar.location,names_to = 'Sample',values_to = 'Value')%>%
group_by(Sample)%>%
mutate(Proportion=Value/sum(Value))
geom_bar
O geom_col
puede hacer fácilmente un gráfico de barras apiladas.
ggplot(mdf, aes(x = Sample,y=Proportion,fill = Subcellar.location)) +
geom_col(width = 0.4)+
theme_base()
Sin embargo, para reproducir el formato de la imagen original en el artículo, llamamos a la función o ggalluvial
en el paquete para hacer la imagen de mora (imagen de impacto) Más adelante explicaremos la imagen de mora (imagen de impacto) que es brevemente explicado aquí como una aplicación práctica.geom_alluvium
geom_flow
g=ggplot(mdf, aes(x = Sample,y=Proportion,fill = Subcellar.location,
stratum = Subcellar.location, alluvium = Subcellar.location)) +
geom_col(width = 0.4,color=NA)+
geom_flow(width = 0.4,alpha = 0.2,knot.pos = 0) +#knot.pos可以使连线更直
#geom_alluvium( width = 0.4,alpha = 0.2,knot.pos = 0)+ 与geom_flow效果相似
scale_fill_manual(values = pal_npg()(4))+
theme_map()+
theme(axis.text.x=element_text(size=20,vjust = 5),
legend.position = 'none')
g
Reproducción de imagen original
La estructura general ya está hecha, y algunas conexiones se agregarán más adelante. Se recomienda encarecidamente AI
modificarla en R. Solo toma unos minutos modificarla. Hay varias formas de lograrlo en R, pero en general, es es más problemático. Aquí hay una introducción. Si tienes amigos que tienen buenas ideas para implementar, también puedes dejar un mensaje en segundo plano. Una forma de hacerlo es calcular las coordenadas de cada nodo y luego geom_segment
agregar segmentos de línea blanca.