微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Knitr生成的PDF文件的大小

如何解决Knitr生成的PDF文件的大小

我正在Rnw文件中使用以下块。

<<scatter,dev='pdf',include=TRUE>>=
a <- rnorm(1e4)
b <- rnorm(1e4)
plot(a,b)
@

我分别在RnwR3.6.3下编织了相同的R4.0.2文件。但是,在R4.0.2生成的PDF图形比R3.6.3生成的PDF图形大得多(约8倍)。

我想知道是否有一种方法(例如,块选项)来减小R4.0.2下的PDF大小。

两个不同版本的R的会话信息如下所示。

R version 4.0.2 (2020-06-22)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 16299)

Matrix products: default

locale:
[1] LC_COLLATE=English_Australia.1252  LC_CTYPE=English_Australia.1252   
[3] LC_MONETARY=English_Australia.1252 LC_NUMERIC=C                      
[5] LC_TIME=English_Australia.1252    

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

other attached packages:
[1] knitr_1.29

loaded via a namespace (and not attached):
[1] compiler_4.0.2 magrittr_1.5   tools_4.0.2    stringi_1.4.6  highr_0.8      stringr_1.4.0 
[7] xfun_0.16      evaluate_0.14
R version 3.6.3 (2020-02-29)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 16299)

Matrix products: default

Random number generation:
 RNG:     Mersenne-Twister 
 normal:  Inversion 
 Sample:  Rounding 
 
locale:
[1] LC_COLLATE=English_Australia.1252  LC_CTYPE=English_Australia.1252   
[3] LC_MONETARY=English_Australia.1252 LC_NUMERIC=C                      
[5] LC_TIME=English_Australia.1252    

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

other attached packages:
[1] knitr_1.28

loaded via a namespace (and not attached):
[1] compiler_3.6.3 magrittr_1.5   tools_3.6.3    stringi_1.4.6  highr_0.8      stringr_1.4.0 
[7] xfun_0.12      evaluate_0.14 

解决方法

release notes中最近对pdf的唯一引用是与dingbats字体有关的。查看参考文件时,它说(强调我的意思):

useDingbats逻辑。小圆圈是否应该通过 Dingbats字体?默认值为TRUE,这会产生更小更好的结果 输出。将此设置为FALSE可以解决字体显示问题 损坏的PDF查看器:尽管此字体是保证的14种字体之一 适用于所有PDF查看器,但这种保证并不总是 荣幸。

您可以通过以下方式更改默认值

pdf.options(useDingbats = TRUE)

在Rnw文档的第一个代码块中。此更改对您的文档是全局的。如果您只想为特定的代码块更改它,则可以使用块选项dev.args,例如,

<<scatter,dev='pdf',dev.args=list(useDingbats = TRUE)>>=
a <- rnorm(1e4)
b <- rnorm(1e4)
plot(a,b)
@

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?