仅改变一个方面(行)的 facet_grid() 高度是否可能?
Altering facet_grid() height only for one facet (row) is it possible?
我正在尝试改进 facet_grid 图形中的一个简单但重要的细节。
我玩过 facet_grid() 函数的比例和 space 参数。但我想增加高度 仅 底面,以便能够读取图中截断的样本数(以红色突出显示)。参见图片 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
你能帮我一些想法来克服这种情况吗?
提前感谢您的help/comments、
贤士
网格图形使您能够修改 ggplot()
个对象的 widths
和 heights
。
示例代码:
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)
示例图:
示例数据:
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))
非常感谢@Rfanatic。这正是我想要的。
我按照您的指示从包 grid
创建了 gtable,但我也使用了库 gtable
来帮助我发现我的案例的面板编码。这是代码,如果将来也可以帮助某人:
gt <- ggplot_gtable(ggplot_build(gg))
gt$widths[14] = 1*gt$widths[14]
gt$heights[14] = 4*gt$heights[14]
grid.draw(gt)
我使用位置 14,因为它是我遇到问题的正方形的行位置编号:
library(gtable)
gtable_show_layout(gt)
但对我来说最好的是打印 TableGrob:
print(gt)
#17 1 (14-14,11-11) panel-4-4 gTree[panel-16.gTree.8635]
我对示例中的 panel-4-4 感兴趣(只是我在这里打印了 gt 输出的这一行)。此外,由于我要更改行高和宽度,所以我选择了 14 而不是 11。
谢谢。
我正在尝试改进 facet_grid 图形中的一个简单但重要的细节。
我玩过 facet_grid() 函数的比例和 space 参数。但我想增加高度 仅 底面,以便能够读取图中截断的样本数(以红色突出显示)。参见图片 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
你能帮我一些想法来克服这种情况吗?
提前感谢您的help/comments、
贤士
网格图形使您能够修改 ggplot()
个对象的 widths
和 heights
。
示例代码:
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)
示例图:
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))
非常感谢@Rfanatic。这正是我想要的。
我按照您的指示从包 grid
创建了 gtable,但我也使用了库 gtable
来帮助我发现我的案例的面板编码。这是代码,如果将来也可以帮助某人:
gt <- ggplot_gtable(ggplot_build(gg))
gt$widths[14] = 1*gt$widths[14]
gt$heights[14] = 4*gt$heights[14]
grid.draw(gt)
我使用位置 14,因为它是我遇到问题的正方形的行位置编号:
library(gtable)
gtable_show_layout(gt)
但对我来说最好的是打印 TableGrob:
print(gt)
#17 1 (14-14,11-11) panel-4-4 gTree[panel-16.gTree.8635]
我对示例中的 panel-4-4 感兴趣(只是我在这里打印了 gt 输出的这一行)。此外,由于我要更改行高和宽度,所以我选择了 14 而不是 11。
谢谢。