我正在尝试利用新的ggplot2(dev版本)功能使我的情节互动。我还安装了Plotly-Dev版本。
但是,对我来说,它似乎没有正常工作。考虑一下,
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 ))
gg
ggplotly(gg)
如果您注意到,您会在ggploty()中看到异常值的标记不同。我如何摆脱它,以使其看起来与GGPLOT(第一个无花果)"相同"?
那么,我如何在ggplotly上添加/编辑传奇。
一年多后回答有点尴尬。但是希望这对以后搜索同一问题的人有帮助,因为我最近遇到了类似的问题(当我无法将异常值隐藏在GEOM_BOXPLOT中时)。
参考R或Python中的Plotly Boxplot,您可以在其中一种c('all', False, 'suspectedoutliers','outliers')
中使用boxpoints
,并具有不同的显示异常值的方式。选择'suspectedoutliers'
时,您可以调整标记的样式。在这里,差异来自 line 标记。
我还没有找到一种在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
参数,并且具有 Marker 和 line的参数盒子。这将修复外观的外观。如果您也想修复传奇,也许您可以检查$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
再次希望它有帮助。