使用plotly rstudio从数据框创建漏斗图

问题描述 投票:3回答:1

我想使用plotly创建一个漏斗图,这是plotly的示例:

fig <- plot_ly(
  type = "funnelarea",
  values = c(5, 4, 3, 2, 1),
  text = c("The 1st","The 2nd", "The 3rd", "The 4th", "The 5th"),
  marker = list(colors = c("deepskyblue", "lightsalmon", "tan", "teal", "silver"),
                line = list(color = c("wheat", "wheat", "blue", "wheat", "wheat"), width = c(0, 1, 5, 
0, 4))),
  textfont = list(family = "Old Standard TT, serif", size = 13, color = "black"),
  opacity = 0.65)
fig

我想使用数据框来填充此图表,使用数据框列中的类别而不是文本和值,但是我找不到找到它的方法。

我的数据框示例

funnel_stage               size               purchaser_payment
1. Available for Sale      10                 10000 
1. Available for Sale      15                 15000
2. Pending on Sale         8                  8000
2. Pending on Sale         9                  9000
3. Already Sold            1                  1000
3. Already Sold            45                 45000
3. Already Sold            12                 12000 

我希望我的漏斗充满计算第一列的重复次数,就像:

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9yWDhkaS5wbmcifQ==” alt =“在此处输入图像描述”>

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS96TVhqWi5wbmcifQ==” alt =“在此处输入图像描述”>“ >>

我想使用plotly创建一个漏斗图,这是plotly的示例:图

r dataframe plotly
1个回答
0
投票

如果首先以正确的顺序将数据整理成每个类别一行的形状,这可能是最简单的,请参阅下面的df2。>>

library("dplyr")
library("plotly")

df <- structure(
    list(funnel_stage = c("Available for Sale", "Available for Sale", 
                          "Pending on Sale", "Pending on Sale", "Already Sold",
                          "Already Sold", "Already Sold"),
         size = c(10L, 15L, 8L, 9L, 1L, 45L, 12L),
         purchaser_payment = c(10000L, 15000L, 8000L, 9000L, 1000L, 45000L, 12000L)),
    class = "data.frame", row.names = c(NA, -7L))

df$funnel_stage <- factor(df$funnel_stage, levels = c("Available for Sale",
                                                      "Pending on Sale",
                                                      "Already Sold"))

df2 <- df %>% 
    group_by(funnel_stage) %>% 
    count()

df2
#> # A tibble: 3 x 2
#> # Groups:   funnel_stage [3]
#>   funnel_stage           n
#>   <fct>              <int>
#> 1 Available for Sale     2
#> 2 Pending on Sale        2
#> 3 Already Sold           3

plot_ly()  %>%
    add_trace(
        type = "funnelarea",
        values = df2$n,
        text = df2$funnel_stage)

packageVersion("dplyr")
#> [1] '0.8.5'
packageVersion("plotly")
#> [1] '4.9.2.1'
© www.soinside.com 2019 - 2024. All rights reserved.