如何在R中使用与ggplot2相同的x轴绘制2个图表?
我正在寻找类似的东西: http://i.stack.imgur.com/B9QT7.png
答案 0 :(得分:6)
使用其他人提到的一个很好的baseR解决方案的经济数据集可能是。
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解决方案执行得快得多......如果重要的话......比如网站或其他东西的实时更新,或者你有很多数据,或者需要制作很多这些图表)< / p>
答案 1 :(得分:2)
基本思想是融合数据集,以便在一列中使用y轴绘制变量的值,并使用第二列区分源。例如:
data("economics")
dat.m <- melt(economics, measure.vars=c("pop", "unemploy"))
然后使用facet_grid在单独的facet中绘制每个变量:
ggplot(dat.m, aes(x=date, y=value)) + geom_line() + facet_grid(variable~., scales="free_y")
答案 2 :(得分:1)
雅虎财务图表通常是交互式的,您可以在其中移动时间窗口和其他功能。为了获得类似的交互效果,我建议使用googleVis包。这些图表是在Web浏览器中创建的,因此您可以与它们进行交互。尝试:
install.packages("googleVis");library(googleVis);demo(googleVis)
弹出的第8个图是时间序列的图。 但这不是ggplot。
答案 3 :(得分:0)
Ista使用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")))