2017-07-08 1 views
4

Die Breite eines Plots ist weniger als die Hälfte, wenn ggplotly vs plot_ly verwendet wird, um eine Ploty in einer glänzenden App zu generieren. Warum das? Gibt es eine Möglichkeit, es zu beheben, so dass ggplotly das Diagramm mit der gleichen Breite wie plot_ly oder ggplot2 erzeugt? Ich habe versucht, den width-Parameter zu verwenden, aber das behebt es nicht.Auf glänzenden app ggplotly() rendert die Hälfte der Größe von plot_ly(). Wie behebt man das?

Ausgabe von der glänzenden App: Photo: output from the shiny app

library(shiny) 
library(plotly) 
library(ggplot2) 

ui <- fluidPage(
    titlePanel("plotly with shiny"), 
     mainPanel(
     h4("Using ggplotly:"), plotlyOutput("ggplotly", width = "200"), 
     h4("Using native plotly:"), plotlyOutput("plotly"), 
     h4("Using ggplot:"), plotOutput("ggplot") 
    ) 
) 

server <- function(input, output) { 
    data <- reactive({ 
    d = diamonds[sample(nrow(diamonds), 300),] 
    }) 
    output$ggplot <- renderPlot({ 
     ggplot(data(), aes(x=carat, y=price, color=price)) + geom_point() 
    }) 
    output$ggplotly <- renderPlotly({ 
    v = ggplot(data(), aes(x=carat, y=price, color=price)) + geom_point() 
    ggplotly(v) 
    }) 
    output$plotly <- renderPlotly({ 
    plot_ly(data(), x = ~carat, y = ~price, color = ~price) 
    }) 
} 

shinyApp(ui = ui, server = server) 

Antwort

1

Verwenden Sie das Argument nicht width von plotlyOutput, und verwenden Sie die eine von ggplotly:

ggplotly(v, width=800) 
+0

Dank Stephane. Das ist für mich in Ordnung. Der einzige Nebeneffekt ist, dass die Größe des Diagramms nicht automatisch geändert wird, wenn die Größe des Browserfensters geändert wird. Ich kann das für jetzt leben. – smes

Verwandte Themen