Problem Podsumowanie: ggplot2 wykresy wydają się być złej jakości błyszczące, kiedy gospodarzem na shinyapps.io. Elementy wykresu zawierają widoczne defekty, np. kropki geom_point()
nie są okrągłe, niektóre wyglądają jak trójkąty, inne jak prostokąty itp. Legenda wygląda tak, jakby została wysadzona z niskiej rozdzielczości JPG. Mój przykład to here.ggplot2 jakość wykres w błyszczące na shinyapps.io
Pytanie: czy są jakieś opcje kontroli jakości wykresu, takie jak dpi?
Szczegółowy opis: opracowanie prostego Shiny aplikację, zauważyłem, że ggplot wykresy są nieco szorstkie na brzegach i nie był zdolny do poprawy sytuacji. Model example app pokazuje to wystarczająco dobrze, zauważ, że kropki wydają się mieć nieregularny kształt. Ich kształt poprawia się, zbliżając się do okrągłości, kiedy zwiększam zoom (w Chrome) do 200% lub więcej. Przy powiększeniu 100% cały wykres wygląda dziwnie i nie jest gładki. Jakby, gdy rozdzielczość obrazu została zmniejszona o współczynnik 0,77 lub coś podobnego, otrzymasz niewielkie artefakty zniekształceń; podobny efekt jest tutaj. Najprostszym sposobem, aby to zobaczyć, jest pobranie obrazu z powiększeniem 100% (prawy przycisk myszy, zapisanie jako), a następnie zwiększenie powiększenia lokalnej kopii. Zobaczysz, jak kropki nie są okrągłe. Kod dla server.R
i ui.R
jest bardzo prosta:
# ui.R
shinyUI(fluidPage(
titlePanel("My Shiny App"),
sidebarLayout(
sidebarPanel(
h4("The graph looks rough")),
mainPanel(
plotOutput("myplot",width=800,height=600)
)
)
))
i
# 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)
})
}
)
Jestem ciekaw, czy ten może ulec poprawie. Błyszczące jest potężnym narzędziem do przekazywania wyników naukowych, ale efekt wow jest w jakiś sposób podważany przez te wizualne artefakty. Dzięki!
EDYCJA: prawdopodobnie poprawniejszym sposobem na wyrażenie problemu jest stwierdzenie, że nie ma wygładzania krawędzi w domyślnym obrazie PNG.
EDYCJA 2: aby to pytanie miało większą wartość dla innych użytkowników SO, oto zrzuty ekranu wykresu przed i po użyciu urządzenia Cairo (użyj powiększenia w przeglądarce, aby lepiej przyjrzeć się różnicy):
Tylko zgadnij, spróbuj dodać 'library (Cairo); options (shiny.usecairo = TRUE)' w twoim server.R lub w global.R. –
@MatthewPlourde Właściwie to działało jak czar. Z pewnością możesz sformatować swój komentarz jako odpowiedź. –
Czy rozważasz dodawanie przed i po zrzutach ekranu? – bdemarest