gpt4 book ai didi

r - 在ggplot2中分面数据时如何在比例尺上设置不同的中断和标签?

转载 作者:行者123 更新时间:2023-12-04 15:10:04 25 4
gpt4 key购买 nike

考虑以下代码:

library(ggplot2)    
data = data.frame(x = c(1, 2,
3, 4,
5, 6),
label = c("foo", "bar",
"bar", "baz",
"baz", "boo"),
type = c(1, 1,
2, 2,
3, 3))
ggplot(data, aes(x = x, y = c(1))) +
labs(x = "", y = "") +
theme_bw() +
facet_wrap(~ type, ncol = 1, scales = "free_x") +
scale_x_discrete(aes(breaks = x, labels=label), limits = 1:6) +
geom_point()

它生成图像:

image plot

问题是我的 scale_x_discrete()被忽略。我希望每个方面的 x 比例显示 data$label 中的标签,但仅限于有数据的地方。换句话说,我想要这样的东西,但在一个图表上:

facet

facet

facet

我该怎么做?

最佳答案

您可能需要单独构建图,然后使用 grid.arrange 将它们组合起来。 :

library(ggplot2)    
data = data.frame(x = c(1, 2,
3, 4,
5, 6),
label = c("foo", "bar",
"bar", "baz",
"baz", "boo"),
type = c(1, 1,
2, 2,
3, 3))

library(gridExtra) # Using V 2.0.0

p = list()

for(i in 1:3) {

df = subset(data, type == i)

p[[i]] = ggplot(df, aes(x = x, y = c(1)) ) +
labs(x = "", y = "") +
theme_bw() +
expand_limits(x = c(1, 6)) +
facet_wrap(~ type, ncol = 1) +
scale_x_continuous(breaks = df$x, labels = df$label) +
geom_point()
}

grid.arrange(grobs = p, ncol = 1)

enter image description here

关于r - 在ggplot2中分面数据时如何在比例尺上设置不同的中断和标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31630921/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com