我所处的位置要求我经常通过每个 r 块中的
fig.dim=c(...,...)
选项更改绘图的尺寸。
但是,我有一个问题还没有解决。 通过在 PDF 中编织我的文档,如果我有两个图,并为它们指定了两种不同的大小,它们的字体大小也会不同。
以此为例:
'''{r dev="cairo_pdf", fig.dim=c(9,7)}
library(ggplot2)
ggplot(iris, aes(x=Sepal.Length, y=Sepal.Width)) +
geom_point() +
theme_classic() +
scale_y_continuous(limits = c(2, 5)) +
scale_x_continuous(limits = c(4, 8))
'''{r dev="cairo_pdf", fig.dim=c(4,3)}
library(ggplot2)
ggplot(iris, aes(x=Sepal.Length, y=Sepal.Width)) +
geom_point() +
theme_classic() +
scale_y_continuous(limits = c(2, 5)) +
scale_x_continuous(limits = c(4, 8))
输出将是一个包含两个不同大小的图的文档,而且字体的大小也会不同:
我的问题是:是否可以确保无论我设置什么
fig.dim
,图表中所有文本的大小保持不变?可能无需更改参数dev="cairo_pdf"
,因为我用它在我的绘图中使用自定义字体。
您可以强制设备的输出大小(cario-pdf),然后手动调整字体大小。
---
output: pdf_document
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
library(ggplot2)
```
```{r dev="cairo_pdf", out.height='400pt', out.width='400pt'}
ggplot(iris, aes(x=Sepal.Length, y=Sepal.Width)) +
geom_point(size=1.5) +
theme_classic(base_size = 9) +
scale_y_continuous(limits = c(2, 5)) +
scale_x_continuous(limits = c(4, 8))
```
```{r dev="cairo_pdf", out.height='400pt', out.width='200pt'}
ggplot(iris, aes(x=Sepal.Length, y=Sepal.Width)) +
geom_point(size=3) +
theme_classic(base_size = 18) + # double font size to counter half sized out-device
scale_y_continuous(limits = c(2, 5)) +
scale_x_continuous(limits = c(4, 8))
```
注意: 我使用因子 2 使示例更清晰(即 200 * 2 = 400 和 9 * 2 = 18),并且还通过点大小显示了相同的概念。