0

私は、 latticeExtrac.trellisを使用して結合したい 2 つのトレリス オブジェクトを持っています(2 つの図はここからダウンロードできます)。以下に示すように、結果のプロットは最初の Figure からの目盛りラベルを継承しますが、2 番目の Figure からのラベルは破棄されます。を使用するときに、異なる y 軸の目盛りラベルを保持することは可能ですか?c.trellis

library(latticeExtra)

rsq_plt <- readRDS("rsq.rds")
err_plt <- readRDS("err.rds")

latticeExtra:::c.trellis(rsq_plt, err_plt, layout = c(1, 2))

プロット

4

1 に答える 1

0

記録として、トレリス プロットの包括的なカスタマイズ オプションのおかげで、ようやく適切なソリューションを思いついたようです。scales実行する前に上部のプロットを無効にして (scales = list(draw = FALSE)ファイル 'rsq.rds' がオンラインで変更されていることに注意してください) c.trellis、その後update、カスタマイズされた y 軸を使用して結合されたプロットを -ing すると、問題が解決しました。

## combine plots and increase left padding
plt <- latticeExtra:::c.trellis(rsq_plt, err_plt, layout = c(1, 2))
plt <- update(plt, 
              scales = list(draw = FALSE), 
              par.settings = list(
                layout.widths = list(left.padding = 6, right.padding = 0), 
                layout.heights = list(top.padding = 0, bottom.padding = 0)
              ))

## custom panel.axis
panel.fun <- function(...) {

  # allow to draw labels outside panel
  trellis.par.set("clip", list(panel = "off", strip = "off"))

  # add upper y-axis
  if (panel.number() == 1) {
    panel.axis("left", at = 1, tck = .5, outside = TRUE,
               labels = expression("r"^2))
    panel.abline(v = 1, lty = 3, lwd = 1, col = "red")
    panel.dotplot(lwd = .5, ...)
  }

  # add lower y-axis
  if (panel.number() == 2) {
    panel.axis("left", at = 2:4, outside = TRUE, tck = .5,
               labels = c("MAE", "ME", "RMSE"))
    panel.abline(v = 0, lty = 3, lwd = 1, col = "red")
    panel.dotplot(..., lwd = 0.5)
  }
}

## apply custom axes
update(plt, panel = panel.fun)

解決

于 2016-02-18T15:16:31.700 に答える