私はダウンロードボタンを使って光沢のあるプロットを保存する方法を理解しようとしています。このパッケージの例では、.csvを保存するdownloadButton/downloadHandlerを示しています。私はそれに基づいて再現可能な例を作るつもりです。 server.R
光沢のあるアプリで作ったプロットを保存する
library(ggplot2)
shinyServer(function(input, output) {
datasetInput <- reactive({
switch(input$dataset,
"rock" = rock,
"pressure" = pressure,
"cars" = cars)
})
plotInput <- reactive({
df <- datasetInput()
p <-ggplot(df, aes_string(x=names(df)[1], y=names(df)[2])) +
geom_point()
})
output$plot <- renderPlot({
print(plotInput())
})
output$downloadData <- downloadHandler(
filename = function() { paste(input$dataset, '.csv', sep='') },
content = function(file) {
write.csv(datatasetInput(), file)
}
)
output$downloadPlot <- downloadHandler(
filename = function() { paste(input$dataset, '.png', sep='') },
content = function(file) {
ggsave(file,plotInput())
}
)
})
についてはui.R
shinyUI(pageWithSidebar(
headerPanel('Downloading Data'),
sidebarPanel(
selectInput("dataset", "Choose a dataset:",
choices = c("rock", "pressure", "cars")),
downloadButton('downloadData', 'Download Data'),
downloadButton('downloadPlot', 'Download Plot')
),
mainPanel(
plotOutput('plot')
)
))
については
あなたはこの質問に答えるしている場合、あなたはおそらくこれに精通しているが、この作業を取得するために、別々のスクリプトに上記を保存します( ui.R
およびserver.R
を作業ディレクトリ内のフォルダ(foo
)に追加します。光り輝くアプリケーションを実行するには、runApp("foo")
を実行してください。
ggsave
を使用すると、ggsaveがfilename
機能を使用できないことを示すエラーメッセージが表示されます(私は思う)。標準のグラフィックスデバイス(下記参照)を使用すると、Download Plot
はエラーなく動作しますが、グラフィックは書き込まれません。
downloadHandlerがプロットを書くのに役立つヒントをいただければ幸いです。
私はあなたの答えは実際にここで正しいと思います。デバイス(ラッパー)関数を作成する代わりに 'ggsave(file、plotInput()、device = png)'を使うこともできます。 –
@sebkopf私は途中であなたの答えを忘れてしまいました。 – alexwhan
@Yihuiこのソリューションは私にとってはうまくいかない:Rバージョン3.1.0、ggplot2_1.0.0 shiny_0.10.1。保存ボックスがポップアップし、保存をクリックしますが、ファイルは保存されません。誰でも確認できますか? – zx8754