R-在使用ggplotly用于简单盒装时,如何解决不一致的绘制



我正在尝试利用新的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

再次希望它有帮助。

相关内容

  • 没有找到相关文章

最新更新