【问题标题】:marking the very end of the two whiskers in each boxplot in ggplot2 in R statistics在 R 统计中的 ggplot2 中的每个箱线图中标记两个胡须的末端
【发布时间】:2012-04-08 06:37:54
【问题描述】:

我的问题如下:在 R 包中 ggplot2 - boxplots - 如何标记胡须末端的两个点(上部和下部),例如用“x”标记,最后得到一个箱线图并且在晶须的最上端有两个额外的“x”标记,另一个将在下晶须的最下端。

我在互联网上搜索了很多答案,但找不到。我只能通过使用 stat_summary 和使用平均函数数据在箱线图上添加“x”标记。

另外两点怎么做?

要在同一页面上,请使用 R 的mtcars 数据库并将mpgboxplot 作为y 轴,将cyl 作为x 轴。根据数据框mtcars,Yu 最终会得到 3 个箱线图。

根据 R

The upper end defined as Q3+1.5*IQR
The lower end defined as Q1-1.5*IQR
Note: IQR = Q3 - Q1

【问题讨论】:

  • 如果你展示你所做的事情,你更有可能得到答案。发布您的示例,使用mtcars 平均创建一个 x。 (一旦你这样做了,你可能会意识到你可以在数据集的 minmax 处绘制一个 x。)

标签: r ggplot2


【解决方案1】:

您只需要使用stat_summary 计算箱线图的端点并将它们相加。例如

##Load the library
library(ggplot2)
data(mpg)

##Create a function to calculate the points
##Probably a built-in function that does this
get_tails = function(x) {
  q1 = quantile(x)[2]
  q3 = quantile(x)[4]
  iqr = q3 -q1
  upper = q3+1.5*iqr
  lower = q1-1.5*iqr
  if(length(x) == 1){return(x)} # will deal with abnormal marks at the periphery of the plot if there is one value only
  ##Trim upper and lower
  up = max(x[x < upper])
  lo = min(x[x > lower])
  return(c(lo, up))
}

使用stat_summary 将其添加到您的情节中:

ggplot(mpg, aes(x=drv,y=hwy)) + geom_boxplot() + 
  stat_summary(geom="point", fun.y= get_tails, colour="Red")

另外,您对端点的定义并不完全正确。有关更多详细信息,请参阅我的 answer 到另一个问题。

【讨论】:

  • 非常感谢,这正是我正在寻找的,但请您再帮我一个忙。如何将这个编写好的函数输入到 Deducer 包中。几何元素下有点然后可以选择摘要然后选项然后自定义,这里我需要你的帮助才能输入函数get_tails。提前致谢
  • 抱歉,我没用过 Deducer 包
  • 嗨 csgillespie,我已经尝试过 get_tails 函数并且工作正常,但是这个函数有一个缺陷:如果碰巧我在一个变量中只有一个数据值,我想将其表示为箱线图它应该显示为一条线,但两条尾巴的标记将远离箱线图的两端出现在图的外围(在这种情况下箱线图将是一条小线,因为存在一个值)所以如何如果有这种情况,在函数中解决它以阻止它出现在情节中,或者您有其他建议/解决方案吗?
  • 在函数顶部附近添加一行,沿线:if(length(x) == 1){return(x)}
  • 非常感谢 csgillespie 回答我的问题。你能看看参考中位数的另一个问题吗?问候。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-03-02
  • 2014-03-26
  • 2015-01-11
  • 2011-06-24
  • 2017-04-10
  • 1970-01-01
  • 2012-07-26
相关资源
最近更新 更多