2017-12-07 29 views
0

のタイプ "表面"のプロット画像を自動的に保存する方法これは私の最初の質問stackoverflow内であり、私は便利なヒントとソリューションを前に何度も助けてくれてありがとう!しかし数週間以来、私は解決できなかった問題を抱えており、同様にwwwの中で解決策を見つけることができませんでした。私は測定された3Dデータを使って作業し、データをイメージングするためのコードを設定しようとしています。そのため私はこれまでパッケージをプロットして使用しています。しばらくすると、私はそれを働かせ、結果は私にとって大丈夫です。次に、いくつかの測定サンプルがあるため、ループ内で実装しました。ドキュメンテーションの問題については、各サンプルのイメージを保存する必要があり、自動化された方法では動作しません。現時点ではループはうまく走り、RStudioには3D-Plotly-Viewerのサブウィンドウがあります。私は手動で各サンプルを保存する必要があり、これには多くの時間がかかります。だから私はそれを自動化しようとしましたが、成功しませんでした。 (スケールバーが示されている?) Result imageさらにそこビューアに示すようなループでこれを実施した結果、表面ない画像であるR(webGLの問題)

library(plotly) 
zz <- data.frame(c(0,0,0,0,0),c(0.1,.2,.4,.2,.1),c(0.2,.4,.8,.4,.2),c(0.1,.2,.4,.2,.1),c(0,0,0,0,0)) 
zz <- cbind(t(zz),rep(NA,length(zz[,1]))) 
xx <- rep(seq(-1,1.5,.5),5) 
print(plot_ly(z=zz,x=xx, type="surface")) 

# My simple way, which doesn´t work. 
# Storing in the working directory 
export(p = last_plot(), file = "plotly.png") 

:問題は、以下の簡単なコードで示されていますテキストヒントです。「WebGlはブラウザでサポートされていません - 詳細はhttp://get.webgl.orgにアクセスしてください。このページを訪問すると、私のブラウザがWebGL(Mozilla Firefox)をサポートしているという情報が得られます。

私の提案:「エクスポート」でエクスポートしている間、htmlファイルが作業ディレクトリ内に短時間表示されます。イメージファイルが表示される直前に数秒後に削除されます。私はこれがwebshot-package(またはそれに接続されたもの)を使用するかどうかに関係していることをお勧めします。処理中にhtmlファイルのコピーを保存し、ブラウザで開いた。これはちょうど空のウィンドウで、ツールバーは右上隅にプロットして表示されます(webGLはブラウザで動作するようですが)。たぶんwebshotパッケージ内で無効になっている設定がありますか?それは権利の問題(私は管理者ではない)か、グラフィックカード(インテル®HD-Grafik 4600)のバグですか?濁った水の中に - 私の釣り..

編集:
OS:Win7のプロフェッショナルSP1
RStudio:バージョン0.99.902(Mozillaの/ 5.0(Windows NTの6.1; WOW64)のAppleWebKit/538.1(KHTML、ヤモリなど) rstudio Safari/538.1 Qt/5.4.1)
ブラウザ:Firefox Quantum 57.0(32ビット)

これを解決する方法はありますか?私は自動的にプロットビューアから画像を保存したいと思います。どんな解決策もありがたいです!

敬具 ステファン

+0

質問に情報を追加してください。どのブラウザとバージョンを使用していますか? RStudioを使用していますか?どのOS? –

+0

ヒントのおかげで、私はポストを編集しました。その他の情報は必要ですか? –

+0

RStudioを最新のバージョンにアップデートし、ブラウザでhttps://plot.ly/python/webgl-vs-svg/を開いてみてください。リンクを開くことができれば、お使いのコンピュータが一般的にPlotlyとWebGlを処理できることがわかります。 –

答えて

0

私はあなたの例を試してみましたが、私はあなたが得るのと同じエラーを得ることはありません。 PhantomJSが必要ですので、Rはplotlyとプロットされているプロットの「印刷画面を取る」ことができ、他のパッケージが必要だと思います。私にとってこの作品は、それはあなたのコンピュータで動作するかもしれませんが、私は3D plotlyプロットをエクスポートするコメントで言ったように痛みがある(なぜあなたが表示されます):あなたのアドバイスのための

library(plotly) 
zz <- data.frame(c(0,0,0,0,0),c(0.1,.2,.4,.2,.1),c(0.2,.4,.8,.4,.2),c(0.1,.2,.4,.2,.1),c(0,0,0,0,0)) 
zz <- cbind(t(zz),rep(NA,length(zz[,1]))) 
xx <- rep(seq(-1,1.5,.5),5) 
print(plot_ly(z=zz,x=xx, type="surface")) 

if (requireNamespace("RSelenium")) { 
    rD <- RSelenium::rsDriver(browser = "chrome") 
    export(last_plot(), "plot.png", rD) 
} 
0

こんにちは、再び最初のおかげ。私はあなたの順応したコードに従って遊んだ。しかし残念ながら私はまだ画像を保存することに問題があります。

