1

我最近注意到,相同的 R markdown 文档在不同条件下(例如不同的项目)运行时会生成不同的图。作为一个玩具示例,请考虑以下文档:

---
title: "Example"
output:
  html_document
---

```{r plot, warning=FALSE, echo=FALSE}
library("tidyverse")
tibble(mu = c(-9.4, -9.3, -9.2, -9, -8.9, -8.8, -8.7, -8.5, -8.4, -8.3, 0),
       N = c(1, 2, 1, 1, 1, 3, 1, 1, 1, 1, 3)) %>%
  ggplot() +
  geom_point(aes(x=mu, y=N)) + 
  geom_bar(aes(x=mu, y=N), stat="identity", fill="grey", colour="black", width=0.1) +
  theme(panel.background=element_blank(),
        axis.title=element_text(size=20),
        axis.text=element_text(size=15))
```

它应该产生一个类似以下的情节,有时我会成功并得到它:

在此处输入图像描述

然而,其他时候,我得到这个替代版本,这是无稽之谈:

在此处输入图像描述

我注意到加载 tidyverse 包后,有些版本是不同的。例如,第一个 ggplot 是 3.2.1,而后一个是 3.3.0。这稍后具有不同的版本号,因为它在使用 Renv 的 R 项目中单独维护。

好的,可能是不同的版本号?即使考虑到我很久以前就知道这个包的这些不同版本,我也很难理解在任何ggplot 版本中给定这个代码是如何生成第二个图的。如果不是版本号,是否有任何可能导致此问题的提示?

4

1 回答 1

6

问题是它有时会猜测一个方向,有时会猜测另一个方向。(你的坏情节有水平条。)你可以orientation = "x"geom_bar调用中强制使用垂直条。

我将其称为一个错误,它似乎不确定地选择方向(但请参阅下面的评论)。我在我的系统上看到了同样的事情。我只使用了ggplot23.3.0 版;唯一的区别是我之前运行过的代码的历史。

编辑添加:经过更多测试,我无法重现不可重现性:-)。 ggplot2有一些复杂的方向猜测规则;它们对于数据的微小变化是不稳定的,但对于固定数据似乎是稳定的。我猜我在没有意识到的情况下不小心更改了数据集的字符。

于 2020-04-15T20:39:42.947 回答