R ggplot2:为什么半透明+;pdflatex会导致比普通PDF字体更重吗?

R ggplot2:为什么半透明+;pdflatex会导致比普通PDF字体更重吗?,r,ggplot2,R,Ggplot2,ggplot2:为什么半透明+pdflatex会导致比普通PDF字体更重 我遇到了一个问题,在R中使用pdf()ing,然后使用pdflatex-ing ggplot2图像会导致与图像相同页面上的所有文本变得更大胆,但仅当alpha} 如果您按照ggplot2邮件列表线程讨论中的链接进行操作,您将发现此潜在解决方案的线程最终发布在: 希望这会有所帮助,但我看到巴蒂斯特在这里和ggplot2问题上都有所权衡,所以这也许不能解决问题 我认为那个问题的海报@SFun28提供了一个解决方案。。。使用

ggplot2:为什么半透明+pdflatex会导致比普通PDF字体更重

我遇到了一个问题,在R中使用
pdf()
ing,然后使用
pdflatex
-ing ggplot2图像会导致与图像相同页面上的所有文本变得更大胆,但仅当
alpha
<1时。下面是R中的一个最小示例:

require("ggplot2")
"%_%" <- function(a, b) paste(a, b, sep="")
test <- function(filename, alpha)
{
  pdf(filename %_% "-fig.pdf")
  p <- ggplot(mtcars, aes(wt, mpg)) + geom_point(alpha=alpha)
  print(p); dev.off()

  latexDocument <- c(
    "\\documentclass{article}",
    "\\usepackage{Sweave}",
    "%\\pdfpageattr{/Group <</S /Transparency /I true /CS /DeviceRGB>>}",
    "\\begin{document}",
    "Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
    "\\begin{figure}",
    "\\includegraphics{" %_% filename %_% "-fig}",
    "  \\caption{Figure Caption}",
    "\\end{figure}",
    "\\end{document}")

  con <- file(filename %_% ".tex"); writeLines(latexDocument, con); close(con)
  system("pdflatex " %_% filename)
}

test("test1", 1)
test("test2", 0.3)
require(“ggplot2”)

“%\u%”能否尝试查看是R或ggplot2或SWAVE或pdflatex有问题,还是您的pdf查看器有问题?我无法重现这个问题。这是在Mac OS 10.6上使用Adobe Reader的屏幕截图,


我认为这是一个消除混叠的问题,使文本看起来更粗体/更大。我可以在轴标题上看到它,但在标签上看不到。而且在较低的放大倍数下更为明显。我无法证明任何事情,两个PDF的差异对我来说并没有启发

200%时:

在800%时:

使用以下代码生成(消除了Swave和pdflatex步骤)

请尝试带有参数的函数
colormodel=“cmyk”

在我的环境中(Win XP,Adobe Acrobat 9 Pro),它似乎比
colormodel=“rgb”
稍好一些


ggplot2邮件列表中的此线程有帮助吗

结果是尝试在LaTeX文档的前言中插入以下行:

\pdfpageattr {/Group << /S /Transparency /I true /CS /DeviceRGB>>} 
\pdfpageattr{/Group>}
如果您按照ggplot2邮件列表线程讨论中的链接进行操作,您将发现此潜在解决方案的线程最终发布在:


希望这会有所帮助,但我看到巴蒂斯特在这里和ggplot2问题上都有所权衡,所以这也许不能解决问题

我认为那个问题的海报@SFun28提供了一个解决方案。。。使用ghostscript。@SFun28在他的解决方案中没有明确说明,但我尝试在R中使用
embedFonts()
,并使用ghostscript来触摸文件:
gswin32c.exe-dNOPAUSE-dBATCH-dAutoRotatePages=/None-sDEVICE=pdfwrite-sOutputFile=./test2gs.pdf./test2.pdf
。这两种方法都减小了文件大小,但都没有纠正较重的字体。当您查看test1-fig.pdf和test2-fig.pdf时,是否看到较重的字体?或者,只有在通过pdxlatex运行后才能识别差异?test1-fig.pdf和test2-fig.pdf之间字体外观的差异与
pdflatex
输出之间的差异相同:后者的文件具有更重的字体外观。是的,它似乎是从
pdf()
创建的图像开始的。当两个图像都在同一个文件上时会发生什么?例如,
p根据@priscian,显然不是swave或pdflatex,因为它确实出现在由
pdf()
@Brian Diggs创建的直接pdf文件中。下一步是使用网格而不是
ggplot2
,甚至是基本图形。我看到了同样的情况,尤其是在较低的放大率下。有趣的是,我在TeXworks PDF查看器(基于库)中没有看到字体大小的差异。正如您所说,这个“问题”实际上可能只是与查看器相关的抗锯齿问题,因此不需要解决方案。谢谢你的测试,我也看到了同样的情况。当问题实际存在时,这似乎是对“问题”的修复。从各种测试来看,当文件包含半透明材料时,pdf设备中似乎存在小号,或者至少存在意外功能。要缩小范围,可以尝试绘制一个不依赖于
ggplot2
的最小示例<代码>库(网格);grid.rect(gp=gpar(fill=“blue”,alpha=0.2));grid.text(“test”)
vs.alpha=1。是的,我同意。我向Adobe Systems Inc.询问了这个问题。我将把这个标记为已接受的答案。虽然它没有明确回答“为什么?”问题,但它提供了一个体面的解决方案,解决了一个原因可能是间歇性的或仅限于PDF查看器子集的问题,在这种情况下,问题本身可能过于广泛。Adobe Systems Inc.的支持是响应性的,但他们没有提供任何解决方案和信息。。。。从现在起,我将以这种方式处理这个问题。谢谢你的有意义的话题!我已经在我的原始代码中添加了一行LaTeX注释的
\pdfpageattr
,供任何想要测试其添加的人使用。在AcrobatReader中,我注意到在添加了YMMV之后,粗体从绘图文本转移到了文档正文。在任何情况下,它似乎并不代表问题的完整“修复”,但也许其他阅读本文的人能够从我们已经完成的测试中综合出完整的问题/解决方案。谢谢
require("ggplot2")
"%_%" <- function(a, b) paste(a, b, sep="")
test <- function(filename, alpha)
{
  pdf(filename %_% "-fig.pdf")
  p <- ggplot(mtcars, aes(wt, mpg)) + geom_point(alpha=alpha)
  print(p); dev.off()
}

test("test1", 1)
test("test2", 0.3)
R version 2.13.1 (2011-07-08)
Platform: x86_64-pc-mingw32/x64 (64-bit)

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

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

other attached packages:
[1] xtable_1.5-6         ggplot2_0.8.9        proto_0.3-9.2       
[4] reshape_0.8.4        plyr_1.6             microbenchmark_1.1-0

loaded via a namespace (and not attached):
[1] digest_0.5.0 tools_2.13.1
require("ggplot2")
pdf("test_cmyk.pdf", colormodel = "cmyk")
ggplot(mtcars, aes(wt, mpg)) + geom_point(size = 3, alpha = 0.2) +
  opts(title = "cmyk, alpha = 0.2")
dev.off()
embedFonts("test_cmyk.pdf")
\pdfpageattr {/Group << /S /Transparency /I true /CS /DeviceRGB>>}