R ggplot2 SVG图像质量差

时间:2015-06-16 12:51:03

标签: r svg ggplot2

我正在用R中的ggplot2创建一个情节。我正在使用facet_wrap,输出包含大约50个面板。

显然,单个图像中有很多细节,因此标记输出中的标记标签变得不可读。在我的脑海里,绕过它应该是导出为SVG并找出如何放大。然而,导出的SVG文件很大,显示图像的质量很低,使所有细节都模糊。

如果SVG是前进的方向,我该如何改善图像质量?

我应该使用什么而不是SVG来保持文件小?

感谢。

R版本3.2.0(2015-04-16) Chromium 43.0.2357.81(开发者版) Ubuntu 14.04(64位))

根据要求,提供一些示例代码

# Generate some data
id <- paste("Subject", rep(c(letters, LETTERS), each=7*8))
evt <- rep(paste("Event", 1:8), length.out=length(id))
days <- rep(rep(1:7, each=7), length.out=length(id))
value <- sample(c("Yes", "No"), size=length(id), replace=TRUE)
end <- sample(4:6, size=length(id), replace=TRUE)

d <- data.frame(id=id, evt=evt, days=days, value=value, end=end)
d$nevt <- as.numeric(d$evt)

# Do plot
ggplot(d, aes(days, nevt, colour=value)) + # call to geom_rect is lousy, I know
  geom_rect(data=d, aes(xmin=2, xmax=end, ymin=-Inf, ymax=Inf),
            alpha=.01, fill="goldenrod1", color=NA) +
  geom_point(size=2, shape=15, alpha=.8) +
  facet_wrap(~id) +
  scale_y_continuous("", breaks=d$nevt, labels=d$evt) +
  theme(legend.position="none")

如果感兴趣,每个受试者都是临床试验中的患者。他们从第2天到第6天(彩色背景区域)接受治疗,他们每天都有或没有事件1到8,由不同颜色的点表示。

再次感谢。

2 个答案:

答案 0 :(得分:0)

我找到了解决方案。

我使用svg(...,width = 30,height = 30)进行转储,然后将其显示在pannable,zoomable div中:http://timmywil.github.io/jquery.panzoom/demo/

放大浏览器(Chrome)会使其重新呈现并显示效果。放大panzoom并不需要写一个宽大的svg文件。

答案 1 :(得分:0)

在尝试创建纵横比非常大(高度/宽度,例如 25in / 3in)的热图时,我遇到了类似的问题。文字和线条清晰,但图块/颜色非常模糊(在Inkscape和Web浏览器中)。我的问题是默认dpi,它太低了(默认值:300)。 1200 dpi可以满足我的所有要求。 600可能也可以,但是我的文件很小,因此没有受到伤害。由于增加dpi会创建更大的文件,因此只会帮助解决图像质量问题。