Мы создаем приложение Shiny, в котором мы используем динамическую c диаграмму p ie. Пользователи могут выбирать переменные для включения в график.
Добавление пользовательских цветовых кодов позволяет мне добавлять наши пользовательские цвета, но они не будут придерживаться переменной группировки, как в случае с линейчатыми диаграммами plotly (с помощью команды цветов ).
Пример:
library(plotly)
dat <- data.frame(dis = c(1,2,3), value = c(20,30,24))
plot_ly(dat, labels = ~dis, values = ~value, sort = F,
marker = list(colors = c("1" = "#B76C9E",
"2" = "#4285F4",
"3" = "#EA4335"))) %>%
add_pie(hole = 0.3) %>%
layout(legend = list(orientation = 'h'), margin = list(l = 0 , r = 0, t = 0, b = 100, pad = 1),
yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
Но когда я удаляю dis == 1 из data.frame (например, мой пользователи будут делать это в приложении Shiny) цвета меняются и не сохраняются назначенный цвет:
dat2 <- data.frame(dis = c(2,3), value = c(30,24))
plot_ly(dat2, labels = ~dis, values = ~value, sort = F,
marker = list(colors = c("1" = "#B76C9E",
"2" = "#4285F4",
"3" = "#EA4335"))) %>%
add_pie(hole = 0.3) %>%
layout(legend = list(orientation = 'h'), margin = list(l = 0 , r = 0, t = 0, b = 100, pad = 1),
yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
Есть ли способ заблокировать цвет категориальной переменной, чтобы «2» всегда имела один и тот же цвет?