2017-11-13 13 views
0

ここに間違いが見込まれますか? ggsaveが動作しますが、png(file=file)部分ではありません。空白の画像が保存されます。光沢のあるドットチャートを保存

output$savePlotAmount <- downloadHandler(
    filename = "amount.png", 
    content = function(file) { 
     if(input$plotType == "dot"){ 
     png(file = file) 
     plotAmount() 
     dev.off() 
     }else{ 
     ggsave(plotAmount(), filename = file) 
     } 

    }) 

私は修理に「時間」を費やしましたが、何が起こっているのかわかりません。この例は再生産可能ではありませんが、すべてのアプリを再生産することは難しいです。

EDIT: plotAmount()何ですか:

plotAmount <- reactive({ 
    if(input$plotType == "violin") { 
     plotAmount <- ggplot(values$x, aes_string(x = input$groupedBy, y = input$yVariableContinous)) + 
     geom_violin() + 
     ggtitle(paste0(input$yVariableContinous, " grouped by ", input$groupedBy)) + 
     scale_y_continuous(limits = c(0, quantile(values$x[,input$yVariableContinous] , 0.95, na.rm = T))) 
    } 
    if(input$plotType == "boxplot") { 
     plotAmount <- ggplot(values$x, aes_string(x = input$groupedBy, y = input$yVariableContinous)) + 
     geom_boxplot(outlier.shape = NA) + 
     ggtitle(paste0(input$yVariableContinous, " grouped by ", input$groupedBy)) + 
     scale_y_continuous(limits = c(0, quantile(values$x[,input$yVariableContinous] , 0.95, na.rm = T))) 
    } 
    if(input$plotType == "dot") { 
     var <- ifelse(input$groupedBy == 1, input$xVariable, input$groupedBy) 
     agregat <- aggregate(x = values$x[,input$yVariableContinous], by = list(g = values$x[,var], xx = values$x[,input$xVariable]), FUN = input$valueAs) 
     dotchart(agregat$x, labels = agregat$xx, 
       groups = as.factor(agregat$g), 
       color = brewer.pal(9,"Set1")[as.numeric(as.factor(agregat$g))], 
       xlab = "salary", 
       cex = .75, 
       main = paste0(input$yVariableContinous, " for ", input$xVariable, 
          "\ngrouped by ", input$groupedBy), 
       xlim = c(min(values$x[,input$yVariableContinous], na.rm = T), quantile(values$x[,input$yVariableContinous] , 0.95, na.rm = T)), 
       pch = 16 
    ) 
    } 

答えて

0

ggplot2プロットはprint()をレンダリングするためにD」にする必要があります。

+0

ここで 'png(file = file)'の最初の部分はggplotではありません。これはドットチャートです - 基本的な 'plot()'と同じです。そして、 'ggsave(...')の2番目の引数はうまくいきます。 –

+0

'plotAmount()'はggplotオブジェクトですよね、 'print(plotAmount())'を試してください。https://www.rdocumentation.org/packages /ggplot2/versions/2.2.1/topics/print.ggplot –

+0

いいえ、 '$ plotType ==" dot "'なら 'plot()'と同じ 'dotchart()'です。 ggplotです。私は 'plotAmount()'のコードを追加しました –

関連する問題