2017-03-06 8 views
0

Ich versuche ein Step-Plot mit verschiedenen Segmentfarben zu zeichnen. Ich habe versucht, die folgenden, aber das zeigt nur das letzte Segment:Wie bekomme ich ein Step-Plot mit geom_step mit verschiedenen Farben für die Segmente

library(ggplot2) 

mcgwh <- structure(list(Technology = c("FOS", "WOOD", "NUCL", "HYD", "HYDS","EWI", "WPV", "WPV"), MC = c(0.00909452733164008, 0.0216749226571617,  0.0473803148589957, 0.05619182757182, 0.070613003340574, 0.0854965730717766,  0.156860794757306, 0.156860794757306), Capacity = c(0, 1190.45103330156,  1419.2619999981, 27551.2619999981, 44237.2619999981, 65110.2619999981,  66943.2619999981, 67990.7380000019)), .Names = c("Technology", "MC", "Capacity"), class = "data.frame", row.names = c(NA, 8L)) 

ggplot(data = mcgwh, aes(x = Capacity)) + geom_step(aes(y = MC,colour = factor(Technology))) 
+1

Sie meinen, Sie die Punkte mit verschiedenen Farben verbinden möchten wie 'ggplot (Daten = mcgwh, aes (x = Kapazität)) + geom_path (aes (y = MC, Farbe = Faktor (Technologie), Gruppe = 1))'? – lukeA

+0

Die obige Antwort funktioniert, wenn Sie einfach direkten Leitungsweg von jedem Punkt wollten, die Antwort, die ich unten zur Verfügung stellte, wenn Sie Schritte wollen. – Djork

+0

Ja und nein. Mit der Lösung von R.S. Ich kann folgendes tun und habe die vertikalen Linien schwarz und die horizontalen Linien farbig. Mit meinem Beispiel kann ich das nicht: ggplot (data = mcgwh2) + geom_path (aes (x = Kapazität, y = MC, group = 1)) + geom_path (aes (x = Kapazität, y = MC, color = Technologie)) – arnyeinstein

Antwort

2

Ich glaube, man kann nicht einfach dies durch die Zuordnung aes(colour = factor(Technology) in geom_step tun. Sie haben 2 Möglichkeiten:

Verwenden geom_step und geom_point in Kombination mit geom_point auf den aes unter (color = Faktor (Technologie)

ggplot(data = mcgwh, aes(x = Capacity, y = MC)) + geom_step() + geom_point(aes(colour = Technology)) 

enter image description here

Wenn Sie Schritt Linien farbcodiert wollen durch. Englisch: www.weisang.info/index.php?id=143&t...h=fbcd8dcdcd Sie müssen Dummy - Intervall - Einträge mit (x = Capacity, y = MC) Punkten erstellen, die sich horizontal vom vorhergehenden Punkt und vertikal zum nächsten Punkt verbinden, indem Sie Technology (label) und MC (y Variable) jeweils 2x von 1: (nrow (mcgwh) -1) und Capacity (X varicable) je 2x 2: nrow (mcgwh)

mcgwh2 <- cbind.data.frame(c(rep(mcgwh$Technology[1:(nrow(mcgwh)-1)], each=2), mcgwh$Technology[nrow(mcgwh)]), c(rep(mcgwh$MC[1:(nrow(mcgwh)-1)], each=2), mcgwh$MC[nrow(mcgwh)]), c(mcgwh$Capacity[1], rep(mcgwh$Capacity[2:nrow(mcgwh)], each=2))) 
colnames(mcgwh2) <- c("Technology", "MC", "Capacity") 
ggplot(data = mcgwh2) + geom_path(aes(x = Capacity, y = MC, colour = Technology, group=1)) 

enter image description here

Oder alternativ

ggplot(data = mcgwh2) + geom_step(aes(x = Capacity, y = MC)) + geom_line(aes(x = Capacity, y = MC, colour = Technology)) 

enter image description here

+0

THanks! Was macht die Gruppe = 1, oder wo finde ich die Dokumentation dazu? – arnyeinstein

+0

@ user3270634 group = 1 zeigt eine einzelne Linie an, die alle Punkte verbindet. http://docs.ggplot2.org/current/aes_group_order.html. Bitte akzeptieren Sie die Antwort, wenn Sie zufrieden sind, so kann es markiert werden. – Djork

Verwandte Themen