0

私は文字通りこれについて私の心を失っているので、いくつかのポインタまたはいくつかの経験の洞察を期待して、関数が gbm.plot 関数からきれいな単純なラインプロットを吐き出すように適切な値を設定するために丸 2 日間試みてきました (packages dismo & gbm)。

ここから始めます。ボックスをオフにして、左と下の軸のみを残します。Gbm.plot は通常、説明変数ごとに 1 つのプロットを吐き出すため、通常は 6 つのプロットなどですが、変数ごとに 1 つ実行してループするように調整しています。ループと他の多くのコードを削除したので、何が起こっているのかを簡単に確認できます。

png(filename = "whatever.png",width=4*480, height=4*480, units="px", pointsize=80, bg="white", res = NA, family="", type="cairo-png")
par(mar=c(2.6,2,0.4,0.5), fig=c(0,1,0.1,1), las=1, bty="n", mgp=c(1.6,0.5,0))
  gbm.plot(my_gbm_model,
         n.plots=1,
         plot.layout = c(1,1),
         y.label = "",
         write.title=F,
         variable.no = 1, #this is part of the multiple plots thing, calls the explanatory variable
         lwd=8,  #this controls the width of the main result line ONLY
         rug=F)
dev.off()

初期状態はこんな感じ

というわけで、開始条件はこんな感じ。目的: 軸と目盛りを太くします。それでおしまい。

入れても何も"lwd=20"parません。

に追加axes=Fするgbm.plot()と、軸とその番号がオフになります。gbm.plotしたがって、これらの軸の制御はではなくによって処理されると結論付けparます。ここで、イライラしてがらくたになります。検索から受け入れられた知恵は、lwdこれを制御する必要があると言いますが、上記のメモに従って、揺れる中心線のみを制御します. だから多分私はに追加できaxis(side=1, lwd=8)ますgbm.plot()か?

「スムーズ·クリミナル」

それは実行されますが、不可解なことにスムーザーが追加されます! (これは非常に薄く、ウェブ上では見にくいですが、そこにあることを約束します)。次の警告が追加されます。

In if (smooth & is.vector(predictors[[j]])) { ... :
  the condition has length > 1 and only the first element will be used

わかりました、R は理由がないように見えますが、リークが発生したらプラグを差し続けます。以前と同じように軸を使用し、スムーズ化をオフにした新しいコード:

png(filename = "whatever.png",width=4*480, height=4*480, units="px", pointsize=80, bg="white", res = NA, family="", type="cairo-png")
    par(mar=c(2.6,2,0.4,0.5), fig=c(0,1,0.1,1), las=1, bty="n", mgp=c(1.6,0.5,0))
      gbm.plot(my_gbm_model,
             n.plots=1,
             plot.layout = c(1,1),
             y.label = "",
             write.title=F,
             variable.no = 1,
             lwd=8,
             rug=F,
             smooth=F,
             axis(side=1,lwd=8))
    dev.off()

エラーが発生します:

Error in axis(side = 1, lwd = 8) : plot.new has not been called yet

plotから軸に影響を与えることはできず、 で軸をparオフにできるので、明らかに軸を描画していplotます。私はやりたいことをして、1 つの軸を太字にすることができますが、その結果、よりスムーズになり、警告が表示されます。スムーザーをオフにすることはできますが、plot.new呼び出されていないと表示されるため失敗します。そして、これは私が対処しなければならない他の軸を考慮していませんplot.new.2つの軸を順番に呼び出してスムーズにすることもできます.

私はここで大きな冗談を言っているのでしょうか、それとも明らかな何かが欠けていますか? par がすべてのプロットの前にあるはずであることを理解するのに十分な時間がかかりました.pngなどでそれらを出力している場合をpng除きplotます?par。私は怒鳴って話題から外れるのを知っています、申し訳ありませんが、ええ、丸2日です。これは、R でのプロットに関するすべての経験でしたか?

冷凍庫のウォッカを開けます。完全な再現可能なコードをここに記載していないことを感謝します。申し訳ありませんが、絶対に必要な場合は実行できますが、再現可能な段階に到達するのは非常に時間がかかるため、誰かが基本的な論理/コーディングの失敗が叫んでいるのを見ることができることを願っています.私が与えたものからそれらを。

みんなありがとう。

編集: 再現性コア データ csv: https://drive.google.com/file/d/0B6LsdZetdypkWnBJVDJ5U3l4UFU (以前にこれらのデータを再現可能にしようとしましたが、その方法がわかりません) サンプル<-読み取り。 csv("data.csv", header = TRUE, row.names=NULL) my_gbm_model<-gbm.step(data=samples, gbm.x=1:6, gbm.y=7, family = "bernoulli", tree .complexity = 2、learning.rate = 0.01、bag.fraction = 0.5))

4

1 に答える 1