编织为pdf时ggplot2条形图中的不需要的条纹

时间:2017-05-16 09:08:14

标签: r ggplot2 knitr r-markdown

在将简单的条形图编织为pdf时,我的条形图中会出现一些不需要的条纹(请参见随附的屏幕截图右侧)。

---
title: "Don't Panic"
author: "Ford Perfect"
output: pdf_document
---


```{r, include = F}
library(ggplot2)
```

# Introduction

```{r, echo = F, fig.cap = "My plot"}
ggplot(mpg) + geom_bar(aes(x = as.factor(cyl), y = hwy), stat="identity")
```

当我直接在R-Studio中创建绘图时,不会出现这些条纹(请参见随附屏幕截图的左侧)。

我发现了一种通过聚合数据之前删除这些条带的方法:

ggplot(aggregate(hwy~cyl,mpg,"sum")) + 
  geom_bar(aes(x = as.factor(cyl), y = hwy), stat="identity")

所以我理解这些条纹应该来自堆叠数据集中的所有其他组。这个理论似乎是合理的,因为当我按年汇总数据集时,我得到两个条纹(mpg数据集中有两个唯一的数据集)。

ggplot(aggregate(hwy~cyl*year,mpg,"sum")) + 
  geom_bar(aes(x = as.factor(cyl), y = hwy), stat="identity")

但是当我将 stat 设置为 identity 时,我认为ggplot2会自动为我做聚合吗?实际上它确实直接在R-Studio中工作。那么问题可能与knitr有关吗?

我确实相信我过去没有遇到同样的问题。那么更新可能会有所改变吗?实际上我的所有同事(其他6台Mac和Windows计算机)都有完全相同的问题。

R版本3.4.0(2017-04-21)
平台:x86_64-w64-mingw32 / x64(64位)
ggplot2:2.2.1
knitr:1.15.1

1 个答案:

答案 0 :(得分:2)

如评论中所述,图形的文件类型可以影响图形在输出pdf中的呈现方式。

使用提供的块:

```{r, echo = F, fig.cap = "My plot"}
ggplot(mpg) + geom_bar(aes(x = as.factor(cyl), y = hwy), stat="identity")
```

默认dev为pdf,pdf中生成的图片如问题所示:

enter image description here

如果您明确要使用dev,就像下面的块一样,那么将生成一个png,并且生成的pdf中的图像是所需的。

```{r, echo = F, fig.cap = "My plot", dev = "png"}
ggplot(mpg) + geom_bar(aes(x = as.factor(cyl), y = hwy), stat="identity")
```

enter image description here