不更新 R 中的第二种颜色

Plotly not updating the second color in R

我正在尝试使用 plotlyR 中绘制一个基本的 donut 图。然后我将自定义颜色添加到绘图中。现在,first 颜色可以正常更新,但是 second 颜色,即 'rgb(255,127,80)' 不会。

我该如何解决这个问题?

数据

Value = c(50124,  9994,  9822, 13580,  5906,  7414, 16847,    59, 80550,  6824,  3111, 16756,  7702, 23034, 38058,  6729,  6951,     2,   408,
 37360, 20517, 18714,   352,     3, 42922, 30850,    21,  4667, 12220,  8762,   445,  1875,   719,   188,    26,   124,   996,    10,
    27,   304,    55, 34980,    67,     3,    25,  1012,  3588,    77,   847,    47,  1057,   924,   233,    40,     2,  2362,     3,
  1866,    16,     0,     0,     0)

Type = c("A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A", "A",
"A", "A", "A", "A", "A", "A", "A", "A", "A", "A",  "A", 
"B",  "B",  "B",  "B",  "B",  "B",  "B",  "B",  "B",  "B",  "B", 
"B",  "B",  "B",  "B",  "B" "B", "B",  "B",  "B",  "B",  "B", 
"B",  "B",  "B",  "B",  "B",  "B",  "B")

df = data.frame(Type, Value)

代码

library(tidyverse)
library(plotly)

color = c('rgb(0,255,255)', 'rgb(255,127,80)')

fig = df %>% plot_ly(labels = ~Type, 
                        values = ~Value,
                        #colors = c("grey50", "blue"),
                        marker = list(colors = color)
                        )
fig = fig %>% add_pie(hole = 0.6)
fig = fig %>% layout(title = "Title",  showlegend = T,
                      xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = T),
                      yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = T))

fig

当前输出

你可以这样做: 注意:1. 在数据框中为颜色创建一列 2. 使用 type=pieadd_pie(hole=0.4)

df1 <- df %>% 
  group_by(Type) %>% 
  mutate(sum = sum(Value),
         Typecolor = ifelse(Type=="A", 'rgb(0,255,255)', 'rgb(255,127,80)'))

df1 %>% plot_ly(labels = ~Type, 
               values = ~Value,
               type = 'pie',
               textposition = "inside",
               textinfo = 'label+percent',
               hole=0.6,
               marker = list(colors = ~Typecolor)
               ) %>% add_pie(hole = 0.4)
        )