R Plotly饼图自定义颜色

11
我已经苦恼了好几天,希望能得到帮助。我有一个包含"High","Medium"或"low"值的表格数据的列'results'。我想使用plotly创建饼图,通过计算数据集中"High","Medium"和"Low"的数量,并尝试为每个类别分配一种颜色。下面是我的代码。我已经尝试过将cols1和cols2作为标记以及其他几种方法,但似乎都不起作用。请注意,这是一个动态表格,因此可能存在没有高级或中级等情况,因此我不能只使用list(c("tomato","orange","olivedrab")作为标记。颜色必须与结果类别相对应。
 tab <- count(data, results)

  tab <- transform(tab,
                   results_ord  = factor(
                     results ,
                     levels = c('High', 'Medium', 'Low'),
                     ordered = TRUE
                   ))
  cols1 <-
    c(
      High = "olivedrab",
      Medium = "orange",
      Low = "tomato"
    )
  cols2 <-
    c(ifelse(
      tab$results_ord == "High",
      "olivedrab",
      ifelse(
        tab$results_ord == "Medium",
        "orange",
        "tomato"
      )
    ))


  plot_ly(
    tab,
    labels = results_ord,
    values = n,
    marker = list(cols2),
    type = "pie"
  ) %>%
    layout(title = "Results")

  thanks,

曼努吉·阿格拉沃


我尝试了这个,但没有得到图表返回。 cols1 <- c( "olivedrab", "orange", "tomato" ) plot_ly( tab, labels = results_ord, values = n, marker = marker(color=results_ord,colour=list(cols1)), type = "pie" ) %>% layout(title = "Results")请问您能告诉我正确的语法吗? - Manoj Agrawal
1个回答

12

这个语法适用于Plotly 4.x版本,但是您可以相应地调整旧版本。以下是如何让手动颜色显示出来的方法:

df <- count(mtcars, am)
plot_ly(df, values = ~n, labels = ~factor(am), marker = list(colors = c('#FF7F0E', '#1F77B4')), type = 'pie')

您可以调整因子顺序,以获得所需值的期望颜色。


1
Gopala,一旦删除一个或多个类别,颜色方案就会出现问题,因为颜色与类别没有关联。在ggplot中,您可以像这样做:cols <- c( 'High Performers' = "olivedrab", Underperformers = "orange", 'No Sales' = "steelblue" )在plotly中是否有类似的功能? - Manoj Agrawal
1
据我所知没有。但是,您可以有条件地生成“colors”向量并将其保存到变量中,然后再进行输入。 - Gopala
@Gopala,在plotly中可以找到默认颜色吗?我想尝试将plotly中的颜色与ggplot中的另一个图形匹配。 - sar
1
也许这个答案可以帮到您?https://dev59.com/gFkR5IYBdhLWcg3w6RED - Gopala

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