3

SO は通常、バグの解決に使用されることはありませんが、これは特に単純で特に迷惑な動作を示します。ggplot2ユーザーなら10秒以内で再現できます。

この GitHub の問題: ggplot_gtable が空白の表示を作成すると言うように、次のコードは

library(ggplot2)
stat = qplot(Sepal.Length, Petal.Length, data = iris, color = Species)
ggplot_gtable(ggplot_build(stat))

空のデバイスが生成されます。ggplot2はグラフィック ライブラリであるため、一部のコマンドはグラフィック デバイスを起動して、関連するプロットを表示できることに注意してください。具体的には、実行ggplot_build(stat)するだけでプロットが表示されます。しかし、それはこの動作を説明していません。

これをデバッグする方法がわかりません (print ステートメントは実際には適切でも有用でもないようです)。ggplot2開発コミュニティは休暇中か何かのようです。経験豊富なRユーザーがこれを効果的にデバッグする方法について提案できる場合は、感謝します。これは些細なことですが、信じられないほど厄介なバグです。スニペットのように見えるコードを実行するたびに、ディスプレイがフォーカスを切り替える空のデバイスが表示されるため、続行する前にそれをクリックする必要があります。

私がひどく間違ったことをしている可能性があり、このバグを再現できるのは私だけです。また、想像できない何らかの理由で、これが正常な動作である可能性もあります。これらのいずれかが正しいと思われる場合は、お知らせください。

Debian スクイーズで ggplot2 0.9.3.1 (最新リリース) を使用しています。

4

4 に答える 4

2

@G.Grothendieck からのこの回避策を使用して R-Help で 3 年前からこのスレッドに関連しているのだろうか (コピーされた資料が続きます)

https://stat.ethz.ch/pipermail/r-help/2010-December/263754.html

library(lattice)
library(zoo)

df <- data.frame(y = matrix(rnorm(24), nrow = 6), x = 1:6)
xyplot(zoo(df[1:4], df$x), type = "p")

plot.object <- xyplot(zoo(df[1:4], df$x), type = "p") 
# problem: a Quartz device is opened (on Mac OS X 10.6)

グロタンディークはそれに応えて次のように書いた:

これにより、Windows でもウィンドウが開きます。ラティスが trellis.par.get を発行すると、ラティス内で発生します。回避策は、null に向けられたデバイスを開くことです。Windows ではこれでうまくいきます。「/dev/null」を使用すると、マシンで動作すると思います。

png("NUL")
plot.object <- ...
dev.off()
于 2013-06-09T21:07:58.140 に答える
-1

問題は「color = Species」が原因のようです。「group = Species」に置き換えると、空白の表示デバイスはなくなります。

于 2013-08-01T06:01:53.913 に答える