2

Rターミナルから実行している一連のコマンドで小さな役割を果たすスクリプトを書いています。基本的に、私はPythonスクリプトでデータ操作の多くを行い、次に出力をRスクリプトにパイプしてプロットします。そのため、ターミナルから。のようなコマンドを実行します$python whatever.py | R CMD BATCH do_some_plotting.R。このワークフローはこれまでのところうまく機能していますが、Stackoverflowに関する別のユーザーの質問に対するこの回答に触発されて、同じプロットに複数のヒストグラムをオーバーレイするようになりました。

Rスクリプト内では、プロットコードは次のようになります。

pdf("my_output.pdf")
plot(hist(d$original,breaks="FD",prob=TRUE), col=rgb(0,0,1,1/4),xlim=c(0,4000),main="original - This plot is in beta")
plot(hist(d$minus_thirty_minutes,breaks="FD",prob=TRUE), col=rgb(1,0,0,1/4),add=T,xlim=c(0,4000),main="minus_thirty_minutes - This plot is in beta")

特に、私はを使用しadd=Tています。これは、おそらく2番目のプロットを最初のプロットの上にオーバーレイする必要があることを指定するためのものです。スクリプトが終了すると、 2つのヒストグラムが重ね合わされるのではなく、3つの個別のプロットにタイトルが含まれる3ページのPDFが表示されます。

i) ii)オリジナルのヒストグラムd$original-このプロットはベータ版です iii)のヒストグラム

d$minus_thirty_minutes

ですから、ここで明確にしようとしている2つのポイントがあります。まず、プロットがオーバーレイされていなくても、3ページのPDFではなく、2ページのPDFだけを期待します。誰かが私が3ページのPDFを取得している理由を説明できますか?次に、2つのヒストグラムだけをプロットし、両方を同じプロット(つまり、1ページのPDF)に配置するために、ここで修正を加えることができますか?

私が最初の段落でリンクした他のStackoverflowの質問/回答は、アルファブレンディングがすべてのデバイスでサポートされているわけではないことを述べていたので、これがそれと関係があるかどうか興味があります。Rいずれにせよ、私の問題にベースの解決策があるかどうか、またはデータを別の言語/プロットエンジンにパイプする必要があるかどうかを知ることは良いことです。

4

1 に答える 1

2

問題は、histデフォルトでプロットし、プロットできるヒストグラムオブジェクトを目に見えない形で返すことです。したがって、呼び出しplot(hist(..))はヒストグラムを2回プロットし(の2ページpdf)、add=T2回目の呼び出しで使用すると、4番目ではなく3番目のプロットが作成されます。内でplot = FALSE呼び出しをラップするか、ラップしないかを設定できます。histplot()

これを単一ページのPDFとして機能させるには(Rで2つのヒストグラムを一緒にプロットする方法の例を使用しますか?

set.seed(42)
p1 <- hist(rnorm(500,4), plot=  FALSE)                     # centered at 4
p2 <- hist(rnorm(500,6), plot = FALSE)    
                                             # centered at 6
pdf('foo.pdf')
plot( p1, col=rgb(0,0,1,1/4), xlim=c(0,10))  # first histogram
plot( p2, col=rgb(1,0,0,1/4), xlim=c(0,10), add=T)

dev.off()
于 2012-12-18T05:20:34.860 に答える