plotly: сопоставить размер (форму) и значение colum на диаграмме рассеяния - PullRequest
0 голосов
/ 18 декабря 2018

Я действительно ценю «сюжетный» r-пакет.В настоящее время я сталкиваюсь с проблемой, когда хочу визуализировать фрейм данных в виде точек и сопоставить размер точки (а также потенциально возможную форму) с размером фрейма данных.

Проблема, с которой я столкнулсяМой собственный набор данных состоит в том, что размеры как-то «перепутаны» в том смысле, что большие точки не соответствуют большим значениям.

Я не до конца понял варианты, которые у меня есть с заговором (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    
...