私は Sage と R を使用していくつかのデータ分析を行いました。この時点で、結果を適切に提示できるように、結果を要約するための優れた一連のプロットを作成したいと考えています。
私が行ったことは、ドロップダウン メニューでノートブック全体を R に設定することです。次に、いくつかのセルでいくつかのコードを実行します。よく働く。コードを含む最大のセルが画面の大部分を占めています (データベースからデータを取得して変数に格納するための 5 つの大きな SQL 選択)。そのため、一部のコードでは、まったく制限がないように見えます。
今、私はプロットをやっています。まず、次の 2 行でキャンバスを取得します。
png("temp.png", width=1800, height=1000)
par(mfrow=c(2,2))
次に、同じ PNG 内に 4 つのプロットを取得して、うまく圧縮できるようにしたいと考えています。しかし、Sage は 4 つのプロットすべてでプロット結果を表示することを拒否しています。最初の 2 つのプロットがあるだけでうまくいきます (下部に 2 つの空白スペースがあります)。最初の 2 つのプロット、または中間の 2 つのプロット、または最後の 2 つのプロット、または最初と最後のプロットの両方がうまく機能します。しかし、3 つのプロットは機能せず、4 つのプロットも機能しません。
そこで、次のように、もっと単純なことを試しました。
png("temp.png", width=1800, height=1000)
par(mfrow=c(2,2))
plot(1:20)
plot(20:1)
plot(seq(5,15,0.5))
plot(seq(15,5,-0.5))
dev.off()
このコードはうまく機能し、4 つの単純なプロットが得られます。そして、それを拡張して、実際にこのようにプロットして機能させようとしているものに近づけることもできます。
png("temp.png", width=1800, height=1000)
par(mfrow=c(2,2))
plot(1:20)
lines(c(0,500),c(0,0), lwd=1, col="Black", xlab="", ylab="")
par(new=T)
plot(data.frame(seq(0,20), seq(0,20)), type="l", lwd=2, col="Red", axes=F, xlab="", ylab="")
plot(20:1)
lines(c(0,500),c(0,0), lwd=1, col="Black", xlab="", ylab="")
par(new=T)
plot(data.frame(seq(0,20), seq(0,20)), type="l", lwd=2, col="Red", axes=F, xlab="", ylab="")
plot(seq(5,15,0.5))
lines(c(0,500),c(0,0), lwd=1, col="Black", xlab="", ylab="")
par(new=T)
plot(data.frame(seq(0,20), seq(0,20)), type="l", lwd=2, col="Red", axes=F, xlab="", ylab="")
plot(seq(15,5,-0.5))
lines(c(0,500),c(0,0), lwd=1, col="Black", xlab="", ylab="")
par(new=T)
plot(data.frame(seq(0,20), seq(0,20)), type="l", lwd=2, col="Red", axes=F, xlab="", ylab="")
dev.off()
ここまでは順調ですね。自分のデータがどのように機能するかを示したいという私の考えが好きなようです。しかし、私の実際のコードは機能しません。実際のプロット セル (何も表示されません) では次のようになります。
png("temp.png", width=1800, height=1000)
par(mfrow=c(2,2))
smoothScatter(WFr, colramp=colorRampPalette(c("white", "black")), xlab="Julian day", ylab="Residual", xlim=c(175,279), ylim=c(-0.3,0.3), main="Wild Females, model residuals over time")
lines(c(0,500),c(0,0), lwd=1, col="Black", xlab="", ylab="", xlim=c(175,279), ylim=c(-0.3,0.3))
par(new=T)
plot(data.frame(seq(100,299), WFrlm$coef[1]+WFrlm$coef[2]*seq(100,299)), type="l", lwd=2, col="Red", axes=F, xlab="", ylab="", xlim=c(175,279), ylim=c(-0.3,0.3))
smoothScatter(WMr, colramp=colorRampPalette(c("white", "black")), xlab="Julian day", ylab="Residual", xlim=c(175,279), ylim=c(-0.3,0.3), main="Wild Males, model residuals over time")
lines(c(0,500),c(0,0), lwd=1, col="Black", xlab="", ylab="", xlim=c(175,279), ylim=c(-0.3,0.3))
par(new=T)
plot(data.frame(seq(100,299), WMrlm$coef[1]+WMrlm$coef[2]*seq(100,299)), type="l", lwd=2, col="Red", axes=F, xlab="", ylab="", xlim=c(175,279), ylim=c(-0.3,0.3))
smoothScatter(CFr, colramp=colorRampPalette(c("white", "black")), xlab="Julian day", ylab="Residual", xlim=c(175,279), ylim=c(-0.3,0.3), main="Cultured Females, model residuals over time")
lines(c(0,500),c(0,0), lwd=1, col="Black", xlab="", ylab="", xlim=c(175,279), ylim=c(-0.3,0.3))
par(new=T)
plot(data.frame(seq(100,299), CFrlm$coef[1]+CFrlm$coef[2]*seq(100,299)), type="l", lwd=2, col="Red", axes=F, xlab="", ylab="", xlim=c(175,279), ylim=c(-0.3,0.3))
smoothScatter(CMr, colramp=colorRampPalette(c("white", "black")), xlab="Julian day", ylab="Residual", xlim=c(175,279), ylim=c(-0.3,0.3), main="Cultured Males, model residuals over time")
lines(c(0,500),c(0,0), lwd=1, col="Black", xlab="", ylab="", xlim=c(175,279), ylim=c(-0.3,0.3))
par(new=T)
plot(data.frame(seq(100,299), CMrlm$coef[1]+CMrlm$coef[2]*seq(100,299)), type="l", lwd=2, col="Red", axes=F, xlab="", ylab="", xlim=c(175,279), ylim=c(-0.3,0.3))
dev.off()
ここで何が問題なのですか?各プロットは単独では問題なく動作するように見え、ペアで配置すると出力されるのに、4 つすべてで試しても表示されないのはなぜですか? ところで、smoothScatter() の代わりに plot() も試してみましたが、同じです。2 つのプロットを表示しますが、それ以上は表示しません。par(mfrow=c(4,1)) も試しましたが、違いはありませんでした。
最初は、1 つのセルに入れることができる R コードの量に制限があると思っていましたが、私の SQL-select-cells にはプロット セルよりもはるかに多くのコードがあります。それで、Sage が PNG 出力の待機を停止する何らかのタイムアウトがあるのではないかと考えています。ハードドライブで「temp.png」も検索してみましたが、何も表示されません。
Sage でプロットに渡すことができるデータの量に制限はありますか? これをどうにか調整できませんか?または、出力に 4 つのプロットすべてを追加しても何も起こらない理由をよりよく理解するために、何らかのデバッグ モードに入ることができますか?