【问题标题】:RMarkdown and ggplot: Axis labels cut offRMarkdown 和 ggplot:轴标签被切断
【发布时间】:2021-08-25 09:35:19
【问题描述】:

在 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:this post之后,我尝试添加

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

ggplot 元素。

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

fig.width = 5

技巧3:this post之后,我尝试添加

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

ggplot 元素。

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

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

【问题讨论】:

  • 您是否尝试过在块选项中调整图形大小?例如{r, fig.width = 8, fig.height = 8}.
  • 我做了你的代码,结果非常好!我没有修改任何东西
  • @teunbrand 感谢您的回复!我已经尝试过这个(技巧 2),但没有奏效。
  • @elielink 谢谢!这可能意味着它只是包或 R 版本的问题。我会在不同的系统上检查它并通知您。
  • 我在另一个系统上检查过,结果完美无缺。但是,两个系统都使用相同的 R 版本 4.0.5,具有裁剪输出的系统是具有 pdfTeX 版本 3.141592653-2.6-1.40.23(TeX Live 2021)的 linux 服务器,具有完美输出的系统是 Windows 10 机器pdfTeX 版本 3.141592653-2.6-1.40.22 (TeX Live 2021/W32TeX)。我会尝试更新linux服务器上的所有包。

标签: r pdf ggplot2 r-markdown


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    就我而言,裁剪错误与已弃用的 GhostScript 版本有关。将 GhostScript 更新到最新版本 (9.54.0) 后,我可以运行 reprex 而不会出现任何图像裁剪问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-06
      相关资源
      最近更新 更多