Problema Sommario: grafici ggplot2 sembrano essere di scarsa qualità a lucido, quando ospitato su shinyapps.io. Gli elementi del grafico contengono difetti visibili, ad es. i punti di geom_point()
non sono rotondi, alcuni sembrano triangoli, altri come rettangoli ecc. La leggenda sembra essere esplosa da un jpg a bassa risoluzione. Il mio esempio è here.ggplot2 qualità grafico in lucido su shinyapps.io
Domanda: ci sono delle opzioni per il controllo grafico di qualità, come ad esempio dpi?
Descrizione dettagliata: elaborare una semplice applicazione Brillante, ho notato che i grafici ggplot sono un po 'agitato attorno ai bordi, ed era incapace di migliorare la situazione. Lo example app lo dimostra abbastanza bene, nota come i puntini sembrano di forma irregolare. La loro forma migliora, approssimando la circolarità, quando aumento lo zoom (in Chrome) al 200% o più. Con lo zoom al 100%, l'intero grafico appare strano e non liscio. Come se quando una risoluzione dell'immagine viene diminuita del fattore 0,77 o qualcosa del genere, si ottengono piccoli artefatti di distorsione; l'effetto simile è qui. Il modo più semplice per vederlo è scaricare l'immagine al 100% di zoom (tasto destro, salva con nome), quindi aumentare lo zoom sulla copia locale. Vedrai come i punti sono lontani dall'essere rotondi. Il codice per server.R
e ui.R
è molto semplice:
# ui.R
shinyUI(fluidPage(
titlePanel("My Shiny App"),
sidebarLayout(
sidebarPanel(
h4("The graph looks rough")),
mainPanel(
plotOutput("myplot",width=800,height=600)
)
)
))
e
# server.R
library(ggplot2)
data(mtcars)
shinyServer(
function(input, output) {
output$myplot <- renderPlot({
p <- ggplot(data=mtcars,aes(x=mpg,y=disp,color=factor(cyl)))
p <- p + geom_point()
print(p)
})
}
)
io sono curioso di sapere se questo può essere migliorato. Shiny è un potente strumento per comunicare risultati scientifici, tuttavia l'effetto wow è in qualche modo minato da questi artefatti visivi. Grazie!
MODIFICA: probabilmente un modo più corretto per esprimere il problema è quello di dire che non c'è antialias nell'immagine PNG predefinita.
MODIFICA 2: per questa domanda è più importante per gli altri utenti SO, qui ci sono le schermate del grafico prima e dopo l'utilizzo del dispositivo Cairo (utilizzare lo zoom nel browser per ottenere un migliore sguardo alla differenza):
Solo un'ipotesi, prova ad includere 'library (Cairo); options (shiny.usecairo = TRUE)' nel tuo server.R o in global.R. –
@MatthewPlourde In realtà, ha funzionato come un fascino. Potresti sicuramente riformattare il tuo commento come risposta. –
Considereresti di aggiungere prima e dopo le schermate? – bdemarest