Ggplot2: Почему Semi-Transparency + pdflatex вызывает более тяжелые, чем обычные PDF-шрифты?

ggplot2: Почему Semi-Transparency + pdflatex вызывают более тяжелые PDF-шрифты?

У меня возникла проблема, когда pdf() ing в R, а затем pdflatex -в изображение 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)

Сравнивая выходные файлы test1.pdf и test2.pdf, я замечаю, что последний документ имеет более тяжелые шрифты при просмотре в Acrobat или Acrobat Reader. Ранее обсуждалась проблема здесь, но без разрешения.

Кажется, я не могу решить проблему, которая искажает внешний вид отчетов, которые я создаю с помощью Sweave. Кто-нибудь может понять это? Я использую R версии 2.13.1 для Windows.

Ответ 1

Попробуйте функцию pdf() с аргументом colormodel = "cmyk"?

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")

Кажется, он немного лучше, чем colormodel = "rgb" в моей среде (Win XP, Adobe Acrobat 9 Pro).

enter image description here

Ответ 2

Можете ли вы попытаться выяснить, есть ли проблема с R или ggplot2 или Sweave или pdflatex, или просто ваш просмотрщик в формате pdf? Я не могу воспроизвести проблему. Здесь скриншот с использованием Adobe Reader на Mac OS 10.6, enter image description here

sessionInfo()
R version 2.13.1 (2011-07-08)
Platform: x86_64-apple-darwin9.8.0/x86_64 (64-bit)

locale:
[1] en_NZ.UTF-8/en_NZ.UTF-8/C/C/en_NZ.UTF-8/en_NZ.UTF-8

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

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

Ответ 3

Я думаю, что это вопрос сглаживания, что делает текст более смелым/большим. Я вижу это по названию оси, но не по меткам. И он более выражен при меньших увеличениях. Я ничего не могу доказать, и различие двух PDF файлов не помогло мне.

При 200%:

View of PDFs in Acrobat Reader at 200%

При 800%:

View of PDFs in Acrobat Reader at 800%

Сгенерировано с использованием следующего кода (который исключает шаги Sweave и pdflatex)

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

Ответ 4

Помогает ли эта нить из списка рассылки ggplot2?

http://groups.google.com/group/ggplot2/browse_thread/thread/80016f7ac2a28f28/7f5b7f2c1bd9f716

Результат заключается в попытке включить следующую строку в преамбулу вашего документа LaTeX:

\pdfpageattr {/Group << /S /Transparency /I true /CS /DeviceRGB>>} 

Если вы следуете ссылкам из обсуждения темы списка рассылки ggplot2, вы найдете поток с этим потенциальным решением, в конечном итоге отправленным по адресу:

http://tug.org/pipermail/pdftex/2007-December/007480.html

Надеюсь, что это поможет, но я вижу, что Батист взвесил и здесь, и по вопросу ggplot2, поэтому, возможно, это не решает проблему.