2

y 軸が上から始まり、下に行く (つまり、上が最小値、下が最大値) 格子パッケージを使用して等高線図を作成したいと思います。以下を変更すると:

contourplot(Male ~ Age * Year, data=this.ds)

contourplot(Male ~ Age * rev(Year), data=this.ds)

その後、グラフは正しくプロットされますが、y 軸の目盛りラベルは反転しません。(つまり、やはり一番下から始めて一番上に行きます。) - (完全に再現可能な例については、メッセージの最後を参照してください。)

答えには「スケール」リストオブジェクトの使用が含まれると思います(したがって、これには1行の解決策があると思います)が、それが何であるかはわかりません。

助けてください、ジョン

完全に再現可能な例:

library(lattice)
attach(environmental)
ozo.m <- loess((ozone^(1/3)) ~ wind * temperature * radiation,
           parametric = c("radiation", "wind"), span = 1, degree = 2)
w.marginal <- seq(min(wind), max(wind), length.out = 50)
t.marginal <- seq(min(temperature), max(temperature), length.out = 50)
r.marginal <- seq(min(radiation), max(radiation), length.out = 4) 
wtr.marginal <- list(wind = w.marginal, temperature = t.marginal,
                              radiation = r.marginal) 
grid <- expand.grid(wtr.marginal) 
grid[, "fit"] <- c(predict(ozo.m, grid))

いつものようにプロット:

contourplot(fit ~ wind * temperature, data = grid,
              cuts = 10, region = TRUE,
              xlab = "Wind Speed (mph)",
              ylab = "Temperature (F)",
              main = "Cube Root Ozone (cube root ppb)")

温度で rev() 関数を使用する:

contourplot(fit ~ wind * rev(temperature), data = grid,
            cuts = 10, region = TRUE,
            xlab = "Wind Speed (mph)",
            ylab = "Temperature (F)",
            main = "Cube Root Ozone (cube root ppb)")

detach()

y(温度)軸のラベルとy軸の値が逆になるようにしたいと思います。(つまり、60、70、80、90 ではなく、下から上に 90、80、70、60 と表示されます)

4

2 に答える 2

2

よりクリーンな解決策は、y 軸の範囲を指定する長さ 2 のベクトルの順序を逆にすることです。設定ylim=rev(range(temperature))は十分に機能しますが、元のレイアウトにより正確に一致するプロットの場合は、 を使用extendrange()して、わずかに大きな範囲をプロットすることをお勧めします。

## OP's example figure
a <- contourplot(fit ~ wind * temperature, data = grid,
                 cuts = 10, region = TRUE,
                 xlab = "Wind Speed (mph)",
                 ylab = "Temperature (F)",
                 main = "Cube Root Ozone (cube root ppb)")

## Same figure with the y-axis reversed 
b <- update(a, ylim = rev(extendrange(temperature, f=0.01)))

## Plot figs side-by-side to check that that worked
library(gridExtra)
grid.arrange(a, b, ncol=2)

(update()上記では変更された を追加するために使用しましたylimが、元の呼び出しでそれを提供することもできcontourplotます。元のプロットと変更されたプロットを直接比較したいので、この方法でのみ行いました。)

ここに画像の説明を入力

于 2016-06-12T17:39:00.913 に答える
1

引数labelsで y 軸の反転を試みることができます。scales

library(lattice)
contourplot(fit ~ wind * rev(temperature), data = grid,
            cuts = 10, region = TRUE,
            xlab = "Wind Speed (mph)",
            ylab = "Temperature (F)",
            main = "Cube Root Ozone (cube root ppb)",
            scales = list(y = list(
              labels = seq(from = 100, to = 60, by = -10))))

正直なところseq(from = 90, to = 60, by = -10)、うまくいくはずだと思っていましたが、ラベルが付けられました80, 70, 60, NA

于 2013-09-07T19:19:07.363 に答える