在不同的图形尺寸下保持ggplot字体大小不变

问题描述 投票:0回答:1

我所处的位置要求我经常通过每个 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))

输出将是一个包含两个不同大小的图的文档,而且字体的大小也会不同:

enter image description here

我的问题是:是否可以确保无论我设置什么

fig.dim
,图表中所有文本的大小保持不变?可能无需更改参数
dev="cairo_pdf"
,因为我用它在我的绘图中使用自定义字体。

r ggplot2 fonts r-markdown cairo
1个回答
0
投票

您可以强制设备的输出大小(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),并且还通过点大小显示了相同的概念。

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.