8

重複の可能性:
2つのグラフエッジを左揃え(ggplot)

で作成された2つのプロットをggplot同じページの上部と下部に配置して、幅が同じになるようにしようとしています。データは同じ時系列からのものであり、x軸は時間であるため、同じ時間のデータポイントが相互に水平方向にシフトしないことが重要です。grid.arrangeパッケージgridExtraから試しました:

grid.arrange(p1, p2)

ただし、y軸ラベルの幅が異なるため、プロットの幅は異なります。同様の問題を扱っているこの投稿を見ましたが、その情報を自分の問題を解決するために適用することはできませんでした。

ここに画像の説明を入力してください

4

2 に答える 2

12

のヘルプテキストは次のようにgrid.arrange述べています。

Arguments:

     ...: plots of class ggplot2, trellis, or grobs, and valid
          arguments to grid.layout

したがって、読むことは次のことgrid.layoutにつながります。

Arguments:

    nrow: An integer describing the number of rows in the layout.

    ncol: An integer describing the number of columns in the layout.

  widths: A numeric vector or unit object describing the widths of the
          columns in the layout.

 heights: A numeric vector or unit object describing the heights of the
          rows in the layout.

つまり、幅と高さをベクトルとして渡すことができます。 grid.arrange(p1, p2, heights=c(1, 2)。または例として:

dat <- data.frame(x=1:10, y=10:1)
q1 <- qplot(x, y, data=dat)
q2 <- qplot(y, x, data=dat)
q3 <- qplot(x, y, data=dat, geom='line')
q4 <- qplot(y, x, data=dat, geom='line')

grid.arrange(q1, q2, q3, q4, heights=1:2, widths=1:2)

melt同様の効果は、reshape2パッケージやfacet_wrapfacet_gridを使用して達成できる場合が多いことにも言及する価値がありますggplot2

于 2013-01-29T19:12:48.503 に答える
1

私のコメント(そして@Justinの回答の真ん中にあるコメント)によるfacet_wrapと、行く方法かもしれません。下の画像のようなものを生成します。明らかに、色、凡例、そしておそらく要因の順序をいじくり回す必要がありますが、一般的なアプローチを見ることができます。コードは画像の後に続きます。

スクリーンショット

library(ggplot2)
library(reshape)

mydf <- data.frame(day = 1:10,
                   upper1 = runif(10, 10000, 20000),
                   upper2 = runif(10, 15000, 16000),
                   lower1 = runif(10, 1, 10),
                   lower2 = runif(10, 3, 8))

mydf.melt <- melt(mydf, id.var = 'day')
mydf.melt$grouping <- ifelse(mydf.melt$value >= 10000, "upper", "lower")

ggplot(mydf.melt, aes(x = day, y = value, group = variable)) +
       geom_line() +
       facet_wrap(~ grouping, ncol = 1, scales = "free_y")
于 2013-01-30T01:43:18.140 に答える