gpt4 book ai didi

r - ggplot2 geom_boxplot 的用户定义参数

转载 作者:行者123 更新时间:2023-12-04 12:05:35 30 4
gpt4 key购买 nike

我有以下数据框:

df = data.frame(ymin = c(0.35,0.4,0.25,0.3,0.55,0.6), lower = c(0.45,0.5,0.35,0.4,0.65,0.7), middle = c(0.5,0.55,0.4,0.45,0.7,0.75), upper = c(0.55,0.6,0.45,0.5,0.75,0.8), ymax = c(0.65,0.7,0.55,0.6,0.85,0.9), factor = c("parental","parental","cross","cross","sex","sex"), factor.label = c("paternal","maternal","F1i","F1R","M","F"), posterior.probability = c(0.92,0.92,0.97,0.97,0.99,0.99), x = c(1,1,2,2,3,3), colors = c("blue","red","gray30","gray70","lightskyblue","pink"))

我想生成一个 ggplot2 箱形图,其中 df$x 定义箱子的 x 轴位置,df$lower、df$upper、df$middle、df$ymin、df$ymax 定义箱子,df$颜色定义框的颜色。如您所见,每对框都应放在相同的 x 轴位置。使用 alpha 参数,我将使框透明,以便重叠可见。

到目前为止我所拥有的是这段代码:

p = ggplot(beta.df, aes(x = x, color = colors))
p = p + geom_boxplot(aes(lower = lower,upper = upper, middle = middle, ymin = ymin, ymax = ymax, fill = colors), position = position_dodge(width = 0), width = 0.5, alpha = 0.5, stat = "identity")

enter image description here很明显,盒子的颜色被弄乱了——"blue""red" 盒子应该在 df$x = 1, "gray30""gray70" 框应位于 df$x = 2,并且 "lightskyblue""pink" 框应该位于 df$x = 3。所以我正在寻找解决办法。

我还希望指定图例标题和标签,而不是默认生成。此外,df$posterior.probability 值对于具有相同 x 轴位置的每对框都是相同的,我想要的是在图的顶部绘制这些值(每对一个),比​​如最大 y 轴值,或位于每对框的 max(ymax) 之上以及相应的 x 轴位置。换句话说,0.92、0.97 和 0.99 将分别绘制在 x 位置:1、2 和 3,以及绘图的最大 y 位置或这些位置 y 位置:0.75、0.65 和 0.95,分别。

最佳答案

您的箱线图重叠,据我从您的代码中了解到,您不希望这样。您的代码中不需要位置元素,您必须将 x 视为一个因素,以便将它们绘制成彼此相邻。

使用这段代码:

ggplot(df, aes(x = as.factor(x), color = colors)) + 
geom_boxplot(aes(lower = lower,upper = upper, middle = middle, ymin = ymin, ymax = ymax, fill = colors), width = 0.5, alpha = 0.5, stat = "identity") +
geom_text(data = df, aes(x = as.factor(x), y = ymax, label = posterior.probability), size = 4, vjust = -0.5) +
scale_fill_identity("Color legend", guide = "legend", labels = c("paternal","F1i","F1R","M","F","maternal")) +
scale_color_identity("Color legend", guide = "legend", labels = c("paternal","F1i","F1R","M","F","maternal")) +
labs(title = "Plot title", x = "X-lab label", y = "Y-lab label")

你得到这个结果:

enter image description here

如果您不希望文本标签使用相同颜色,请将 color = "black" 添加到 geom_text 部分。

关于r - ggplot2 geom_boxplot 的用户定义参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22284740/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com