如何在R中绘制具有相同X轴的两个图表?

时间:2011-02-18 16:15:49

标签: r plot ggplot2

如何在R中使用与ggplot2相同的x轴绘制2个图表?

我正在寻找类似的东西: http://i.stack.imgur.com/B9QT7.png

4 个答案:

答案 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'))

my great graph

你会注意到你根本不需要重新整形数据,因为你明确地制作了两个图,而不是必须使用一个函数来分割数据。而且,这两个图可以是几乎任何东西......就像第二个可能是直方图。此外,您还会注意到,在此代码中,您可以轻松地将相对高度设置为您想要的任何高度。

(这段代码比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")))

enter image description here

相关问题