[英]How to increase the distance between boxplots (ggplot2) which have discrete x-axis - position_dodge?
[英]Default spacing of grouped boxplots in ggplot2: how to derive correct position_dodge width to line up geoms?
這可能是一個騙局,但我還沒有在這里找到我需要的確切解決方案。 出於教學目的,我需要更多的答案:我制作了一個看起來像我想要的方式的 plot,但我想向 ggplot 初學者解釋它的工作原理。 問題是,為什么position_dodge(width = 0.75)
參數使stat_summary
中的點與分組箱線圖對齊? 我通過反復試驗找到了這個數字,但我找不到導致 0.75 寬度“正確”的默認間距值。 這個值在哪里找到?
set.seed(1)
g1mean <- rep(1:4, times=10)
g2mean <- rep(1:4, each=10)
y <- rnorm(n = length(g1mean), mean = g1mean+g2mean, sd = 2)
dat <- data.frame(g1=factor(g1mean), g2=factor(g2mean), y=y)
library(ggplot2)
ggplot(dat, aes(x=g1, fill=g2, y=y)) +
geom_boxplot() +
stat_summary(fun = mean, geom = 'point', color = 'blue', position = position_dodge(width = 0.75))
這看起來不錯,但是我如何以編程方式確定position_dodge
的最佳寬度以使幾何圖形對齊?
首先,實際上看起來您的點與每個框的中心並沒有完全對齊...... width=
應該只是大約 0.84 以使其完美。
但這並不是您問題的真正答案。 您的問題的答案是要意識到實際上, position=position_dodge()
也應用於geom_boxplot
調用。 ggplot2
試圖變得智能,當你提供一個fill=
美學來使用時, ggplot2
意識到這意味着你想對箱線圖幾何圖形使用閃避。 默認情況下,不要期望所有幾何圖形都有這種行為,但箱線圖就是這種情況。
這里真正的答案是,為了使您的點在兩者之間對齊,您應該為兩者提供相同的position=
值。 您甚至可以在ggplot
調用之外指定它:
pos <- position_dodge(width=0.9)
ggplot(dat, aes(x=g1, fill=g2, y=y)) +
geom_boxplot(position=pos) +
stat_summary(fun = mean, geom = 'point', color = 'blue', position = pos)
那么...為什么默認的閃避寬度在 0.85 或 0.84 左右? 打敗我。 一定要從某個地方開始嗎? 更重要的是知道如何控制它。 您將需要更好的控制,特別是如果您開始使用width=
定義箱線圖的寬度。 dodge width = geom width 會給你閃避,使盒子完全相互接觸。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.