2017-09-18 24 views
0

私は600人の回答者のデータセットを持っています。 2013年、2014年、2015年、2016年、2017年の5年間で600人の回答者のそれぞれに指標値があります。また、回答者ごとに都市の列があります。私はプロットを作成したいと思います。ここでは、600人の回答者のそれぞれについて、Y軸に指標値があり、X軸に年数があるような、折れ線グラフを使って1つの折れ線グラフをプロットします。私は都市別に折れ線グラフの色を分けました。さらに、それぞれの市町村の回答者の中央値線があるように、中央値の指標線を追加したいと思います。私は統合された中央値線を作成することができましたが、複数のメジアンをプロットしようとするとエラーになります。私は、複数の中央のラインを作るために、次のコードを使用してみましたが、私はエラーを取得するグラフは対称であるので、これは唯一のダミーデータである... - エラー:美学パネルデータの1つのプロットに複数のメジアンをプロットする

library(ggplot2) 
library(dplyr) 
library(tidyr) 
library(magrittr) 

sample_no <- c(1:600) 
city <- c(rep("A",150), rep("B",250), rep("C", 200)) 
indicator_2013 <- runif(600, min=0, max=1000) 
indicator_2014 <- runif(600, min=0, max=1000) 
indicator_2015 <- runif(600, min=0, max=1000) 
indicator_2016 <- runif(600, min=0, max=1000) 
indicator_2017 <- runif(600, min=0, max=1000) 

df <- data.frame(sample_no, city, indicator_2013, indicator_2014, indicator_2015, indicator_2016, indicator_2017) 
df1 <- df %>% 
    gather(indicator_2013, indicator_2014, indicator_2015, indicator_2016, indicator_2017, key="Year", value = "Indicator") 

df1 %>% 
    ggplot(aes(x=Year, y=Indicator, color=as.factor(city))) + 
    geom_line(aes(group = sample_no), alpha = .5, size = 0.7) + 
    labs(col = "City") + 
    stat_summary(aes(y = Indicator, group =1), fun.y=median, geom = "line", color = "black", size = 1) 

注 - ここで私が使用しているコードがありますいずれかの長さが1または(5)のデータと同じでなければなりません:色、サイズ

stat_summary(aes(y = Indicator, group =1), fun.y=median, colour=city, geom="line", size =1) 

私は、ドキュメントや他のRのブログの記事のために周りを見回したが、何か有用なものを見つけることができませんでした。

答えて

1

私が正しくあなただけの街ではなく1にgroup引数を変更する必要があなたを理解している場合:

stat_summary(aes(y = Indicator, group =city)... 

全コード:

library(ggplot2) 
library(dplyr) 
library(tidyr) 
library(magrittr) 
sample_no <- c(1:600) 
city <- c(rep("A",150), rep("B",250), rep("C", 200)) 
indicator_2013 <- runif(600, min=0, max=1000) 
indicator_2014 <- runif(600, min=0, max=1000) 
indicator_2015 <- runif(600, min=0, max=1000) 
indicator_2016 <- runif(600, min=0, max=1000) 
indicator_2017 <- runif(600, min=0, max=1000) 
df <- data.frame(sample_no, city, indicator_2013, indicator_2014, indicator_2015, indicator_2016, indicator_2017) 
df1 <- df %>% 
    gather(indicator_2013, indicator_2014, indicator_2015, indicator_2016, indicator_2017, key="Year", value = "Indicator") 
df1 %>% 
    ggplot(aes(x=Year, y=Indicator, color=as.factor(city))) + 
    geom_line(aes(group = sample_no), alpha = .5, size = 0.7) + 
    labs(col = "City") + 
    stat_summary(aes(y = Indicator, group =city), fun.y=median, geom = "line", color = "black", size = 1) 

さらに色引数は外ですることはできませんaes()列:都市などの変数名を使用する場合は、市によって色分けされた線を表示するには、ここに正しい方法があります。

stat_summary(aes(y = Indicator, group =city, color = city), fun.y=median, geom="line", size =1) 

ここでは[コメントでの質問への答え]

は完全なコードです:

library(ggplot2) 
library(dplyr) 
library(tidyr) 
library(magrittr) 
sample_no <- c(1:600) 
city <- c(rep("A",150), rep("B",250), rep("C", 200)) 
indicator_2013 <- runif(600, min=0, max=1000) 
indicator_2014 <- runif(600, min=0, max=1000) 
indicator_2015 <- runif(600, min=0, max=1000) 
indicator_2016 <- runif(600, min=0, max=1000) 
indicator_2017 <- runif(600, min=0, max=1000) 
df <- data.frame(sample_no, city, indicator_2013, indicator_2014, indicator_2015, indicator_2016, indicator_2017) 
df1 <- df %>% 
    gather(indicator_2013, indicator_2014, indicator_2015, indicator_2016, indicator_2017, key="Year", value = "Indicator") 
df1 %>% 
    ggplot(aes(x=Year, y=Indicator, color=as.factor(city))) + 
    geom_line(aes(group = sample_no), alpha = .5, size = 0.7) + 
    labs(col = "City") + 
    stat_summary(aes(y = Indicator, group =city), fun.y=median, geom = "line", color = "black", size = 1) + scale_x_discrete(expand=c(0,0)) 

あなただけのスペースを削除し、第一の要因から、x軸を開始するscale_x_discrete(expand=c(0,0))を追加する必要がありますレベル。

+0

ありがとう、これは完璧に動作します!私は2つのフォローアップの質問を持っていました - 1。stat_summary内のグループはどのような異なる値を取るのですか? 1はいつ使われますか?私は見上げた?stat_summaryしかしそれはあまり言わない。 2.このコードを使用して生成されたグラフでは、座標(0,0)と最初のx-asix目盛りラベルの間で多くのプロット空間が無駄になります。最後のx-asis目盛りラベルとグラフの終了位置も同様です。どのようにこれを減らすことができますか?おそらくこれは別の投稿であるはずですが、私はggplotのドキュメントをたくさん見ましたが、何かを見つけられませんでした。 – user3816784

+1

グループ= 1は、すべてのポイントを1つの行に接続したいことを示します。 –

+0

メインの回答で2番目の質問に答えました。 –

関連する問題