r - 仅更改一个面(行)的facet_grid()高度是否可能?

标签 r ggplot2 facet-grid geom-text

我正在尝试改进facet_grid 图形中一个简单但重要的细节。

我使用了facet_grid()函数的比例和空间参数。但我想仅增加底部面的高度,以便能够读取图表中被截断的样本计数(以红色突出显示)。参见图 1。 使用的代码是:

    ggplot(salm_data, aes(x=SALM) ) + geom_bar(stat = "count", position = position_dodge())
 + facet_grid(YEAR ~ TYPE, scales = "free_x", space = "free") 
 +  geom_text(size=2.5, stat = "count", aes(label = after_stat(count)), vjust = -0.3) +theme_bw() + labs(y="Number of samples") + 
theme(panel.grid.minor = element_blank())+
 labs(x=expression(paste(italic("Klebsiella spp."), " ")))

图像 1: Image1

为了尝试克服这个“问题”,我尝试添加下一个代码来放大 Y 轴:

scale_y_continuous(breaks = seq(from = 0, to = 300, by = 40))

但我无法改善这种情况(参见图2)。

图像 2: Image2

你能帮我想出一些办法来克服这种情况吗?

提前感谢您的帮助/评论,

魔法师

最佳答案

网格图形使您能够修改 ggplot() 对象的宽度高度

示例代码:

library(grid)   



gg = ggplot(salm_data, aes(x=type) ) + 
      geom_bar(stat = "count", position = position_dodge())+ 
      facet_grid(year ~ type, scales = "free_x", space = "free")+
      geom_text(size=2.5, stat = "count", aes(label = after_stat(count)), vjust = -0.3) +
      theme_bw() + 
      labs(y="Number of samples") + 
      theme(panel.grid.minor = element_blank())+
      labs(x=expression(paste(italic("Klebsiella spp."), " ")))
    
    
    
gt = ggplot_gtable(ggplot_build(g))
gt$widths[7] = 4*gt$widths[7]  # modify panel-1-2 and panel-2-2  
gt$heights[7] = 4*gt$heights[7] #modify panel-1-2 and panel-2-2 
grid.draw(gt)

示例图:

enter image description here 样本数据:

salm_data<-structure(list(type = c("A", "B", "C", "D", "A", "B", "C", "D", 
"A", "B", "C", "D", "A", "C", "A", "B", "C", "D", "A", "B", "C", 
"D", "A", "B", "C", "D", "A", "C", "A", "B", "C", "D", "A", "B", 
"C", "D", "A", "B", "C", "D", "A", "C", "A", "B", "C", "D", "A", 
"B", "C", "D", "A", "B", "C", "D", "A", "C", "A", "B", "C", "D", 
"A", "B", "C", "D", "A", "B", "C", "D", "A", "C", "A", "B", "C", 
"D", "A", "B", "C", "D", "A", "B", "C", "D", "A", "C", "A", "A", 
"A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", 
"A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A"
), year = c(2001, 2001, 2001, 2001, 2001, 2002, 2001, 2002, 2001, 
2002, 2001, 2002, 2002, 2002, 2001, 2001, 2001, 2001, 2001, 2002, 
2001, 2002, 2001, 2002, 2001, 2002, 2002, 2002, 2001, 2001, 2001, 
2001, 2001, 2002, 2001, 2002, 2001, 2002, 2001, 2002, 2002, 2002, 
2001, 2001, 2001, 2001, 2001, 2002, 2001, 2002, 2001, 2002, 2001, 
2002, 2002, 2002, 2001, 2001, 2001, 2001, 2001, 2002, 2001, 2002, 
2001, 2002, 2001, 2002, 2002, 2002, 2001, 2001, 2001, 2001, 2001, 
2002, 2001, 2002, 2001, 2002, 2001, 2002, 2002, 2002, 2001, 2001, 
2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 
2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 2001, 
2001, 2001, 2001, 2001)), class = "data.frame", row.names = c(NA, 
-112L))

关于r - 仅更改一个面(行)的facet_grid()高度是否可能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71528148/

相关文章:

r - 设置 to.weekly 使用的星期几

r - 将分析权重应用于时间序列数据

python - FacetGrid 的 Matplotlib 轴

r - 如何告诉 R 从相关计算中删除异常值?

r - 在 “geom_signif”函数中找不到对象

r - 如何使geom_area()为缺失值留出空隙?

R:使用 ggplot 创建自定义形状

r - 两列facet_grid,顶部带有条形标签

r - 如何在 facet_nested 中订购 x 轴

r - 如何从一组文本和一组特定术语(标签)构建术语文档矩阵?