2016-09-15 7 views
0

Rとggplot2を使用していますが、2つのデータフレームがあります。それらはどちらも私が示しているよりも多くのデータを含んでいます。彼らは1970年から2016年に行く。2つのデータフレームを結合した後、折れ線グラフの特定の線を塗りつぶす

私はこのコードを使用して、このグラフィック

enter image description here

を作成するために、それらを組み合わせてきたヘッド(出席)

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 

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") 

しかし、出席データでフレーム私はTm(チーム)のためのラインの1つに色付けしたい。値は平均出席者のMILです。 Iは、DFデータフレームを追加しようとした場合

私はこのコードを使用してMILを着色することができた、

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

は、しかし、私はエラーを取得維持しました。

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

基本的に、元のグラフのMIL変数に色を付けることはできますか?もっと目立たせることも可能ですか?たとえば、2番目のグラフでは、数行で重なっています。

本当に、私がしたいのは、MILの出席を平均出席者と比較することです。

すべてのご協力をいただければ幸いです。

お詫び申し上げます。このデータを使用できるはずです。 dfデータの場合は、上のものを使用することができ、それはうまくいくはずです。折れ線グラフは明らかに同じではありませんが、私が探しているコードではうまくいくはずです。

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

... –

答えて

1

ggplot再びgroup変数を探して、それを見つけていません。 Tmdfに追加するか(必要に応じて「平均」に設定する)、groupNULLに設定することができます。

ファクタレベルを設定する必要があります(ポイント、ソートは通常動作しますが、最初にラインが計算され、ファクタレベルでソートされます。暗黙的または明示的にプロットされます)。

サンプルデータを提供していないので、組み込みセットを備えたそれぞれの動作バージョンがあります。

# 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

は、おそらくOPは、実際にデータを掲載しているまで、質問に答えていない考える(その方法は、OPがうまくフォーマットされた質問をする方法を学ぶためにプッシュされます)、または使用することを検討して再現性の例を提供してください「いくつかの部分が間違っている」と思われるコードを投稿する前に、自分で用意したサンプルデータ。それを言って、私はあなたの直感はあなたの答えに正しいと思う... –

+1

@CyrusMohammadian - あなたは絶対に正しいです。私は昼食を食べていて、すぐにそれを書き留めることができると思った。私はそれを正しくする時間があるまで待つべきだった。私は組み込みのデータセットを使用するように編集しました。 OP、あなたは本当に再現可能な例を提供するべきです。 –

+0

申し訳ありませんが、Rとスタックのオーバーフローについてはかなり新しいです。上記のデータはうまくいくはずです。ご協力いただきありがとうございます。 – Julien

関連する問題