【问题标题】:Change the shape of ALL outliers in jittered boxplot更改抖动箱线图中所有异常值的形状
【发布时间】:2013-10-03 14:49:11
【问题描述】:

我在网上搜索了很多关于抖动和改变异常值形状的内容,但似乎找不到关于这个特定问题的任何信息。

我想要一个带有抖动数据点的黑白箱线图 - 我可以做到。

我还想更改异常值的形状。虽然有多个案例得分为 4,但其中一个变为空心圆圈。

我会假设,如果某个特定级别的一个数据点被视为异常值,那么其余数据点也将被视为异常值。

这是一个编码错误,还是我在统计课程中遗漏了什么? 如果它是一个编码的东西,我如何让它们都是空心的?

显然我的“声誉”需要达到 10 才能获得附加图片!我希望没有它也有意义

这是我的代码:

plot <- ggplot(phase2.3, aes(Group, Score))

plot + geom_point (position = position_jitter(w = 0.1, h = 0.2)) + 
 geom_boxplot (outlier.shape = 1) + xlab("Group") + theme_bw(20)

【问题讨论】:

  • 如果您将绘图数据提供给我们,则无需附加图像!发布 dput(phase2.3) 的结果,以便我们将其复制/粘贴到 R 中。(如果您无法共享数据或数据很大,请使用内置数据集或模拟数据创建 reproducible example。)跨度>
  • 散点图 (geom_point) 点是抖动的,但箱线图的异常值不是(而且我认为没有直接的方法来抖动它们)。分别查看每个几何图形的图,这可能会更有意义。
  • 感谢您的帮助,但影子提供了解决方案。

标签: r ggplot2 shapes outliers


【解决方案1】:

您可能必须自己计算,哪些点超出了范围。这是来自geom_boxplot 的标准示例的扩展,它显示了如何使用plyr 查找异常值。

# load packages
require(plyr)
require(ggplot2)
# find outliers
df <- ddply(mtcars, "cyl", function(x){
  iqr <- quantile(x[,"mpg"], c(.25, .75)) # inter-quartile-range
  whisker <- iqr+c(-1.5, 1.5)*diff(iqr)   # whiskers-range
  x[,"shape"] <- ifelse(x[,"mpg"] < whisker[1] | x[,"mpg"]>whisker[2], 1, 16)
  return(x)
})
# plot
p <- ggplot(df, aes(factor(cyl), mpg))
p + geom_boxplot() # without jittering
# adding shape manualy
p + geom_boxplot(outlier.size=-Inf) + 
  geom_jitter(aes(shape=factor(shape))) + 
  scale_shape_manual(guide=FALSE, values=c("16"=16, "1"=1)) 

【讨论】:

  • 优秀的解决方案,谢谢!我可以问一个调整吗?各个数据点出现在箱线图的前面而不是后面。以前我使用 geom_point 和 geom_boxplot 的顺序确保只能看到框外的点。有什么办法可以调整吗?
  • 解决方案是重新排序代码(Gracias mi Amigo!): p + geom_jitter(aes(shape=factor(shape))) + scale_shape_manual(guide=FALSE, values=c("16" =16, "1"=1)) + geom_boxplot(outlier.size=-Inf)+ geom_boxplot(outlier.size=-Inf)
猜你喜欢
  • 2020-08-21
  • 2011-06-27
  • 1970-01-01
  • 1970-01-01
  • 2014-08-21
  • 2014-03-28
  • 1970-01-01
  • 1970-01-01
  • 2016-07-11
相关资源
最近更新 更多