我正在尝试使用 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 :
默认情况下,当我将鼠标悬停在每个框上时,它会显示 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
不幸的是,悬停不适用于第一个箱形图...
关于r - Plotly:在箱线图中用样本名称注释异常值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47518245/