如何在R中使用ggplot2绘制具有相同x轴的两个图表?
我正在寻找类似于以下内容的东西: http://i.stack.imgur.com/B9QT7.png
我正在寻找类似于以下内容的东西: http://i.stack.imgur.com/B9QT7.png
layout(matrix(1:2, ncol = 1), widths = 1, heights = c(2,1.5), respect = FALSE)
par(mar = c(0, 4.1, 4.1, 2.1))
with(economics, plot(unemploy~date, type = 'l', xaxt = 'n', main = 'My Great Graph'))
par(mar = c(4.1, 4.1, 0, 2.1))
with(economics, plot(pop~date, type = 'l'))
请注意,由于您明确地制作了两个图形而不必使用数据在因素上分割的函数,因此您无需重新整理数据。 此外,这两个图形可以是几乎任何东西...例如第二个可以是直方图。 此外,您会注意到,在此代码中,您可以轻松设置相对高度。
(与 ggplot2 解决方案相比,此代码执行速度快得多...如果这很重要...如实时更新网站或其他一些情况,或者您有大量数据或需要制作许多这些图形)
基本思路是将数据集融合,以便您在单个列中拥有要在y轴上绘制的变量的值,并使用第二列区分来源。例如:
data("economics")
dat.m <- melt(economics, measure.vars=c("pop", "unemploy"))
ggplot(dat.m, aes(x=date, y=value)) + geom_line() + facet_grid(variable~., scales="free_y")
install.packages("googleVis");library(googleVis);demo(googleVis)
第八个弹出的图表是时间序列图。 但这不是ggplot。
ggplot2
的策略也可以使用lattice
包来实现。使用相同的数据:data("economics")
dat.m <- melt(economics, measure.vars=c("pop", "unemploy"))
xyplot
,通过layout
指定两行一列,并使用scales
参数强制分开y轴刻度:xyplot(value~date|variable,data = dat.m,
panel = "panel.lines", layout = c(1,2),
scales = list(y = list(relation = "free")))