不更新 R 中的第二种颜色
Plotly not updating the second color in R
我正在尝试使用 plotly
在 R
中绘制一个基本的 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=pie
和 add_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)
)
我正在尝试使用 plotly
在 R
中绘制一个基本的 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=pie
和 add_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)
)