【问题标题】:Donut chart customization issue in RR中的甜甜圈图自定义问题
【发布时间】:2018-03-21 21:39:38
【问题描述】:

我的数据如下所示:

library(dplyr)
library(plotly)
df<-data_frame(Color=c("Green","Green","Yellow","Yellow","Gray","Gray","Red","Red"))
# A tibble: 8 x 1
Color
<chr>
Green
Green
Yellow
Yellow
Gray
Gray
Red
Red

我正在尝试创建一个圆环图,其中切片对应于Color 列中的颜色,并包含百分比以及给定颜色出现次数的原始计数。我试过这个:

df %>%
group_by(Color) %>%
summarize(count = n()) %>%
plot_ly(labels = ~Color, values = ~count,colors=c("Green","Yellow","Red","Gray")) %>%
add_pie(hole = 0.6) %>%
layout(title = "test chart",  showlegend = T,
     xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
     yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))

它给了我下面的图表。我可以添加什么来更改颜色并将原始计数添加到切片(即,在这种情况下,每个切片为 2)

【问题讨论】:

    标签: r data-visualization pie-chart donut-chart


    【解决方案1】:

    这是所需的语法:

    library(plotly)
    df %>%
      group_by(Color) %>%
      summarize(count = n()) %>%
      plot_ly(labels = ~Color,
              values = ~count,
              text = ~count,
              textinfo = 'label+text',
              marker = list(colors = c("Green","Yellow","Red","Gray"))) %>%
      add_pie(hole = 0.6) %>%
      layout(title = "test chart",  showlegend = T,
             xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
             yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE)) 
    

    所以marker = list(colors = 更改了切片的颜色。 text + `textinfo - 定义自定义文本

    尝试一下

    编辑:回复评论。

    通常,plotly 中分类变量的绘制顺序取决于因子水平的顺序。但是,在这种情况下,顺序由提供的数据帧的顺序决定。要更改顺序,可以使用match

    df %>%
      group_by(Color) %>%
      summarize(count = n()) -> df
    
    colors = c("Green","Yellow","Red","Gray")
    
    
    
    plot_ly(df[match(colors, df$Color),],
              labels = ~Color,
              values = ~count,
              text = ~count,
              marker = list(colors = colors)) %>%
      add_pie(hole = 0.6) %>%
      layout(title = "test chart",  showlegend = T,
             xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
             yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE)) 
    

    【讨论】:

    • 这很接近但仍不完全符合我的要求。就像我说的,我希望在切片中显示计数和百分比,并且我希望颜色始终对应于 Color 中的颜色名称(即,Green 是绿色,Gray 是灰色等)
    • @costebk08 编辑了带有解释的帖子。请检查。
    猜你喜欢
    • 1970-01-01
    • 2015-03-07
    • 2014-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多