2017-09-18 2 views
2

Ich habe derzeit einige Daten, die im Grunde ein Faktor und ein Datum sind. Hier ist eine vereinfachte Vorstellung davon.Trennlinien mit ggplot (geom_line) bei Verwendung von stat = 'count'

date <- c(1901,1901,1901,1902,1902,1902,1901,1903,1902,1904,1902,1903,1903,1904,1905,  1901,1903,1902,1904,1902,1902,1903,1904,1902,1902,1901,1903,1903,1904,1905, 1905,1906,1907,1908,1901,1908,1907,1905,1906,1902,1903,1903,1903,1904,1905,1901,1901,1901,1902,1902,1902,1901,1903,1902,1904,1902,1903,1903,1904,1905, 
1901,1903,1902,1904,1902,1902,1903,1904,1902,1902,1901,1903,1903,1904,1905, 
1905,1906,1907,1908,1901,1908,1907,1905,1906,1902,1903,1903,1903,1904,1905, 
1905,1906,1907,1908,1901,1908,1907,1920,1920,1920,1921,1921,1921,1921,1921) 

genre <- sample(c("fiction","nonfiction"),105,replace=TRUE) 
data <- as.data.frame(cbind(date,genre)) 
# I know this is not an ideal way to coerce to a numeric 
data$date <- as.numeric(as.character(data$date)) 

So weit, so gut. Wie Sie sehen werden, wenn Sie es jedoch plotten, gibt es eine große Lücke in den Daten, die die Linie verdunkelt. Diese Handlung wird illustrieren.

library(ggplot2) 
ggplot(data,aes(x=date,color=genre)) + geom_line(stat='count') 

Example Plot 1.

I this post gesehen haben, die eine Gruppe schlägt vor, das Hinzufügen, die ich tun kann.

data$group <- ifelse(data$date < 1910,1,2) 
ggplot(data,aes(x=date,color=genre,group=group)) + geom_line(stat='count') 

Example Plot 2

So scheint es keinen Weg, um die Farbästhetik ich für meine Ausgabe ein group, währendstat='count' mit und angeben möchten zu bewahren. Dieses Grundstück zum Beispiel zeigt sehr schön die Lücke in den Daten, verliert aber die Farbe/Unterscheidung auf dem Grundlage des genre Faktor:

ggplot(data,aes(x=date,color=genre,group=group)) + geom_line(stat='count') 

So ist dies nicht möglich? Fehle ich etwas? Gibt es einen besseren Weg, dies zu tun, oder muss ich summarize oder anders mein Datum mutieren, so dass ich nicht auf stat='count' in der Plot-Phase verlassen?

+0

Sie nicht auf 'geom_bar' wechseln möchten, Daten wie diese würde es großartig aussehen. – PoGibas

+0

@PoGibas Messepunkt; aber das ist nur eine minimale Probe; im realen Fall gibt es eine größere Auswahl an "Daten", * und * mehr "Genres", so dass ein Barplot überfüllt und schwer lesbar erscheint, aber ein Liniendiagramm (mit, sagen wir, 6 Zeilen, über 40 Jahre) wäre noch (hoffentlich) lesbar. – cforster

Antwort

1

Sie können "genre" und "group" als Ihre group Variable verwenden. Hier mache ich das über die interaction Funktion.

ggplot(data,aes(x = date, color = genre, group = interaction(genre, group))) + 
    geom_line(stat = 'count') 

enter image description here

+0

Super! Klappt wunderbar. Danke vielmals! Ich habe mich nicht darauf gefreut, eine Reihe von Zusammenfassungen zu jonglieren. – cforster

Verwandte Themen