2017-04-01 14 views
0

私はRとggplot2が初めてです。どんな助けでも大歓迎です!私は1-4(私は平均1のバーグラフをプロットし、与えられたweight_band下側の2辺を意味しようとしています、私はこのデータセットでは標準偏差と範囲のバンドを持つボックスプロット

weight band mean_1  mean_2 SD_1  SD_2 min_1 min_2 max_1 max_2 
    1   5   .   3  . 0.17  . 27 . 
    2   6   .   3.7  .  1.1  . 23 . 
    3   8   8   4.3  4.1  1 1.749 27 27 
    4   8   9   3.3  6  2.3 1.402 13 42 

をグラフ化しようとしています、ここではデータセットを持っています)、max(1 & 2)およびmax(1 & 2)の誤差バーを適用することにより、 "。"そのデータがないことを示します。

私はstackoverflowや他のウェブサイトから閲覧しましたが、私が探している解決策が見つかりませんでした。次のように

私が持っているコードは次のとおりです。

sk1 <- read.csv(file="analysis.csv")  

library(reshape2) 

sk2 <- melt(sk1,id.vars = "Weight_band") 
c <- ggplot(sk2, aes(x = Weight_band, y = value, fill = variable)) 
c + geom_bar(stat = "identity", position="dodge") 

しかし、この方法を使用して、それが唯一の唯一の平均値をプロットしたグラフを制限するものではありません。そうするための一連のコードはありますか?さらに、それぞれの平均に誤差バーとしてminとmaxを適用する方法がありますか?私は皆に前もって感謝します。これは:)これは、あなたが近づくべきで、我々はもう少しデータクリーニングを行う必要があるとggplotを幸せにするために整形Rのggplot2機能の私の理解

答えて

1

を進める上で大いに

library(reshape2) 

df <- read.table(text = "weight_band mean_1  mean_2 SD_1  SD_2 min_1 min_2 max_1 max_2 
       1   5   .   3  . 0.17  . 27 . 
       2   6   .   3.7  .  1.1  . 23 . 
       3   8   8   4.3  4.1  1 1.749 27 27 
       4   8   9   3.3  6  2.3 1.402 13 42", header = T) 
sk2 <- melt(df,id.vars = "weight_band") 

## Clean 

sk2$group <- gsub(".*_(\\d)", "\\1", sk2$variable) 
# new column used for color or fill aes and position dodging 
sk2$variable <- gsub("_.*", "", sk2$variable) 
# make these variables universal not group specific 

## Reshape again 

sk3 <- dcast(sk2, weight_band + group ~ variable) 
# spread it back to kinda wide format 
sk3 <- dplyr::mutate_if(sk3, is.character, as.numeric) 
# convert every column to numeric if character now 

# plot values seem a little wonky but the plot is coming together 
ggplot(sk3, aes(x = as.factor(weight_band), y = mean, color = as.factor(group))) + 
    geom_bar(position = "dodge", stat = "identity") + 
    geom_errorbar(aes(ymax = max, ymin = min), position = "dodge") 

enter image description here

を私に役立つだろう
+1

うわー!どうもありがとうございます。これは間違いなくalotに役立ちます! –

+0

簡単な質問です。私は体重バンドのカバーをscale_colour_manual( "group"、breaks = c(1,2)、values = c( "#0072B2"、 "#009E73")) 'code'で変更しようとしましたが、仕事はありません。私は間違ってそれをコーディングする可能性が最も高いです。 –

+0

代わりに '+ scale_colour_manual(値= c("#0072B2 "、"#009E73 "))'を試してください。 – Nate