嵌套 y 轴与面包裹 x 轴

问题描述 投票:0回答:1

我想绘制以下数据集以可视化所有已完成或缺失的测量:

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())

r ggplot2 nested facet-wrap
1个回答
0
投票

我不确定这是否是您想要的,但诀窍可能是使用

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)
  
© www.soinside.com 2019 - 2024. All rights reserved.