提问人:Erik 提问时间:7/18/2023 更新时间:8/10/2023 访问量:30
嵌套 y 轴,带面包装 x 轴
Nested y axis with faced wrap x axis
问:
我想绘制以下数据集,以可视化所有已完成或缺失的测量:
data<- read.table(text = "Sample_ID Species Time Treatment
Amu1 Amu 1 A
Amu1 Amu 2 A
Amu1 Amu 3 A
Amu5 Amu 1 B
Amu5 Amu 2 B
Amu2 Amu 1 A
Amu2 Amu 2 A
Amu2 Amu 3 A
Amu3 Amu 1 A
Amu3 Amu 2 A
Amu4 Amu 1 A
Amu4 Amu 2 A
Amu4 Amu 3 A
Amu6 Amu 1 B
Amu6 Amu 3 B
Spi1 Spi 1 A
Spi1 Spi 2 A
Spi1 Spi 3 A
Spi4 Spi 1 B
Spi4 Spi 2 B
Spi4 Spi 3 B
Spi2 Spi 2 A
Spi2 Spi 3 A
Spi3 Spi 1 A
Spi3 Spi 2 A
Spi3 Spi 3 A
Spi5 Spi 2 B
Spi5 Spi 3 B
Gfa5 Gfa 1 B
Gfa5 Gfa 2 B
Gfa5 Gfa 3 B
", header = TRUE)
使用 ggplot 和 facet_wrap,我设法得到了这个图,但我想按物种嵌套 y 轴,以便对物种进行视觉对齐。确切的Sample_ID不是很重要,真正重要的是每次治疗的sample_ID次数。例如,在治疗 A 中,有 4 个 Amu,而在 B 中,只有 2 个。 但是,如果 Y 轴上sample_ID之间的空间始终相同,那就太好了。理想情况下,对于 Amu,我希望在处理 A 中看到 4 条“线”,而在处理 B 中看到 2 条“线”,然后是两条空线。
我希望我很清楚。
非常感谢您的帮助!
ggplot(data = data,
aes(x = as.factor(Time), y = fct_rev(Sample_ID),
color = Species))+
scale_x_discrete(labels=c("t1", "t2", "t3"))+
geom_point(size = 3, show.legend = F) +
scale_color_brewer(palette = "Dark2") +
theme_bw() +
facet_wrap(~ Treatment,
scales = "free_y",
strip.position = "top",
ncol = 3 ) +
theme(
strip.background = element_rect(color = "transparent", fill = "white"),
axis.title.y = element_blank())
答:
0赞
William Wong
8/10/2023
#1
我不确定这是否是您想要的,但诀窍可能是使用库。ggh4x
library(ggh4x)
ggplot(data = data,
aes(x = as.factor(Time), y = fct_rev(interaction(Sample_ID, Species)), # use interaction to specific the grouping variable
color = Species))+
scale_x_discrete(labels=c("t1", "t2", "t3"))+
geom_point(size = 3, show.legend = F) +
scale_color_brewer(palette = "Dark2") +
theme_bw() +
facet_wrap(~ Treatment,
scales = "free_y",
strip.position = "top",
ncol = 3 ) +
theme(
strip.background = element_rect(color = "transparent", fill = "white"),
axis.title.y = element_blank()) +
guides(y = "axis_nested") ## added here with the package library(ggh4x)
评论