使用
facet_grid()
,在绘制垂直堆叠在单列中的图时,如何将组名称(即灰色条)放置在图的顶部?
根据我的尝试,当垂直堆叠图时,使用
facet_grid()
,你不能将条带放在图表的顶部或底部;您只能使用 switch = c("y", "x", "both")
参数将条带放置在图的右侧或左侧。
我知道
facet_wrap()
(以及来自 ggforce 的 facet_col()
)可以使用 strip.position = c("top", "bottom", "left", "right")
参数将条带放置在任何位置,无论图形如何绘制:垂直或水平。我使用 facet_wrap()
生成了下面的图 1(代码位于可复制代码部分)。
但是,我希望能够使用
facet_grid()
而不是facet_wrap 生成下面的图(条带位于“顶部”)。
图 1:我希望能够使用
facet_grid()
绘制此图
理想情况下,如果可以扩展 switch 参数或者可以将
strip.position
参数添加到 facet_grid()
中,以便能够将条带放在顶部,那就太好了。我尝试自己尝试更改 facet_grid()
和 facet_wrap()
函数的源代码,但无法弄清楚。
我不简单地使用
facet_wrap()
函数的原因是因为不幸的是它没有 space="free"
参数,该参数在 facet_grid()
中可用,并且在我的应用程序中至关重要。
下面是一个可重现的示例,稍作修改,取自 Brandon Bertelsen 答案的代码here:
可复制代码:
数据:
dat <- data.frame(value=runif(30)*10,
grouping=c(rep("Group 1",10),
rep("Group 2",10),
rep("Group 3",10)),
letters=rep(LETTERS[1:10], 3)
垂直绘制图表时,使用
facet_wrap
在顶部获取条带:
ggplot(dat, aes(letters,value, label = letters)) +
geom_bar(stat="identity") +
facet_wrap(grouping~., dir = "v")
产生图1:
使用
facet_grid
和 switch = "y"
将条带置于左侧:
ggplot(dat, aes(letters,value, label = letters)) +
geom_bar(stat="identity") +
facet_grid(grouping~., switch = "y")
产生图2:
使用
facet_grid
和 switch = "x"
将条带置于右侧:
ggplot(dat, aes(letters,value, label = letters)) +
geom_bar(stat="identity") +
facet_grid(grouping~., switch = "x")
产生图3:
在没有其他选择的情况下,我到这里寻求帮助。
ggforce::facet_col() 会做到这一点。它有 strip.position 参数以及比例和空间参数
这就是你想要的吗?然后把
sales = 'free'
去掉即可。
library(ggplot2)
dat <- data.frame(value=runif(26)*10,
grouping=c(rep("Group 1",10),
rep("Group 2",10),
rep("Group 3",6)),
letters=LETTERS[1:26])
ggplot(dat, aes(letters,value, label = letters)) +
geom_bar(stat="identity") +
facet_wrap(grouping~., dir = "v")
由 reprex 包于 2020-06-13 创建(v0.3.0)