plotly:将大小(形状)映射到散点图中的值colum

时间:2018-12-18 10:34:27

标签: r plotly data-visualization

我真的很喜欢'plotly'r-package。当前,我遇到一个问题,我想将数据框显示为点并将点大小(以及可能的形状)映射到数据框的尺寸。

我在使用自己的数据集时遇到的问题是,大小在某种意义上是“混合在一起的”,较大的点不对应较大的值。

我还没有完全理解我在plotly中拥有的选项(sizeref和其他标记选项;直接映射尺寸或在标记参数中映射之间的根本区别;等等),所以这是我的最佳选择作为此处的最小示例。

(第二个图更接近我目前的工作。如果可以解决这个问题,那对我来说会更好)

非常感谢您的想法。 :)

library(plotly)

set.seed(1)

df <- data.frame(x    = 1:10,
                 y    = rep(c("id1", "id2"), 5),
                 col  = factor(sample(3, 10, replace = TRUE)))
df$size <- c(40, 40, 40, 30, 30, 30, 20, 20, 20, 10)

df
#>     x   y col size
#> 1   1 id1   1   40
#> 2   2 id2   2   40
#> 3   3 id1   2   40
#> 4   4 id2   3   30
#> 5   5 id1   1   30
#> 6   6 id2   3   30
#> 7   7 id1   3   20
#> 8   8 id2   2   20
#> 9   9 id1   2   20
#> 10 10 id2   1   10


# Mapping looks right, but the size may not be correct
plot_ly(df,
        x         = ~x,
        y         = ~y,
        color     = ~col,
        size      = ~size,
        type      = 'scatter',
        mode      = 'markers',
        hoverinfo = "text",
        text      = ~paste('</br> x: ',     x,
                           '</br> y: ',     y,
                           '</br> col: ',  col,
                           '</br> size: ', size)
        # , marker  = list(size = ~size)
        )

plot1

# Size looks right, but mapping to points is wrong
plot_ly(df,
        x         = ~x,
        y         = ~y,
        color     = ~col,
        # size      = ~size,
        type      = 'scatter',
        mode      = 'markers',
        hoverinfo = "text",
        text      = ~paste('</br> x: ',     x,
                           '</br> y: ',     y,
                           '</br> col: ',  col,
                           '</br> size: ', size)
        , marker  = list(size = ~size)
)

plot2

devtools::session_info()  # excerpt
#> plotly       * 4.8.0    

0 个答案:

没有答案