26

異なる日に異なるグループの測定が行われるデータセットがあります。

さまざまなグループのさまざまな日の測定値を表すバーを横に並べて、バーのグループを測定日に従って間隔を空け、エラーバーを重ねて表示したいと考えています。

geom_bar回避と の回避を一致させることに問題がありgeom_errorbarます。

簡単なコードを次に示します。

days          = data.frame(day=c(0,1,8,15));
groups        = data.frame(group=c("A","B","C","D", "E"), means=seq(0,1,length=5));


my_data       = merge(days, groups);


my_data$mid   = exp(my_data$means+rnorm(nrow(my_data), sd=0.25));
my_data$sigma = 0.1;


png(file="bar_and_errors_example.png", height=900, width=1200);
plot(ggplot(my_data, aes(x=day, weight=mid, ymin=mid-sigma, ymax=mid+sigma, fill=group)) +
     geom_bar      (position=position_dodge(width=0.5))                                   +
     geom_errorbar (position=position_dodge(width=0.5), colour="black")                   +
     geom_point    (position=position_dodge(width=0.5), aes(y=mid, colour=group)));
dev.off();

プロットでは、errorsegments はバーからの固定オフセットで表示されます (申し訳ありませんが、ggplot2 が主題であっても、初心者にはプロットは許可されていません)。

で binwidth を調整するgeom_barと、オフセットは固定されず、日ごとに変化します。

注意して、それとタンデムgeom_errorbarでかわします。残りの2つに同意するにはgeom_pointどうすればよいですか?geom_bar

どんな助けでも感謝します。

4

4 に答える 4

23

配置の問題は、バーが意図したデータを表していないことが原因の 1 つです。以下は正しく並んでいます:

ggplot(my_data, aes(x=day, weight=mid, ymin=mid-sigma, ymax=mid+sigma, fill=group)) +
     geom_bar      (position=position_dodge(), aes(y=mid), stat="identity") +
     geom_errorbar (position=position_dodge(width=0.9), colour="black") +
     geom_point    (position=position_dodge(width=0.9), aes(y=mid, colour=group))

ここに画像の説明を入力

于 2012-10-24T15:14:55.130 に答える
4

最初の変更は、高度な R スタイル ガイドに従ってコードを再フォーマットしました。

days <- data.frame(day=c(0,1,8,15))

groups <- data.frame(
    group=c("A","B","C","D", "E"), 
    means=seq(0,1,length=5)
    )

my_data <- merge(days, groups)

my_data$mid <- exp(my_data$means+rnorm(nrow(my_data), sd=0.25))
my_data$sigma <- 0.1

データを見ると、その日が要因であり、他のすべては同じであることがわかります。

str(my_data)

プロットから空白を削除するために、日の列を係数に変換しました。続行する前に、レベルが適切な順序になっていることを確認してください。

my_data$day <- as.factor(my_data$day) 
levels(my_data$day)

私が行った次の変更は、aes引数で y を定義することでした。ご承知のとおり、これにより ggplot は y 値を探す場所を知ることができます。次に、position 引数を「dodge」に変更し、引数を追加しましたstat="identity"。引数は、"identity"x で y をプロットするように ggplot に指示します。geom_errorbarから回避位置を継承するgeom_barため、未指定のままにすることができますが、そうでgeom_pointはないため、その値を指定する必要があります。デフォルトの覆い焼きは ですposition_dodge(.9)

ggplot(data = my_data, 
 aes(x=day,
     y= mid, 
     ymin=mid-sigma, 
     ymax=mid+sigma,       
     fill=group)) +
   geom_bar(position="dodge", stat = "identity") + 
   geom_errorbar( position = position_dodge(), colour="black") +
   geom_point(position=position_dodge(.9), aes(y=mid, colour=group))

ここに画像の説明を入力

于 2016-01-27T20:05:01.013 に答える