【问题标题】:How to specify the colors and toggle labels for each category in R sunburst?如何为 R sunburst 中的每个类别指定颜色和切换标签?
【发布时间】:2018-04-24 04:00:19
【问题描述】:

我似乎无法理解 sunburstR 包中的 sunburst 如何处理某些参数,即赋予它的颜色矢量以及它如何将颜色应用于不同的类别,以及如何显示不同分区的标签。

它有什么逻辑吗,有没有更好的方法来手动指定哪种颜色应该与哪个根/叶搭配?

来自?sunburst:(不知道“提供范围和/或域的列表”是什么意思。

colors  
vector of strings representing colors as hexadecimal for manual colors. 
If you want precise control of colors, supply a list with range and/or domain. 
For advanced customization, supply a JavaScript function.

谢谢!

sourcestatus

# A tibble: 5 x 2
  SourceStatus         count
  <chr>                <int>
1 blood-affected        4369
2 blood-unaffected      2848
3 blood-unknown            1
4 cell_line-affected    1797
5 cell_line-unaffected   151

创建旭日形:

 sunburst(sourcestatus, count = TRUE, percent= T, 
          colors = c("#6b5b95", "#feb236", "#d64161", "#ff7b25"))

【问题讨论】:

    标签: r d3.js donut-chart sunburst-diagram htmlwidgets


    【解决方案1】:

    简单地用颜色列表指定颜色:

    colors = c("#6b5b95", "#feb236", "#d64161", "#ff7b25")
    

    将逐层重复顺时针方向移动的那些颜色。这确保了同一层中没有相邻的叶子具有相同的颜色(子/父叶子可以)。如果只指定一种颜色,则忽略该颜色并使用默认调色板。

    虽然不清楚如何使用事物 r 侧的域和范围来指定颜色,但您可以指定希望用什么颜色填充每片叶子。如果你有很多叶子,你会想要构建一个函数来填充这些数据,但这里有一个使用快速而脏的数据框和一些颜色的演示:

    library(sunburstR)
    
    leafs <- c("base","base-child1-grandchild1","base-child1-grandchild2","base-child1","base-child2-grandchild3","base-child2","base-child3-grandchild4","base-child3-grandchild5","base-child3-grandchild6","base-child3-grandchild7","base-child3")
    values <- c(200,15,10,20,55,10,120,30,30,20,10)  
    
    # colors
    colors <- c("#c994c7","#6a51a3","#807dba","#bcbddc","#74c476","#c7e9c0","#fcbba1","#fc9272","#ef3b2c","#cb181d","#99000d")
    # match those colors to leaf names, matched by index
    labels <- c("base","grandchild1","grandchild2","child1","child2","grandchild3","grandchild4","grandchild5","grandchild6","grandchild7","child3")
    
    df = data.frame(v1=leafs, v2=values);
    
    sunburst(df, 
             colors = list(range = colors, domain = labels))
    

    为每个第一级孩子提供自己的配色方案:

    提供给颜色的列表包含一系列输出颜色和输入叶名称域,允许将特定颜色与特定叶配对。

    【讨论】:

    • 太棒了,谢谢!知道如何切换标签以使它们出现在每个分区上吗?
    • 可能有一种方法——但在任何非常复杂的情况下,重叠可能会非常糟糕。鼠标悬停在放置方面可能更容易——据我所见,两者都需要嵌入一些自定义 JavaScript 功能(两者都类似)。添加切换可能会使这有点复杂,但并非难以忍受。直到今晚晚些时候我才能看一看,老实说,我并没有真正看到问题的那一部分。最好作为两个单独的问题 - 因为颜色和标签的方法不太可能共享。
    • @gaelgarcia,很抱歉耽搁了时间 - 出现了一些问题,我仍在查看标签,但已经没时间了。
    • 虽然我可以很容易地添加工具提示 - example - 但标签很难放置,而且在美学上很难放置 (example),尤其是在生成图表之后。我会多考虑一下,但我对优雅的解决方案并不特别抱有希望。以前在 sunburstr 的 github page 上提出了对标签的需求。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-02
    相关资源
    最近更新 更多