我有一个包含不同范围的多列(我们说n
)的数据框和一个长度为n
的向量。我希望每个变量的不同x轴显示在每个框图下方。我尝试了facet_grid
和facet_wrap
,但它给出了常见的x轴。
这就是我的尝试:
d <- data.frame(matrix(rnorm(10000), ncol = 20))
point_var <- rnorm(20)
plot.data <- gather(d, variable, value)
plot.data$test_data <- rep(point_var, each = nrow(d))
ggplot(plot.data, aes(x=variable, y=value)) +
geom_boxplot() +
geom_point(aes(x=factor(variable), y = test_data), color = "red") +
coord_flip() +
xlab("Variables") +
theme(legend.position="none")
答案 0 :(得分:1)
如果您可以将x轴的文本放在绘图上方,并且让图形的顺序有点混乱,那么这可能会起作用:
library(grid)
p = ggplot(plot.data, aes(x = 0, y=value)) +
geom_boxplot() +
geom_point(aes(x = 0, y = test_data), color = "red") +
facet_wrap(~variable, scales = "free_y", switch = "y") +
xlab("Variables") +
theme(legend.position="none") + theme_bw() + theme(axis.text.x=element_blank())
print(p, vp=viewport(angle=270, width = unit(.75, "npc"), height = unit(.75, "npc")))
我实际上只是在不翻转坐标的情况下创建图形,以便scales = 'free_y'
工作,切换条带标签的位置,然后旋转图形。
如果您不喜欢上图中的文字(这是可以理解的),我会考虑创建单个图表的列表,然后将它们与grid.arrange
放在一起。
HTH,
洛伦佐