如何使用十六进制字符串更改 plotly for r 饼图中切片的颜色?

How can I change the colors of the slices in pie charts in plotly for r using hexadecimal strings?

这是我目前的饼图:

library(plotly)
library(RColorBrewer)


P <- data.frame (labels = c("A", "B", "C", "D", "E"),
             values = c(5, 8, 3, 4, 9))

plot_ly(P, labels = labels, values = values, type = "pie",
    marker = list(colors=c("lightskyblue", "deepblue", "dodgerblue", "midnightblue", "powderblue")),
    textinfo="value",
    textposition="outside") 

我想用十六进制字符串更改它的颜色,这样我就可以使用 RColorBrewer 的调色板。提前致谢!

只需将十六进制值放入字符串中,前面加上哈希(井号)#。十六进制的前两位数字代表红色,接下来的 2 位数字代表绿色,然后 2 位数字代表蓝色 (#RRGGBB)。您可以选择为 alpha(透明度)添加额外的两位数字 (#RRGGBBAA)。

例如

plot_ly(P, labels = labels, values = values, type = "pie",
    marker = list(colors=c("#556677", "#AA3344", "#772200", 
                           "#11AA22", "#AA231B88")), # the last color has alpha value set.
    textinfo="value",
    textposition="outside") 

探索RColorBrewer

   library(RColorBrewer)

查看 RColorBrewer 包中的函数列表

   ls("package:RColorBrewer")
   #  [1] "brewer.pal"         "brewer.pal.info"    "display.brewer.all"
   #  [4] "display.brewer.pal"

显示所有配色方案

   display.brewer.all()

获取蓝调十六进制字符串

   brewer.pal(9,"Blues")
   # [1] "#F7FBFF" "#DEEBF7" "#C6DBEF" "#9ECAE1" "#6BAED6" "#4292C6" "#2171B5"
   # [8] "#08519C" "#08306B"

   brewer.pal(10,"Blues")
   # [1] "#F7FBFF" "#DEEBF7" "#C6DBEF" "#9ECAE1" "#6BAED6" "#4292C6" "#2171B5"
   # [8] "#08519C" "#08306B"
   # Warning message:
   # In brewer.pal(10, "Blues") :
   # n too large, allowed maximum for palette Blues is 9
   # Returning the palette you asked for with that many colors

查看 Blues palatte

  display.brewer.pal(9,"Blues")

您可以获得的颜色数量是有限制的,但是如果您想扩展 Sequential 或 Diverging 组,您可以使用 colorRampPalatte 命令来实现,例如:

  colorRampPalette(brewer.pal(9,”Blues”))(100)

divergentqualitativesequential 方案的示例。 SpectralSet2Reds,这些名字可以用上面提到的命令display.brewer.all()看到。您可以使用列表中的其他一些方案。

 display.brewer.pal(4,"Spectral")
 brewer.pal(4,"Spectral")
 # [1] "#D7191C" "#FDAE61" "#ABDDA4" "#2B83BA"

 display.brewer.pal(4,"Set2")
 brewer.pal(4,"Set2")
 # [1] "#66C2A5" "#FC8D62" "#8DA0CB" "#E78AC3"

 display.brewer.pal(4,"Reds")
 brewer.pal(4,"Reds")
 # [1] "#FEE5D9" "#FCAE91" "#FB6A4A" "#CB181D"