Knitr:图例太大
Knitr: figure legend too big
当我编织 Tufte 讲义 pdf 时,一些图形的图例通常太大。我正在编织一个 fig.fullwidth=TRUE
部分,并将 fig.width=
参数从 2 更改为 50 以查看它们是否有任何区别。当我指定 fig.width=2
时,我得到了一个小数字,图例会大大扩展以填充 space:
显然,下一步是尝试更大的 fig.width
,但这些在大约 fig.width=10
后就不再产生任何影响(尽管仍然更好):
我假设 fig.width 是以英寸为单位的宽度,所以这是有道理的,因为我使用的纸张尺寸是 A4,所以大约 8 英寸。
我的问题是,如何进一步减小图例的大小,使其占据更合适的大小?我试过手动设置字体大小:
theme(legend.title = element_text(size = 9),
legend.text = element_text(size = 8))
但是这些对 knitr 图例没有影响(尽管按预期手动绘制时它们确实会影响情节)。
最小可重现示例(粘贴到 .Rmd 文件并编织):
---
title: "knitr: figure legend too big"
documentclass: article
classoption: a4paper
output: rmarkdown::tufte_handout
---
```{r setup, include=FALSE}
require("knitr")
require("rgdal")
require("rgeos")
require("maptools")
require("ggplot2")
```
```{r, fig.cap="test", fig.fullwidth=TRUE, fig.width=10}
# About 650k
download.file("https://census.edina.ac.uk/ukborders/easy_download/prebuilt/shape/England_gor_2011_gen.zip",
destfile = "regions.zip")
unzip("regions.zip")
regions <- readOGR(dsn = ".", "england_gor_2011_gen")
regions@data$test <- as.character(1:nrow(regions@data))
regions_f <- fortify(regions, region = "name")
regions_f <- merge(regions_f, regions@data, by.x = "id", by.y = "name")
ggplot() +
geom_polygon(data = regions_f, aes(long, lat, group = group, fill = test),
colour = "black") +
coord_equal() +
theme(legend.title = element_text(size = 9), # doesn't seem to make
legend.text = element_text(size = 8)) # a difference to knitr
```
一如既往,感谢您的关注。
我认为这是因为地图必须将宽高比设置为 1
。 tufte::tufte_handout()
中默认的图形高度是2.5,所以即使图形宽度大到10,实际的地图大小还是2.5 x 2.5左右。当你增加fig.width
时,你还需要增加fig.height
,例如
```{r, fig.cap="test", fig.fullwidth=TRUE, fig.width=6, fig.height=6}
实际上,当你只设置 fig.width=10
时,knitr 确实生成了一个 10 x 2.5 的 PDF 图像,但是 rmarkdown 有默认启用图形裁剪功能,因此图形左右两侧的大白边被裁剪,最终得到一个 2.5 x 2.5 的图形。
当我编织 Tufte 讲义 pdf 时,一些图形的图例通常太大。我正在编织一个 fig.fullwidth=TRUE
部分,并将 fig.width=
参数从 2 更改为 50 以查看它们是否有任何区别。当我指定 fig.width=2
时,我得到了一个小数字,图例会大大扩展以填充 space:
显然,下一步是尝试更大的 fig.width
,但这些在大约 fig.width=10
后就不再产生任何影响(尽管仍然更好):
我假设 fig.width 是以英寸为单位的宽度,所以这是有道理的,因为我使用的纸张尺寸是 A4,所以大约 8 英寸。
我的问题是,如何进一步减小图例的大小,使其占据更合适的大小?我试过手动设置字体大小:
theme(legend.title = element_text(size = 9),
legend.text = element_text(size = 8))
但是这些对 knitr 图例没有影响(尽管按预期手动绘制时它们确实会影响情节)。
最小可重现示例(粘贴到 .Rmd 文件并编织):
---
title: "knitr: figure legend too big"
documentclass: article
classoption: a4paper
output: rmarkdown::tufte_handout
---
```{r setup, include=FALSE}
require("knitr")
require("rgdal")
require("rgeos")
require("maptools")
require("ggplot2")
```
```{r, fig.cap="test", fig.fullwidth=TRUE, fig.width=10}
# About 650k
download.file("https://census.edina.ac.uk/ukborders/easy_download/prebuilt/shape/England_gor_2011_gen.zip",
destfile = "regions.zip")
unzip("regions.zip")
regions <- readOGR(dsn = ".", "england_gor_2011_gen")
regions@data$test <- as.character(1:nrow(regions@data))
regions_f <- fortify(regions, region = "name")
regions_f <- merge(regions_f, regions@data, by.x = "id", by.y = "name")
ggplot() +
geom_polygon(data = regions_f, aes(long, lat, group = group, fill = test),
colour = "black") +
coord_equal() +
theme(legend.title = element_text(size = 9), # doesn't seem to make
legend.text = element_text(size = 8)) # a difference to knitr
```
一如既往,感谢您的关注。
我认为这是因为地图必须将宽高比设置为 1
。 tufte::tufte_handout()
中默认的图形高度是2.5,所以即使图形宽度大到10,实际的地图大小还是2.5 x 2.5左右。当你增加fig.width
时,你还需要增加fig.height
,例如
```{r, fig.cap="test", fig.fullwidth=TRUE, fig.width=6, fig.height=6}
实际上,当你只设置 fig.width=10
时,knitr 确实生成了一个 10 x 2.5 的 PDF 图像,但是 rmarkdown 有默认启用图形裁剪功能,因此图形左右两侧的大白边被裁剪,最终得到一个 2.5 x 2.5 的图形。