【发布时间】:2014-12-04 19:38:36
【问题描述】:
问题总结:当托管在 shinyapps.io 上时,ggplot2 图表的闪亮质量似乎很差。图表元素包含可见的缺陷,例如geom_point() 的点不是圆形的,有些看起来像三角形,有些像矩形等。图例看起来好像是从低分辨率 jpg 中放大的。我的例子是here。
问题:是否有任何选项可以控制图形质量,例如 dpi?
详细说明:开发一个简单的 Shiny 应用程序,我注意到 ggplot 图的边缘有些粗糙,无法改善这种情况。 example app 很好地证明了这一点,注意这些点看起来是不规则的形状。当我将缩放(在 Chrome 中)增加到 200% 或更多时,它们的形状会得到改善,接近圆形。在 100% 缩放时,整个图形看起来很奇怪而且不平滑。好像当图像分辨率降低 0.77 倍或类似的因素时,您会得到轻微的失真伪影;类似的效果在这里。最简单的查看方法是下载图片以 100% 缩放(右键单击,另存为),然后在本地副本上增加缩放。你会看到点远非圆形。 server.R 和 ui.R 的代码很简单:
# ui.R
shinyUI(fluidPage(
titlePanel("My Shiny App"),
sidebarLayout(
sidebarPanel(
h4("The graph looks rough")),
mainPanel(
plotOutput("myplot",width=800,height=600)
)
)
))
和
# 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)
})
}
)
我很好奇这是否可以改进。 Shiny 是传达科学成果的强大工具,但令人惊叹的效果在某种程度上被这些视觉人工制品破坏了。谢谢!
编辑:表达问题的更正确方法可能是说默认 PNG 图像中没有抗锯齿。
编辑 2:为了让这个问题对其他 SO 用户更有价值,以下是使用 Cairo 设备之前和之后的图表截图(在浏览器中放大以更好地查看差异):
【问题讨论】:
-
只是猜测,尝试在 server.R 或 global.R 中包含
library(Cairo);options(shiny.usecairo=TRUE)。 -
@MatthewPlourde 实际上,它就像一个魅力。您当然可以重新格式化您的评论作为答案。
-
你会考虑在屏幕截图前后添加吗?
-
@bdemarest 很好的建议,谢谢。