首页 > 解决方案 > 使用 sunburstR 显示除 'size' 以外的值

问题描述

以下代码使用 sunburstR 生成一个简单的交互式旭日形(示例取自https://timelyportfolio.github.io/sunburstR/articles/sunburst-2-0-0.html)。当您滚动任何部分时,它会显示“大小”,并且楔形也会根据“大小”进行着色。我希望能够手动指定一个除“大小”之外的值,该值将在滚动时出现,也将用于为楔形上色。这可能吗?换句话说,我希望能够让所有楔子的大小相同,但能够为每个楔子指定不同的值。

library(sunburstR)
library(htmltools)
library(d3r)

dat <- data.frame(
  level1 = rep(c("a", "b"), each=3),
  level2 = paste0(rep(c("a", "b"), each=3), 1:3),
  size = c(10,5,2,3,8,6),
  stringsAsFactors = FALSE
)

knitr::kable(dat)
tree <- d3_nest(dat, value_cols = "size")
tree

sb1 <- sunburst(tree, width="100%", height=400)
sb1 

标签: rsunburst-diagram

解决方案


刚刚看到这个,很抱歉耽搁了。我们可以使用参数指定除大小以外的另一个字段valueField以 https://bl.ocks.org/timelyportfolio/616fc81b3bacee0d34a2975d53e9203a为例。

  library(treemap)


  library(sunburstR)
  library(d3r)

  # use example from ?treemap::treemap
  data(GNI2014)
  tm <- treemap(GNI2014,
          index=c("continent", "iso3"),
          vSize="population",
          vColor="continent",
          type="index")

  tm_nest <- d3_nest(
    tm$tm[,c("continent", "iso3", "vSize", "color")],
    value_cols = c("vSize", "color")
  )

  sunburst(
    jsondata = tm_nest,
    valueField = "vSize",
    count = TRUE,
    colors = htmlwidgets::JS("function(d){return d3.select(this).datum().color;}")
  )

前面的示例还展示了我们如何在data.frame使用 JavaScript 函数时根据列更改颜色。

这是另一个控制颜色的示例https://github.com/timelyportfolio/sunburstR/issues/17#issuecomment-228448029


推荐阅读