2

どちらも同じ主軸に関連しているが、副軸が異なる 2 つのデータ ポイントのセットがあります。ggplot2 を使用して R でそれらを重ねてプロットする方法はありますか?

私が探しているのは、基本的に次のようなものです。

4+ |
 | | バツ 。+ 220
3+ . . | |
 | | × |
2+。+ 210
 | | × |
1+ . xx |
 | | + 200
0+-+-+-+-+-+-+
     時間   

   . 温度
   ×車の販売

(これは可能なデータの単なる例です)

4

2 に答える 2

6

シェーンの答え「ggplot2ではできない」は、不完全であれば正しいです。おそらく、それはあなたがやりたいことではありません。Y 軸のスケーリング方法をどのように決定しますか? 線の平均を同じにしますか? 範囲?それを行うための原則的な方法はなく、結果をあなたが望むように見せるのはあまりにも簡単です. 代わりに、特にそのような時系列で、2 行のデータを正規化して、t の特定の値、多くの場合 min(t)、Y1 = Y2 = 100 になるようにすることをお勧めします。以下に例を示します。私はBonddad ブログから抜け出しました(ggplot2 を使用していないため、これが見苦しいのです!)。しかし、基になるスケールがまったく異なる 2 つの線の相対的な増加と減少をはっきりと伝えることができます。

代替テキスト

于 2009-10-09T18:45:10.450 に答える
5

私はこれの専門家ではありませんが、これはラティスでは可能ですが、ggplot2 では可能ではないことを理解しています。 第 2 軸プロットの例については、 このリーナーのブログ投稿を参照してください。この質問に対する Hadley の回答も参照してください

格子でそれを行う方法の例を次に示します ( Gabor Grothendieckから):

library(lattice)
library(grid)  # needed for grid.text

# data

Lines.raw <- "Date  Fo  Co
6/27/2007  57.1  13.9
6/28/2007  57.7  14.3
6/29/2007  57.8  14.3
6/30/2007  57  13.9
7/1/2007  57.1  13.9
7/2/2007  57.2  14.0
7/3/2007  57.3  14.1
7/4/2007  57.6  14.2
7/5/2007  58  14.4
7/6/2007  58.1  14.5
7/7/2007  58.2  14.6
7/8/2007  58.4  14.7
7/9/2007    58.7 14.8
"

# in reality next stmt would be DF <- read.table("myfile.dat", header = TRUE)
DF <- read.table(textConnection(Lines.raw), header = TRUE)
DF$Date <- as.Date(DF$Date, "%m/%d/%Y")

par.settings <- list(
        layout.widths = list(left.padding = 10, right.padding = 10),
        layout.heights = list(bottom.padding = 10, top.padding = 10)
)

xyplot(Co ~ Date, DF, default.scales = list(y = list(relation = "free")),
        ylab = "C", par.settings = par.settings)

trellis.focus("panel", 1, 1, clip.off = TRUE)
  pr <- pretty(DF$Fo)
  at <- 5/9 * (pr - 32)
  panel.axis("right", at = at, lab = pr, outside = TRUE)
  grid.text("F", x = 1.1, rot = 90) # right y axis label
trellis.unfocus()
于 2009-10-09T18:27:21.577 に答える