R中的框图与附加点

时间:2016-10-03 05:45:42

标签: r plot ggplot2 boxplot

我有一个包含不同范围的多列(我们说n)的数据框和一个长度为n的向量。我希望每个变量的不同x轴显示在每个框图下方。我尝试了facet_gridfacet_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") 

1 个答案:

答案 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,

洛伦佐