errorbarsを使用して線と点のグラフを作成しようとしています。それにはさまざまな要因がありますが、いくつかの要因には1つの価値しかありません。 position_dodgeを使用すると、単一値ファクタの1つがグラフの他のエラーバーと比較してずっと広いエラーバーを持つことが分かりました。何とかposition_dodgeがエラーバーの幅に影響します。私は前に同じ問題を抱えていた人は見つけられなかったので、誰かが私を助けてくれることを願っています。ggplot2 position_dodgeがエラーバーの幅に影響する
はダミーデータ: - position_dodgeなし
require(ggplot2)
x <- c(1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,3,3,5)
y <- c(3,5,6,3,5,3,5,6,2,6,3,7,3,6,2,1,5,8,7)
se <- x*0.2
treatment <- c("A", "B","C", "D","A", "B","C", "D","A", "B","C", "D","A", "B","C", "D","E", "F", "G")
data <- data.frame(x, y, se ,treatment)
data$treatment <- as.factor(data$treatment)
最初のプロットは、すべてが
# Without position dodge
myplot <- ggplot(data, aes(x=x, y=y, group= treatment, fill = treatment, colour = treatment)) +
geom_line(stat="identity", size = 1) +
geom_point(stat="identity", size = 3, shape = 21) +
geom_errorbar(aes(ymin = y-se, ymax = y+se), width = 0.2)
myplot
今すぐ位置にプロットはかわす結構です:
# With position dodge
myplot <- ggplot(data, aes(x=x, y=y, group= treatment, fill = treatment, colour = treatment)) +
geom_line(stat="identity", size = 1, position=position_dodge(width=0.2)) +
geom_point(stat="identity", size = 3, shape = 21, position=position_dodge(width=0.2)) +
geom_errorbar(aes(ymin = y-se, ymax = y+se), width = 0.2, position=position_dodge(width=0.2))
myplot
右のエラーバーは、他のエラーバーと比較してはるかに大きな幅を持っています。これはおそらく、この点に重複するx変数がなく、エラーバーが通常のサイズを持つ可能性があるためです。私はまだエラーバーがどのように同じ幅になるのか知りたいです。
多分、関連する問題:あなたは2番目のグラフを見ればhttps://github.com/tidyverse/ggplot2/issues/1068 – zx8754
うん、おそらく、X = 3でのポイントはまた、持っていますエラーバーが小さくなります。これは、エラーバーの幅がグループの数によって決まるためです。 – Marinka
はい、スペースはポイント数で共有され、水平線は短くなります。解決方法は、手動でのダッジを導入することです。例えば、x = 1は4点、x = c(1、1.02、1.04、1.06)になります。 – zx8754