【发布时间】:2018-07-07 19:27:19
【问题描述】:
当我使用coord_fixed(ratio = 1) 时,我遇到了一些 knitr 切断部分 ggplot2 图像的行为。
mwe.Rmd
---
title: "mwe"
output: pdf_document
---
```{r}
library(ggplot2)
data <- list(
x1 = 0:6,
y1 = 0,
x2 = rep(0:6, 2),
y2 = rep(c(0, 1), each = 7) * -1,
labels = paste("Label", 1:7)
)
g <- ggplot() + geom_text(aes(0:6, 0.75), label = data$labels)
g_unfixed_1 <- g + geom_raster(aes(data$x1, data$y1))
g_fixed_1 <- g_unfixed_1 + coord_fixed(ratio = 1)
g_unfixed_2 <- g + geom_raster(aes(data$x2, data$y2))
g_fixed_2 <- g_unfixed_2 + coord_fixed(ratio = 1)
g_unfixed_1
g_fixed_1
g_unfixed_2
g_fixed_2
```
通过以下调用,我可以看到 g_fixed_1 的上边距与 g_fixed_2 的上边距相比略有截断:
rmarkdown::render("mwe.Rmd", clean = F)
我查看了 knitr 生成的 PDF,图的顶部与g_fixed_1 有点截断:
对比g_fixed_2(两行数据):
【问题讨论】:
-
......当您不提供an MCVE 时,您将面临投反对票的风险。请做。很多时候,当人们真正试图将其归结为核心问题时,问题就会神奇地自行解决
-
Rmarkdown 文档具有默认的
fig.width和fig.height,并且各个块也采用这些参数。这通常默认为 7" x 4"。看起来您已经将 2 个地块塞进了一个 7" x 4" 的空间。由于ggplot本身并没有设置尺寸,所以图形大小不会调整以适合绘图,因此您需要调整图形大小以适应 -
对不起,如果不清楚,但我包含了一个最小的完整 Rmd 文档,如果您渲染它并查看生成的 PDF,它会重现效果。我包含的数字是两个单独的图像,当绘图数据仅包含一行时,顶部边距被切断,当数据包含两行或更多行时,顶部边距被切断。当使用 clean = F 选项时,在绘图 PDF 图中也可以看到这一点。
-
那么您是否尝试设置
fig.width和fig.height参数以适合您的情节? -
是的,我尝试设置
fig.height = 5,但在绘制coord_fixed(ratio = 1)绘图时仍然会创建截断图像。
标签: r ggplot2 r-markdown knitr