Сюжет: Как сделать диаграмму p ie в серой шкале? - PullRequest
3 голосов
/ 21 июня 2020

Вот код R, который dr aws ap ie chart

library(data.table)

# Data
data <- data.table(
  class = c("class 1", "class 2", "class 3", "class 4"),
  count = c(2403, 4949, 18, 570))

# Pie
data %>% plot_ly() %>% 
  add_trace(
    type = 'pie',
    labels = ~class, 
    values = ~count,
    marker = list(
      color = "rgb(211, 211, 211)",
      line = list(color = "rgb(20, 20, 20)", width = 1))
  ) %>% 
  layout(
    xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
    yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))

Это dr aws «раскрашенная» диаграмма, когда мне нужна шкала серого.

1 Ответ

2 голосов
/ 23 июня 2020

Для гибкого подхода к длине переменной вашего класса вы можете просто использовать:

colors = gray.colors(length(data$class))

График 1:

enter image description here

Or if you'd like other grey tones, you can specify your own using:

colors = list("rgb(80, 80, 80)", "rgb(120, 120, 120)", "rgb(160, 160, 160)", "rgb(160, 160, 160)")

Plot 2:

введите описание изображения здесь

Полный код:

library(data.table)
library(dplyr)
library(plotly)

# Data
data <- data.table(
  class = c("class 1", "class 2", "class 3", "class 4"),
  count = c(2403, 4949, 18, 570))

# Pie
data %>% plot_ly() %>% 
  add_trace(
    type = 'pie',
    labels = ~class, 
    values = ~count,
    marker = list(
      #colors = list("rgb(120, 120, 120)", "rgb(160, 160, 160)", "rgb(180, 180, 180)", "rgb(220, 220, 220)"),
      colors = gray.colors(length(data$class)),
      line = list(color = "rgb(20, 20, 20)", width = 1))
  ) %>% 
  layout(
    xaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE),
    yaxis = list(showgrid = FALSE, zeroline = FALSE, showticklabels = FALSE))
...