时隔一年多才回答,有点尴尬。但希望它对以后搜索相同问题的人有所帮助,因为我最近遇到了类似的问题(当我无法隐藏 geom_boxplot 中的异常值时)。
参考R或Python中的 plotly boxplot ,您可能会boxpoints
在其中一种中c('all', False, 'suspectedoutliers','outliers')
使用不同的方式显示异常值。选择时'suspectedoutliers'
,您可以调整标记的样式。在这里,差异来自标记外的线。
我还没有找到一种方法来轻松地做到这一点ggplotly
,但在plotly_build
. (您将深入了解它存储数据的结构)
第一的,
gg <- ggplot(data = mtcars, aes(x = factor(mtcars$cyl), y = mtcars$hp)) +
geom_boxplot(aes(fill = factor(mtcars$cyl), color = factor(mtcars$cyl), alpha = 1/2 ))
ggly <- plotly_build(gg)
你可以看看ggly$x$data
。您可能会看到 3 个项目的列表,它们对应于图表上的 3 个框。
下一个,
for (i in 1:length(ggly$x$data)) {
# ggly$x$data[[i]]$boxpoints <- "outliers"
ggly$x$data[[i]]$marker$line <- NULL
ggly$x$data[[i]]$line$width <- 1
}
rm(i)
ggly
由于它没有$boxpoints
参数并且具有标记和线的参数,因此我删除了标记外的线,然后更改了框线的宽度。这将修复异常外观。如果您还想修复图例,也许您可以检查一下$legendgroup
,但是,我还没有一个好的解决方案。
顺便说一句,如果有人正在寻找一种方法来隐藏/禁用像geom_boxplot 这样的异常值,您可以'suspectedoutliers'
通过将其不透明度设置为 0 来使用和设置异常值的样式。(我这样做是为了稍后绘制另一层抖动。)
for (i in 1:length(ggly$x$data)) {
ggly$x$data[[i]]$boxpoints <- "suspectedoutliers"
ggly$x$data[[i]]$marker$opacity <- 0
}
rm(i)
ggly
再次,希望它有所帮助。