2016-08-20 8 views
1

Ich habe eine Daten, bestehend aus 14 verschiedenen Zeitperioden, wo ich es so grafisch darstellen möchte, dass der Betrachter sehen kann, wo die 14 Perioden liegen. Früher habe ich dies durch Verwendung unterschiedlicher Farben erreichenR: Wie zeichne ich ein Liniendiagramm mit offensichtlicher Unterscheidung zwischen verschiedenen Zeiträumen (Linie mit Punkten)

mycolors = c(brewer.pal(name="Set2", n = 7), brewer.pal(name="Set2", n = 7)) 
ggplot(derv, aes(x=Date, y=derv, colour = Season)) + 
geom_point() + 
geom_abline(intercept = 0, slope = 0) + 
geom_abline(intercept = neg.cut, slope = 0) + 
geom_abline(intercept = pos.cut, slope = 0) + 
scale_color_manual(values = mycolors) + ggtitle(" Derivative")+ylab("Derivative") 

enter image description here

ich den obigen Code zu Produkt wie Plot verwendet haben, aber jetzt in einem neuen Bericht, kann ich nur Schwarz-Weiß-Schema verwenden. Ich frage mich also, wie ich eine solche Handlung in R auftragen kann. Ich habe überlegt, alternierende Linientypen für die 14 verschiedenen Zeiträume zu verwenden, aber ich weiß nicht, wie ich durch ggplot erreichen kann. Ich habe den folgenden Code versucht, aber es funktioniert nicht. Der Linientyp blieb gleich.

+0

können Sie bitte ein reproduzierbares Beispiel teilen? – mtoto

+0

Sie müssen den Linientyp ästhetisch auf Werte von "Season" einstellen, d. H. 'Ggplot (derv, aes (x = Datum, y = derv, Linientyp = Season))'. –

Antwort

1

Wenn Sie zeigen müssen, wo sich die Jahreszeit ändert, können Sie nicht einfach einen alternierenden Linientyp oder eine alternierende Punktmarkierung verwenden? Unten finden Sie zwei Beispiele. Sie können mit verschiedenen Punktmarkierungen und Linientypen spielen, um das gewünschte Aussehen zu erhalten. Weitere Informationen zum Erstellen von Linientypen finden Sie unter this SO answer. Weitere Informationen zu zusätzlichen Punktmarkierungen (über den Standard hinaus, der über pch erhältlich ist), siehe z. B. here und here. Ich habe auch eine Möglichkeit hinzugefügt, um die drei horizontalen Zeilen mit weniger Code hinzuzufügen.

# Fake data 
x = seq(0,2*pi,length.out=20*14) 
dat=data.frame(time=x, y=sin(x) + sin(5*x) + cos(2*x) + cos(7*x), 
       group=0:(length(x)-1) %/% 20) 

ggplot(dat, aes(time, y)) + 
    geom_hline(yintercept=c(-0.5,0,0.5), colour="grey50") + 
    geom_point(aes(shape=factor(group), size=factor(group))) + 
    scale_shape_manual(values=rep(c(3,15),7)) + 
    scale_size_manual(values=rep(c(2,1.5),7)) + 
    theme_bw() + guides(shape=FALSE, size=FALSE) 

ggplot(dat, aes(time, y, linetype=factor(group))) + 
    geom_hline(yintercept=c(-0.5,0,0.5), colour="grey50") + 
    geom_line(size=0.8) + 
    scale_linetype_manual(values=rep(1:2,7)) + 
    theme_bw() + guides(linetype=FALSE) 

enter image description here

Verwandte Themen