2016-09-15 3 views
0

Ich benutze R und ggplot2, ich habe zwei Datenrahmen. Sie enthalten viel mehr Daten als ich zeige. Sie gehen von 1970 bis 2016.Färbung einer bestimmten Zeile in einem Liniendiagramm, in r, nach der Kombination von zwei Datenrahmen

Kopf (Teilnahme)

Tm Attendance Attend/G BatAge PAge BPF PPF #HOF #A-S #a-tA-S Est. Payroll Time Managers year Chall Succ Succ% 
ATL 1078848 13319 29.5 28.7 105 105 4 4  13    2:33 Harris 1970 <NA> <NA> <NA> 
BAL 1057069 13050 28.8 28.5 101 98 3 7  15    2:34 Weaver 1970 <NA> <NA> <NA> 

head(df) 
year avg_attendance 
1970 1197806 
1971 1216392 

Ich habe sie kombiniert diese Grafik

enter image description here

mit diesem Code,

r <- ggplot() 
r + geom_line(data = attendance, aes(x = year, y = Attendance, group = Tm), colour = "Grey") + 
geom_line(data = df, aes(x = Year, y = avg_attendance), colour = "red") 

Aber in der Anwesenheitsdaten erstellen Rahmen Ich möchte eine der Linien für die Tm (Teams) ausmalen. Der Wert ist MIL, um die durchschnittliche Teilnahme.

konnte ich MIL einzufärben diesen Code verwenden,

p <- ggplot(data = attendance, aes(x = year, y = Attendance, group = Tm)) 
p + geom_line(aes(colour = Tm == "MIL")) + scale_color_manual(values = c("#CCCCCC","#000066")) 

enter image description here

Als ich versuchte, die df Datenrahmen hinzufügen, aber ich hielt einen Fehler.

Error in eval(expr, envir, enclos): object 'Tm' not found. 

Grundsätzlich, kann ich die MIL-Variable in der ursprünglichen Tabelle färben? Ist es auch möglich, dass es mehr herausragt? Zum Beispiel, im zweiten Graphen wird es von ein paar Zeilen überlagert.

Wirklich, will ich versuche zu tun ist MIL Teilnahme zu der durchschnittlichen Teilnahme zu vergleichen.

Alle und jede Hilfe wird sehr geschätzt.

Entschuldigung, Sie sollten in der Lage sein, diese Daten zu verwenden. Für die df-Daten können Sie die oben genannten verwenden und es sollte funktionieren. Das Liniendiagramm wird natürlich nicht dasselbe sein, aber ich denke, es sollte für den Code funktionieren, nach dem ich suche.

Tm Attendance Attend/G BatAge PAge BPF PPF HOF Time year Chall Succ Succ% 
1 ATL 1078848 13319 29.5 28.7 105 105 4 2:33 1970 <NA> <NA> <NA> 
2 BAL 1057069 13050 28.8 28.5 101 98 3 2:34 1970 <NA> <NA> <NA> 
3 BOS 1595278 19695 26.5 27.9 108 107 1 2:34 1970 <NA> <NA> <NA> 
4 CAL 1077741 13305 26.6 26.0 96 97 0 2:35 1970 <NA> <NA> <NA> 
5 CHC 1642705 20534 30.0 27.7 111 110 5 2:34 1970 <NA> <NA> <NA> 
6 CHW  495355  5897 27.0 27.0 101 102 1 2:29 1970 <NA> <NA> <NA> 
7 CIN 1803568 22266 25.9 25.2 104 103 2 2:31 1970 <NA> <NA> <NA> 
8 CLE  729752  9009 26.2 25.9 104 105 0 2:36 1970 <NA> <NA> <NA> 
9 DET 1501293 18534 28.8 26.6 101 101 1 2:39 1970 <NA> <NA> <NA> 
10 HOU 1253444 15475 26.6 26.3 96 96 1 2:36 1970 <NA> <NA> <NA> 
11 KCR  693047  8773 26.4 26.2 99 100 0 2:36 1970 <NA> <NA> <NA> 
12 LAD 1697142 20952 27.9 26.7 95 94 1 2:36 1970 <NA> <NA> <NA> 
13 MIL  933690 11527 29.2 27.8 100 101 0 2:36 1970 <NA> <NA> <NA> 
14 MIN 1261887 15579 28.6 28.1 103 102 3 2:38 1970 <NA> <NA> <NA> 
15 MON 1424683 17809 27.7 26.7 99 101 0 2:35 1970 <NA> <NA> <NA> 
16 NYM 2697479 32896 26.5 26.1 100 99 2 2:36 1970 <NA> <NA> <NA> 
17 NYY 1136879 14036 27.0 27.5 95 95 0 2:30 1970 <NA> <NA> <NA> 
18 OAK  778355  9609 27.7 27.2 97 95 4 2:31 1970 <NA> <NA> <NA> 
19 PHI  708247  8853 26.7 28.8 97 99 1 2:33 1970 <NA> <NA> <NA> 
20 PIT 1341947 16365 27.7 27.9 97 96 3 2:30 1970 <NA> <NA> <NA> 
21 SDP  643679  7947 26.6 26.4 95 98 0 2:32 1970 <NA> <NA> <NA> 
22 SFG  740720  9145 28.0 28.4 99 99 4 2:48 1970 <NA> <NA> <NA> 
23 STL 1629736 20120 27.7 26.4 102 102 4 2:31 1970 <NA> <NA> <NA> 
24 WSA  824789 10183 28.1 27.6 95 95 0 2:33 1970 <NA> <NA> <NA> 
25 ATL 1006320 12272 27.2 28.5 106 107 5 2:26 1971 <NA> <NA> <NA> 
26 BAL 1023037 13286 29.9 29.5 99 97 3 2:25 1971 <NA> <NA> <NA> 
27 BOS 1678732 20984 27.9 29.1 108 107 3 2:27 1971 <NA> <NA> <NA> 
28 CAL  926373 11437 27.7 26.4 92 93 0 2:31 1971 <NA> <NA> <NA> 
29 CHC 1653007 20407 30.2 28.7 113 112 4 2:26 1971 <NA> <NA> <NA> 
30 CHW  833891 10295 25.6 25.9 103 104 0 2:30 1971 <NA> <NA> <NA> 
31 CIN 1501122 18532 26.8 25.1 95 94 2 2:21 1971 <NA> <NA> <NA> 
32 CLE  591361  7301 26.3 25.1 109 110 0 2:36 1971 <NA> <NA> <NA> 
33 DET 1591073 19643 29.6 26.7 105 104 1 2:42 1971 <NA> <NA> <NA> 
34 HOU 1261589 15575 26.1 26.5 97 97 1 2:27 1971 <NA> <NA> <NA> 
35 KCR  910784 11244 27.2 26.7 98 98 0 2:29 1971 <NA> <NA> <NA> 
36 LAD 2064594 25489 28.7 28.4 94 93 2 2:28 1971 <NA> <NA> <NA> 
37 MIL  731531  8921 27.1 26.0 98 99 0 2:29 1971 <NA> <NA> <NA> 
38 MIN  940858 11910 28.5 27.3 103 102 3 2:36 1971 <NA> <NA> <NA> 
39 MON 1290963 16137 28.3 27.0 99 101 0 2:27 1971 <NA> <NA> <NA> 
40 NYM 2266680 27984 26.6 26.1 98 98 2 2:28 1971 <NA> <NA> <NA> 
41 NYY 1070771 13219 28.3 27.3 94 94 0 2:28 1971 <NA> <NA> <NA> 
42 OAK  914993 11296 26.8 26.5 98 96 4 2:34 1971 <NA> <NA> <NA> 
43 PHI 1511223 18657 26.3 28.6 100 102 1 2:29 1971 <NA> <NA> <NA> 
44 PIT 1501132 18764 27.7 27.7 102 99 3 2:27 1971 <NA> <NA> <NA> 
45 SDP  557513  6883 26.4 26.3 93 95 0 2:25 1971 <NA> <NA> <NA> 
46 SFG 1106043 13655 27.3 28.5 99 99 4 2:38 1971 <NA> <NA> <NA> 
47 STL 1604671 19569 28.5 27.1 104 104 4 2:26 1971 <NA> <NA> <NA> 
48 WSA  655156  8088 27.6 26.4 93 95 0 2:28 1971 <NA> <NA> <NA> 
+1

