2

*.Rnw.log で次のエラーが発生します。

Error:  chunk 3 (label=printgraph) 
Error in grid.Call.graphics("L_text", as.graphicsAnnot(x$label), x$x,  : 
  Metric information not available for this family/device 

Lyx のみで、ステートメントに応じて

+ scale_y_log10(ylim=c(0.025,5)) 

次のサンプル コードで:

<<Code, tidy=T, sanitize=TRUE>>= 
require(ggplot2)
df.qdf=data.frame(T     =     c(0    ,1,2  ,0    ,1.5,2.5)
                 ,q.500 =     c(0.025,2,1  ,0.025,  4,2  )
                 ,q.025 = 0.5*c(0.025,2,1  ,0.025,  4,2  )
                 ,q.975 = 1.5*c(0.025,2,1  ,0.025,  4,2  )
                 ,Occasion  = c(    1,1,1  ,2    ,  2,2  )
                 )
theme_set(theme_bw())
Graph=(qplot(T,q.500,data=df.qdf) 
      +geom_smooth(aes(ymin=q.025,ymax=q.975)
                  ,data=df.qdf
                  ,stat='identity'
                  ,fill='blue') 
      +ylab('Response')
      +xlab('Time [h]')
      +facet_grid(facet=.~Occasion)
      ) +scale_y_log10(ylim=c(0.025,5))
@

<<printgraph,echo=FALSE,fig=TRUE,width=10,height=7,sanitize=TRUE>>=
print(Graph)
@

  • openSUSE 11.2、
  • TeXlive2010, (今日の時点でインストールされているすべてを更新),
  • R バージョン 2.12.1 (2010-12-16) svn rev 53855 (x86_64-unknown-linux-gnu) with update.packages() 本日現在、
  • LyX 1.6.8 (TeXLive 更新後に再構成)、
  • Yihui Xie のスクリプト ('http://gitorious.org/yihui/lyx-sweave/blobs/raw/master/lyx-sweave-config.R') に従って構成された 2010 年 12 月 18 日の pgfSweave (Yihui に感謝します!)

コードは正常に動作します

  1. rkwardのRコマンドウィンドウに貼り付けたとき。
  2. コメントアウトするとlyxで+scale_y_log10(ylim=c(0.025,5))

私はすでに試しました

sanitize=TRUE
options(device = function(...) {     .Call("R_GD_nullDevice", PACKAGE = "grDevices") })

dev.off() 

( http://www.inside-r.org/questions/problems-ggplot-and-pgfsweaveで提案)

これはどれも役に立ちません。お願いします!

4

1 に答える 1

5

これは直接的に私のせいであることを告白しなければなりません (間接的には Sweave のせいかもしれません)。Rの文書化されていない `` null graphics device'' について、私はあまりにも大胆で楽観的だったので、Cameron は私に惑わされました:

http://yihui.name/en/2010/12/a-special-graphics-device-in-r-the-null-device/

このヌル デバイスは Sweave を少し高速化し、不要なグラフィック ファイルの生成を回避できますが、すべてのグラフィック システムを処理することはできないようです。私がその解決策を書いたとき、私は注意深くテストしませんでしたggplot2(つまり、グリッドグラフィックス)。

> .Call("R_GD_nullDevice", PACKAGE = "grDevices")
ヌル
> 印刷(グラフ)
grid.Call.graphics("L_text", as.graphicsAnnot(x$label), x$x, のエラー:
  このファミリ/デバイスのメトリック情報は利用できません
> dev.off()
ヌル デバイス
          1

とりあえず、これを Sweave ドキュメントの最初のコード チャンクに入れることができます。

オプション (デバイス = pdf)

これにより、冗長な PDF ファイル ( Rplots.pdf) が表示されますが、問題を解決することができます。

後で pgfSweave の作成者または Sweave の作成者と話し合います。これは Sweave では簡単に改善できるように見えますが、この問題は長年にわたって存在していました。

于 2011-01-16T20:09:54.487 に答える