Plotly:如何制作灰度饼图?

3

这里是用R语言编写绘制饼图的代码

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))

当我需要灰度图时,它会绘制一张“着色”图表。


1
您可以尝试在marker = list(...)内添加colors = gray.colors(4)来为您的饼图分配4种灰度颜色。 - Ben
1
首先,您需要使用 colors 而不是 color(如果这样做,您将看到您的绘图中的 4 个部分之一是灰色)。其次,正如 Ben 建议的那样,您需要 4 种不同的灰色阴影,因为您有 4 个不同的组。我认为这是一个打字错误,因为您使用了错误的参数并没有提供正确的元素。 - M--
1个回答

4

如果您希望类变量的长度具有灵活性,可以直接使用以下方法:

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

图1:

enter image description here

或者,如果您想使用其他灰色调,可以使用以下方式指定自己的调色板:

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

图 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))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接