在构面之间指定不同的轴标签

时间:2016-02-03 04:35:23

标签: r ggplot2 facet axis-labels facet-wrap

我想独立指定两个方面的断点和颜色。有没有办法做到这一点?

使用此代码

ggplot(data, aes(x = x, y = y)) +
    geom_point() +
    scale_y_continuous(breaks = c(0:3, 4, 6, 8)) +
    facet_wrap(~group, scales = "free")

我可以在底部方面添加我需要的额外休息,但我不希望这些在顶部。换句话说,我希望底部情节为0, 1, 2, 3,顶部情节为0, 2, 4, 6, 8

我不知道如何为刻面之间的标签指定不同的颜色(让我知道是否应该打开一个关于颜色的单独问题)。

facets

1 个答案:

答案 0 :(得分:2)

这样做的一种方法是分别绘制每个组,然后将这些图组合在一起:

library(gridExtra)

p1 = ggplot(data[data$group=="Group1",], aes(x = x, y = y)) +
       geom_point() +
       scale_y_continuous(breaks = c(0:3, 4, 6, 8)) +
       facet_wrap(~ group)

p2 = ggplot(data[data$group=="Group2",], aes(x = x, y = y)) +
       geom_point() +
       scale_y_continuous(breaks = c(-1:3)) +
       facet_wrap(~ group)

grid.arrange(p1, p2, ncol=1)

如果您可以提出以规划方式决定y分解的规则,那么您可以使用lapply一次性完成所有绘图。这是一个简单的例子。对于您的用例,您需要查看是否可以提出适用于所有图表的规则。

# Store all the plots in a list
pl = list()

pl = lapply(unique(data$group), function(i) {
  ggplot(data[data$group==i,], aes(x,y)) +
    geom_point() +
    facet_wrap(~ group) +
    scale_y_continuous(limits=c(min(data$y[data$group==i]), max(data$y[data$group==i])), breaks=min(data$y):max(data$y))
})

do.call(grid.arrange, c(pl, ncol=1))