ggplot2:堆积图的对齐

时间:2014-05-26 10:10:07

标签: r plot ggplot2

这可能是有史以来最不可能的愚蠢问题,但我很难过。

我在ggplot2中有两个图,用gridExtras包堆叠。问题是我无法在两个图中找到实际的“图形区域”(不确定其技术名称)。举例说明:

Mis-aligned plot

很难看到,但是灰色阴影图区域的左边缘(即轴刻度标记)并不完全匹配。对于这个情节来说,它并不是太糟糕,但是当我尝试绘制更多数据时,它会变得明显,因为红色垂直线不匹配。

这个代码看起来像这样:

library(ggplot2)
library(gridExtra)

# PLOT 1

# initialize plot
plot1 <- ggplot(xdat, aes(x=time))
        + scale_y_continuous(breaks=seq(0,20,2), label=format2)
        + coord_cartesian(y=c(0,20))
        + xlim(as.POSIXct("07.03.2011 00:00:00", format="%d.%m.%Y %H:%M:%S"), as.POSIXct("08.03.2011 00:00:00", format="%d.%m.%Y %H:%M:%S"))
        + ylab("Level 1")

# add points
plot1 <- plot1 + geom_point(aes(y=units, size=type, shape=type))
        + scale_size_manual(values=c(1,3), guide=FALSE)
        + scale_shape_manual(values=c(16,2), name="Series", labels=c("Continuous", "Manual"))

# connect the points... omitted

# axis labels
plot1 <- plot1 + theme(legend.position="top")

# PLOT 2

plot2 <- ggplot(ydat, aes(x=time))
        + scale_y_continuous(label=format2)
        + coord_cartesian(y=c(0,5_max))
        + xlim(as.POSIXct("07.03.2011 00:00:00", format="%d.%m.%Y %H:%M:%S"), as.POSIXct("08.03.2011 00:00:00", format="%d.%m.%Y %H:%M:%S"))
        + ylab("Level 2")

plot2 <- plot2 + geom_bar(aes(y=units), fill="red", color="red", stat="identity")

# COMBINE

# overlay faint vlines for each ydat... omitted

# make graphs flush when stacking
plot1 <- plot1 + theme(legend.position="top",
                       axis.text.x=element_blank(),
                       axis.ticks.x=element_blank(),
                       plot.margin=unit(c(1,1,-0.1,1), "cm"))
plot2 <- plot2 +  theme(legend.position="none",
                        plot.margin=unit(c(-0.5,1,1,1), "cm"))

grid.arrange(plot1,plot2)

在我看来,问题在于其中一个图形的y轴刻度将“图形区域”向右推进到比其他图形更向右的事实。我尝试将底部图形的y轴刻度格式化为具有与顶部图形匹配的尾随空白(例如,跟随http://www.cookbook-r.com/Graphs/Axes_(ggplot2)/),但似乎应该有更直接的方式来对齐两个绘图区域

有没有人对此有任何见解?这样一个小问题,但我不知道如何为此导航ggplot的复杂性。

0 个答案:

没有答案