如何使用facet_grid等标签绘制facet_wrap(独立的y轴)

szqfcxe2  于 2023-04-18  发布在  其他
关注(0)|答案(1)|浏览(264)

我有关于基因表达水平(TPM值)的数据,该矩阵由2个细胞系和类型组成。
My toy matrix
我想比较每种基因类型的KD和实验(KD)之间的TPM值。另外,因为两个细胞系共享相同的基因类型,我还想平行绘制它们。为了使用自由y轴绘制它们,我应该使用facet_wrap而不是facet_grid,但对于facet_wrap,我发现我不能像facet_grid那样制作相同的y标签。

t1 <- ggplot(TPM_matrix, aes(x=Type, y=log10(TPM_value)),group=Type)+
  geom_point(aes(color=Type)) + 
  ggtitle("TPM levels") + 
  facet_wrap(Cell_Line ~ gene_name, ncol=4, scales="free_y") +
  theme(strip.background = element_blank(), 
        strip.text.y = element_text(size=12,face='bold'),
        axis.text.x=element_blank(), legend.position = 'right',
        legend.title=element_text(size=13),legend.text=element_text(size=13),
        plot.title = element_text(color = "black",hjust = 0.5, vjust=1, size = 20, face = 'bold'))

the result of t1
我可以看到每个图都有自己的细胞系和基因名称项..但它是重复的,所以我想让它们像t2一样共享x轴和y轴

t2 <- ggplot(TPM_matrix, aes(x=Type, y=log10(TPM_value)),group=Type)+
  geom_point(aes(color=Type)) + 
  ggtitle("TPM levels") + 
  facet_grid(Cell_Line ~ gene_name, scales="free_y") +
  theme(strip.background = element_blank(), 
        strip.text.y = element_text(size=12,face='bold'),
        axis.text.x=element_blank(), legend.position = 'right',
        legend.title=element_text(size=13),legend.text=element_text(size=13),
        plot.title = element_text(color = "black",hjust = 0.5, vjust=1, size = 20, face = 'bold'))

the result of t2
但是t2(facet_grid)的结果不提供自由y轴,
我想用t2标签制作t1图。
What I want to draw
我该怎么办?我需要一些帮助

mcdcgff0

mcdcgff01#

其中一个选项是ggh4x::facet_grid2,它为facet_grid添加了“独立”缩放选项:

library(ggh4x)
#> Loading required package: ggplot2
library(ggplot2)

set.seed(123)

TPM_matrix <- data.frame(
  Type = rep(c("KD", "WT"), each = 4),
  Cell_Line = rep(c("BT20", "HEK292"), each = 8),
  gene_name = c("BRCA2", "CDC42", "THBS1", "TP53"),
  TPM_value = 10^(runif(16, 1, 4))
)

ggplot(TPM_matrix, aes(x = Type, y = log10(TPM_value)), group = Type) +
  geom_point(aes(color = Type)) +
  ggtitle("TPM levels") +
  facet_grid2(Cell_Line ~ gene_name, scales = "free_y", independent = "y") +
  theme(
    strip.background = element_blank(),
    strip.text.y = element_text(size = 12, face = "bold"),
    axis.text.x = element_blank(), legend.position = "right",
    legend.title = element_text(size = 13), legend.text = element_text(size = 13),
    plot.title = element_text(color = "black", hjust = 0.5, vjust = 1, size = 20, face = "bold")
  )

相关问题