2017-05-16 5 views
3

Beim Stricken eines einfachen Balkendiagramms zu pdf, bekomme ich einige unerwünschte Streifen in meinen Bars (siehe rechte Seite des beigefügten Screenshots).Unerwünschte Streifen in ggplot2 Balkendiagramm beim Stricken nach 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") 
``` 

Diese Streifen werden nicht angezeigt, wenn ich das Grundstück direkt in R-Studio erstellen (siehe linke Seite des beigefügten Screenshot).

fand ich einen Weg, um diese Streifen zu entfernen, indem die Daten vor der Aggregation:

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

So verstehe ich, dass diese Streifen von Stapeln alle anderen Gruppen in den Datensätzen kommen sollte. Diese Theorie erscheint plausibel, da ich zwei Streifen bekomme, wenn ich den Datensatz auch nach Jahren zusammenfasse (2 Uniques im MPG-Datensatz).

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

Aber ich dachte, dass ggplot2 automatisch die Aggregation für mich tut, wenn ich Stat gesetzt-Identität? Tatsächlich funktioniert es direkt in R-Studio. Vielleicht hat das Problem mehr mit Knitr zu tun?

Ich glaube, dass ich das gleiche Problem in der Vergangenheit nicht hatte. Vielleicht hat sich etwas mit einem Update geändert? Eigentlich haben alle meine Kollegen (6 andere Mac und Windows Computer) genau das selbe Problem.

R Version 3.4.0 (2017.04.21)
Plattform: x86_64-W64-mingw32/x64 (64-Bit)
ggplot2: 2.2.1
knitr: 1.15.1

+0

Versuchen Sie es mit 'stat = "count"', wenn Sie ggplot wollen, dass es für Sie zu aggregieren. 'stat =" identity "' zeichnet die Zahlen in der Datei auf, ohne zu aggregieren, also stapelt man einfach viele kurze Balken. –

+1

@Andrew, ich denke, sie sind Summen, nicht zählt. 'ggplot (mpg, aes (x = as.factor (cyl), y = hwy)) + stat_summary (fun.y = 'sum', geom = 'bar')' sollte funktionieren. – Axeman

+1

@Axeman - Entschuldigung, ja, ich stimme zu. –

Antwort

2

Wie in einem Kommentar erwähnt, kann der Dateityp für die Grafik die Art und Weise beeinflussen, in der die Grafik in der Ausgabe-PDF gerendert wird.

den bereitgestellten Brocken Verwendung:

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

Der Standard dev ist pdf und die resultierende Grafik im PDF-Format ist wie in der Frage Beitrag gezeigt:

enter image description here

Wenn Sie auf explizite sind die dev zu verwenden, wie in der Chunk unten, dann wird ein PNG generiert und das Bild in der resultierenden PDF ist wie gewünscht.

```{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

Verwandte Themen