r - Plotly:在箱线图中用样本名称注释异常值

标签 r ggplot2 plotly boxplot

我正在尝试使用 ggplot 和数据集 airquality 创建一个箱线图,其中 Month 在 x 轴上,Ozone 值位于 y 轴上。我的目标是对绘图进行注释,以便当我将鼠标悬停在异常点上时,除了臭氧值之外,它还应该显示 Sample 名称:

library(tidyverse)
library(plotly)
library(datasets)
data(airquality)

# add months
airquality$Month <- factor(airquality$Month,
                           labels = c("May", "Jun", "Jul", "Aug", "Sep"))

# add sample names
airquality$Sample <- paste0('Sample_',seq(1:nrow(airquality)))

# boxplot
p <- ggplot(airquality, aes(x = Month, y = Ozone)) +
  geom_boxplot()
p <- plotly_build(p)
p

这是创建的 plotly :

enter image description here

默认情况下,当我将鼠标悬停在每个框上时,它会显示 x 轴变量的基本汇总统计信息。但是,我还想看看异常样本是什么。例如当悬停在 May 上时,它会显示异常值 115,但并未显示它实际上是 Sample_30

如何将 Sample 变量添加到离群点,使其同时显示离群值和样本名称?

最佳答案

我们可以几乎这样得到它:

library(ggplot2)
library(plotly)
library(datasets)
data(airquality)
# add months
airquality$Month <- factor(airquality$Month,
                           labels = c("May", "Jun", "Jul", "Aug", "Sep"))
# add sample names
airquality$Sample <- paste0('Sample_',seq(1:nrow(airquality)))
# boxplot
gg <- ggplot(airquality, aes(x = Month, y = Ozone)) +
  geom_boxplot()
ggly <- ggplotly(gg)
# add hover info
hoverinfo <- with(airquality, paste0("sample: ", Sample, "</br></br>", 
                                     "month: ", Month, "</br>",
                                     "ozone: ", Ozone))
ggly$x$data[[1]]$text <- hoverinfo
ggly$x$data[[1]]$hoverinfo <- c("text", "boxes")

ggly

enter image description here

不幸的是,悬停不适用于第一个箱形图...

关于r - Plotly:在箱线图中用样本名称注释异常值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47518245/

相关文章:

R RecordLinkage 标识

plotly - 注释因 plotly-express 的子图而异?

javascript - 当表单数据输入网页时更新绘图

r - 如何从 Shiny 的文本输入更新字符向量?

r - 根据两列中值的长度来分配值

r - 将facet_wrap标签移到y轴标签之前

r - 如何通过ggplot2绘制复杂的函数?

r - 如何将 stat_ecdf 与 geom_ribbon 结合使用?

r - 绘制带有标签的空间坐标

python - 如何绘制具有不同范围的多列的箱线图