首页 > 解决方案 > RMarkdown 和 ggplot:轴标签被切断

问题描述

在 RMarkdown PDF 文档中,我正在生成一个带有相当长刻度标签的热图。出于某种原因,这会导致 y 轴标签和颜色图例被截断。我已经尝试了几种技巧来解决这个问题,但到目前为止无济于事。这是我的代表:

---
title: "Test"
output: pdf_document
draft: true
  
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(
    echo = FALSE, fig_crop=FALSE
)
```

```{r dependencies, include=FALSE}
library(tidyverse)
options(print_format="tex")
```

```{r, include=FALSE}
# Dummy data
set.seed(1234)
Count = rep((1:5), 8)
Gadget = rep(c("BANANA", "APPLE", "PEAR", "ORANGE", "ENCYCLOPEDIA", "XYLOPHONE", "TOMATO", "POTATO"), each=5)
GadgetScore = runif(40, 0, 100)
data = data.frame(Count, Gadget, GadgetScore)
```

```{r}
# Generate heatmap
maxi = max(data$GadgetScore, na.rm=TRUE)
mini = min(data$GadgetScore, na.rm=TRUE)
midi = mini+(maxi-mini)/2
ggplot(data, aes(Count, Gadget, fill=GadgetScore)) + geom_tile() +
  scale_fill_gradient2(name="Gadget score value", low="red", mid="yellow", high="green", midpoint=midi) +
  labs(x="Count", y="Gadgets")
```

这是输出: 带有裁剪轴标签和颜色图例的热图

如您所见,左侧的 y 轴标签Gadgets和右侧的颜色图例标签Gadget score value被裁剪。正如我所说,我已经尝试了 StackOverflow 的一些提示,但到目前为止,它们都没有奏效。

技巧 1:这篇文章之后,我尝试添加

theme(axis.title.x=element_blank(),
    axis.text.x=element_blank(),
    axis.ticks.x=element_blank())

ggplot元素。

技巧2:这篇文章之后,我尝试使用类似的东西来调整情节块的宽度

fig.width = 5

技巧 3:这篇文章之后,我尝试添加

theme(plot.margin = margin(100, 100, 100, 100))

ggplot元素。

技巧 4:我尝试将选项crop = FALSE和添加fig_crop=FALSE到设置块。

不幸的是,这些技巧都没有奏效。任何帮助都感激不尽。

标签: rpdfggplot2r-markdown

解决方案


该代码非常适合我。但是,您可以检查图像的对齐方式,也许如果您将其放在更右侧一点,您可以看到标签。为此尝试在最后一个块中添加{r, fig.dim = c(5, 2.5), fig.align = 'right'}


推荐阅读