如何使用stat_boxplot更改晶须的线宽(geom ="errorbar")

lin*_*nce 5 r ggplot2 boxplot

我想在使用时改变胡须的线条粗细stat_boxplot(geom = "errorbar"):

set.seed(42)
df <- data.frame(cond = factor( rep(c("A","B"), each=500) ), 
  value = c(rnorm(500,mean=1,sd=0.2),rnorm(500, mean=1.5,sd=0.1)))
ggplot(df, aes(x=cond, y=value)) + geom_boxplot(lwd=0.2)
ggplot(df, aes(x=cond, y=value)) + 
      stat_boxplot(geom = "errorbar", 
       stat_params = list(width = 0.5,size = 5.0)) + 
      geom_boxplot(lwd=0.2)
Run Code Online (Sandbox Code Playgroud)

在第二个图中lwd=0.2改变了框中线条的粗细,但是胡须保持不变.

在此输入图像描述 在此输入图像描述

更新

谢谢@ eipi10,

ggplot(df, aes(x=cond, y=value)) + stat_boxplot(geom = "errorbar",
    width = 0.5, size=0.2) + geom_boxplot(lwd=0.2)
Run Code Online (Sandbox Code Playgroud)

你的解决方案会改变晶须线的粗细,但它会使端部的水平线与盒子一样宽,而不是一半(宽度= 0.5).

但是使用

ggplot(df, aes(x=cond, y=value)) + stat_boxplot(geom ="errorbar",
    stat_params = list(width = 0.5), size=0.2) + geom_boxplot(lwd=0.2)
Run Code Online (Sandbox Code Playgroud)

要么

ggplot(df, aes(x=cond, y=value)) + stat_boxplot(geom = "errorbar",
    stat_params = list(width = 0.5, size=0.2)) + geom_boxplot(lwd=0.2)
Run Code Online (Sandbox Code Playgroud)

那么胡须的宽度是盒子的一半,但它们的线条粗细是默认的厚度比盒子的线条宽.

换句话说,我不能同时改变线条的粗细和胡须的宽度.

更新两个

我用这两段代码得到了相同的结果(两者都没有stat_params)

ggplot(df, aes(x=cond, y=value)) + stat_boxplot(geom = "errorbar",
    width=0.5, size=5) + geom_boxplot(lwd=0.2)

ggplot(df, aes(x=cond, y=value)) + stat_boxplot(geom = "errorbar",
    width=0.2, size=5) + geom_boxplot(lwd=0.2)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述 在此输入图像描述

何塞

eip*_*i10 8

如果我理解你的问题,我认为这就是你要找的:

ggplot(df, aes(x=cond, y=value)) + 
  stat_boxplot(geom = "errorbar", width=0.5, size=5) +
  geom_boxplot(lwd=0.2)
Run Code Online (Sandbox Code Playgroud)

这是两个不同width设置的结果:

在此输入图像描述