私は(権限の問題を除外するために、Win10、更新のFirefoxブラウザだけでなく、クロム、最新のRStudio)私の プライベートシステムでまだ終わって何


- インストール「webshot」と「RSelenium」パッケージ
- システムにPhantomJSをインストールしました。
- @Alejandro Andradeに従ってコードを適用する

まず、何かを読み込んでエラーが発生するまでに時間がかかります。しかし、それはすでにクロムウィンドウを開きます。それは空のまま "データ;アドレスバーに私はリンクされたブラウザをchromeの代わりにfirefoxに切り替えました。さらに、私はRSeleniumコールで特定のポートを提供します。私は完全にそのパッケージには含まれていないと言いますが、ポート - > "ポートXXXXはまだ開いています"を変更しないと、エラーを表示します。ブラウザを変更しても成功には至りません。以下のRStudio-Outputの "chrome"を使用して表示されるエラーコードを参照してください。私が紛失していることはありませんか?多分私のデータは問題ですか?

BTW: "rgl"パッケージからpersp3dで匹敵するイメージを取得しようとしている間に、なぜ私がプロットしているのか再度考え出しました。ここで、z値が割り当てられるy座標およびx座標は、それぞれz列およびz行の長さに予め設定される。しかし、私のデータセットでは、少なくとも1つのテーマが可変であるため、定義されたタイムステップ(x座標)と可変位置(各タイムステップは他のy座標とは異なります)にz値を割り当てます。このエラーは別の理由で発生しているので、ここでは私の例にはまだ含まれていません。プロットよりも別の解決方法がある場合、私はこれを回避する準備ができています。ゆっくりplotlyや画像を保存して立ち往生 - 私.. :(

ライブラリ(plotly)ZZ < - data.frame(C(0,0,0,0,0)、C(0.1 (0.2、.4、.8、.2)、c(0.1、.2、.4、.2、.1)、c 0,0,0,0,0)) zz < - cbind(t(zz)、rep(NA、length(zz [、1])))xx < - rep(seq(-1,1.5 ,. 5)5)プリント(plot_ly(Z = ZZ、X = XX、タイプ= "表面"))
IF(requireNamespace( "RSelenium")){
+ rDが< -RSelenium :: rsDriver(ブラウザ=」クロム "、ポート= 4448L)
+ export(last_plot()、" plot.png "、rD)
+} Seleniumサーバーバージョンをチェック:BEGIN:PREDOWNLOAD開始:ダウンロード開始:POSTDOWNLOADチェックchromedriverバージョン:
開始:PREDOWNLOAD開始:ダウンロード開始:POSTDOWNLOADは をチェックgeckodriverバージョン:BEGIN:PREDOWNLOAD開始:ダウンロード開始: POSTDOWNLOADチェックphantomjsをバージョン:BEGIN:PREDOWNLOAD
はBEGIN:DOWNLOADはBEGIN:POSTDOWNLOAD

[1] $ applicationCacheEnabled "リモートサーバーへの接続" [1] FALSE

回転可能$ [1] FALSE

$ mobileEmulationEnabled [1] FALSE

$ networkConnectionEnabled [1] FALSE

$クローム$クロムの$ chromedriverVersion [1]「2.34。522940 (1a76f96f66e3ca7b8e57d503b4dd3bccfba87af1)」

$クロム$ userDataDir [1] "C:" MY USERNAME "\のAppData \ローカル\一時\のscoped_dir4944_16134"

$ takesHeapSnapshot \ \ユーザー[1] TRUE

$ pageLoadStrategy [1] "ノーマル"

$ databaseEnabled [1] FALSE

$ handlesAlerts [1] TRUE

$ hasTouchScreen [1] FALSE

$バージョン[1] "62.0.3202.94"

$プラットフォーム[1]の "Windows NT"

$ browserConnectionEnabled [1] FALSE

$ locationContextEnabled nativeEvents [1] TRUE

$ acceptSslCerts [1] TRUE

$ [1] TRUE

$ webStorageEnabled [1] TRUE

$ browserName [1] "クローム"

$ takesScreenshot [1] TRUE

$ javascriptEnabled [1] TRUE

$ cssSelectorsEnabled [1 ] TRUE

$ setWindowRect [1] TRUE

$ unexpec tedAlertBehaviour [1] ""

$番号[1] "773ac2fc888a773c98c926fe082961a3"

がas.data.frame.defaultにデバッグエラーとトレースバック再実行を隠す([I] X = TRUEオプション): ( "("クラス "c" "rsClientServer"、 "environment") "をdata.frameに強制することはできませんクラス"
ドメイン= NA)
5. as.data.frame.default(x [[i]]、optional = TRUE)
4. as.data.frame(x [[i]]) 、オプション= TRUE)
3. data.frame(url = url、file = file、vwidth = vwidth、vheight = vheight)
2. webshot :: webshot(f、file、...)
1. export(last_plot() 、 "plot.png"、rD)