【问题标题】:pdf zero size elements visible using ggsave使用ggsave可见的pdf零大小元素
【发布时间】:2012-01-12 18:05:36
【问题描述】:

我有一个问题,当另存为 pdf 时,不存在的元素的填充颜色出现在堆叠条形图的顶部。这些元素不会出现在 R 的绘图窗口中或保存为 png 时。

例子:

library(ggplot2)
dat <- data.frame(prop.table(xtabs(~class+cyl,mpg),1))
qplot(class,Freq,data=dat,geom="bar",fill=relevel(cyl,4))+scale_fill_brewer(palette="Blues")
ggsave("test.pdf")

“2seater”列的顶部出现一条深蓝色细线,无论您放大多少,它在屏幕上似乎都保持相同的粗细。我认为这是一个 pdf 错误而不是 ggplot2 错误,但是有什么办法可以避免吗?

编辑

> sessionInfo()
R version 2.12.2 (2011-02-25)
Platform: i386-pc-mingw32/i386 (32-bit)

locale:
[1] LC_COLLATE=English_United Kingdom.1252 
[2] LC_CTYPE=English_United Kingdom.1252   
[3] LC_MONETARY=English_United Kingdom.1252
[4] LC_NUMERIC=C                           
[5] LC_TIME=English_United Kingdom.1252    

attached base packages:
[1] grid      stats     graphics  grDevices utils     datasets  methods  
[8] base     

other attached packages:
[1] ggplot2_0.8.9 proto_0.3-9.2 reshape_0.8.4 plyr_1.6     

loaded via a namespace (and not attached):
[1] digest_0.5.0       RColorBrewer_1.0-5 tools_2.12.2 

【问题讨论】:

  • 您可能应该指定一些有关您的操作系统、R 版本等的信息,因为我无法重现(OS X、R 2.14.0)。
  • @joran 谢谢,添加了 sessionInfo
  • FWIW,我遇到了问题,我在 Windows 上运行 R 2.14.1。但不确定是pdf 设备的问题,还是查看器的问题。
  • @JoshO'Brien 很奇怪。可能是 Windows pdf 设备问题?
  • @joran -- 要找出答案,我们必须交换两台机器上绘制的 pdf。如果您有兴趣,可以将其发送到我的个人资料中列出的电子邮件地址。

标签: r pdf ggplot2


【解决方案1】:

问题似乎是由于 class*cylynder 组合的频率为零,如此处显示的数据框中的第一行:

library(ggplot2)
dat <- data.frame(prop.table(xtabs(~class+cyl,mpg),1))
head(dat, 3)
#     class cyl      Freq
# 1 2seater   4 0.0000000
# 2 compact   4 0.6808511
# 3 midsize   4 0.3902439

如果您删除带有Freq==0 的行,然后进行绘图,那么有问题的行就会消失:

dat2 <- subset(dat, Freq>0)
qplot(class, Freq, data=dat2, geom="bar", fill=relevel(cyl,4)) +
      scale_fill_brewer(palette="Blues")
ggsave("test.pdf")

【讨论】:

  • 从好的方面来说,我想我们现在都知道零宽度线的样子了!没有多少人真正看到这一点。
【解决方案2】:

我有同样的问题(在 Linux 上):直方图中的零值在 pdf 查看器中显示为细黑线。

我可以通过使用cairo_pdf() 而不是pdf() 保存来部分解决它。

在 Sumatra 或 Evince 的显示中不再显示,但在 PDF X-change Viewer 中仍然显示。这也适用于您的示例代码。

编辑:使用 tikzDevice 解决了所有观众的问题。然后仍然可以使用 pdflatex 等创建 pdf。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-04
    • 2019-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-29
    • 1970-01-01
    • 2016-07-18
    相关资源
    最近更新 更多