我用'knitr'包编织了一个PDF。它还使用'ggsave'在目录中保存PNG文件。
- 手动从chunk生成PNG文件时
- 条形图:PNG文件大小为13.3 kb,尺寸为1008 × 1008。
- 在编织过程中生成PNG文件时,使用"Ctrl +Shift +K">
- 条形图:PNG文件大小为11.4 kb,尺寸为936 * 647.
我该怎么做,以便在这两种情况下生成的PNG文件应该具有相同的大小和尺寸?如果可能的话,我希望在这两种情况下的输出都是13.3 kb。
我已经添加了最小可重复的例子代码。请将其保存为" rmd "生成PNG和PDF的文件。
谢谢
- 生成PDF的文件的YAML头文件(用三重虚线包围)
title: "Image Size Mismatch"
output: pdf_document
- R代码加载包,生成条形图,并保存为PNG。
编辑:小代码示例
# Packages
library("knitr")
library("ggplot2")
# Data
hh <- data.frame(groups = factor(c("No", "Yes", NA)), n = c(3843, 856, 19))
# Create Chart
pp <- ggplot(data = hh, aes(x = groups, y = n)) + geom_bar(stat = 'identity')
# Save Image
ggsave("Bar.png", plot = pp, device = "png", dpi = 144)
年长的例子:它有一些不必要的代码。
# Packages
library("knitr")
library("dplyr")
library("tibble")
library("ggplot2")
# Data
hh <- tibble(groups = factor(c("No", "Yes", NA)), n = c(3843, 856, 19))
loc_png <- "Pie.png"
# Create Pie Chart
pp <- ggplot(data = hh, aes(x = '', y = n, fill = groups)) +
geom_bar(stat = 'identity', width = 1, color = "white") +
coord_polar(theta = "y", start = 0) +
# Add Text Labels
geom_text(aes(label = paste0(groups, "n", n)),
position = position_stack(vjust = 0.5)) +
# Theme and Labs
theme(panel.background = element_rect(fill = "white", colour = "white"),
legend.position = 'none', axis.text = element_blank(),
axis.ticks = element_blank(), axis.title = element_blank(),
panel.grid = element_blank()) +
labs(title = "Pie")
# Save Image
ggsave(loc_png, plot = pp, device = "png", dpi = 144)
# Problem:
# Manual Chunk Execution: Output File: Size 32.5 kb, Dimension 1008 x 1008
# Knit "Ctrl +Shift +K" : Output File: Size 22.4 kb, Dimension 936 x 647
您可以在RMarkdown以及ggsave
中控制绘图的大小和宽高比。出于您的目的,您需要将两者设置为相同的值。
在https://bookdown.org/yihui/rmarkdown-cookbook/figure-size.html中描述了调整地块大小和纵横比,ggsave
在help("ggsave")
中的正确使用。
---
title: "Untitled"
output: pdf_document
---
```{r, fig.dim = c(5, 3)}
library(ggplot2)
ggplot(iris) +
geom_point(aes(x = Sepal.Length, y = Sepal.Width))
ggsave("test.png", width = 5, height = 3, units = "in")
```
老实说,我不知道,在编织文档中使用了多少点每英寸(dpi),我的例子似乎是作为矢量文件编写的,但如果需要,也可以很容易地在ggsave
的调用中进行调整。在Rmd内或Rmd外调用ggsave