bitte ein reproduzierbares Beispiel bieten ... –

Antwort

1

ggplot wird wieder für die group Variable suchen und finden es nicht. Sie sollten in der Lage sein, entweder Tm zu df hinzuzufügen (Setzen Sie es auf "Avg", wenn Sie möchten), oder group auf NULL.

Um die Linie nach vorne zu bringen, müssen Sie die Faktorstufen festlegen (für Punkte funktioniert die Sortierung normalerweise, aber die Linien werden zuerst berechnet, nach Faktorstufen, implizit oder explizit sortiert und dann geplottet).

Da Sie keine Beispieldaten bereitgestellt haben, sind hier Arbeitsversionen von jedem mit einem eingebauten Satz.

# Generate average line 
average <- 
    ChickWeight %>% 
    group_by(Time) %>% 
    summarise(weight = mean(weight)) 

# Specify levels to get the desired one at the end 
# Will be a bit trickier with text, but doable 
chickLevs <- c((1:50)[-20], 20) 


# Plot with adding the variable: 
ggplot(ChickWeight %>% 
     mutate(plotChick = factor(Chick, levels = chickLevs)) 
     , aes(x = Time, y = weight, group = plotChick)) + 
    geom_line(aes(col = Chick == 20)) + 
    geom_line(data = average %>% mutate(plotChick = "Avg") 
      , col = "red3") + 
    scale_color_manual(values = c("#CCCCCC","#000066")) 


# Plot setting group to NULL 
ggplot(ChickWeight %>% 
     mutate(plotChick = factor(Chick, levels = chickLevs)) 
     , aes(x = Time, y = weight, group = plotChick)) + 
    geom_line(aes(col = Chick == 20)) + 
    geom_line(data = average 
      , aes(group = NULL) 
      , col = "red3") + 
    scale_color_manual(values = c("#CCCCCC","#000066")) 
+1

vielleicht berücksichtigen nicht die Frage zu beantworten, bis die OP hat geschrieben tatsächlich die Daten (auf diese Weise die OP wird geschoben zu lernen, wie eine gut formatiert Frage stellen) oder prüfen, mit Beispieldaten, die Sie selbst zur Verfügung gestellt haben, bevor Sie einen Code eingeben, von dem Sie denken, er könnte "ein paar Stücke falsch haben". Nachdem ich das gesagt habe, denke ich, dass Ihre Intuition in Ihrer Antwort richtig ist ... –

+1

@CyrusMohammadian - Sie sind absolut richtig. Ich rannte zum Mittagessen und dachte, ich könnte es schnell erledigen. Ich hätte warten sollen, bis ich die Zeit hatte, es richtig zu machen. Ich habe editiert, um einen eingebauten Datensatz zu verwenden. OP, du solltest wirklich reproduzierbare Beispiele liefern. –

+0

Sorry, ich bin ziemlich neu in R und Stack-Überlauf, ich denke, die Daten, die ich oben zur Verfügung gestellt habe, sollten funktionieren. Danke für Ihre Hilfe. – Julien

Verwandte Themen