Было два этапа: (1) собрать данные, затем (2) преобразовать в json. После этого весь javascript был написан на этой странице примера, поэтому вы можете просто подключить полученные json-данные.
Поскольку агрегированные данные должны иметь сходную структуру с treemap, мы можем использовать пакет treemap
для выполнения агрегации (также можно использовать цикл с последовательной агрегацией). Затем d3treeR
(из github) используется для преобразования данных treemap во вложенный список и jsonlite
для преобразования списка в json.
Я использую некоторые данные примера GNI2010
, найденные в пакете d3treeR
. Вы можете увидеть все исходные файлы на plunker.
library(treemap)
library(d3treeR) # devtools::install_github("timelyportfolio/d3treeR")
library(data.tree)
library(jsonlite)
## Get treemap data using package treemap
## Using example data GNI2010 from d3treeR package
data(GNI2010)
## aggregate by these: continent, iso3,
## size by population, and color by GNI
indexList <- c('continent', 'iso3')
treedat <- treemap(GNI2010, index=indexList, vSize='population', vColor='GNI',
type="value", fun.aggregate = "sum",
palette = 'RdYlBu')
treedat <- treedat$tm # pull out the data
## Use d3treeR to convert to nested list structure
## Call the root node 'flare' so we can just plug it into the example
res <- d3treeR:::convert_treemap(treedat, rootname="flare")
## Convert to JSON using jsonlite::toJSON
json <- toJSON(res, auto_unbox = TRUE)
## Save the json to a directory with the example index.html
writeLines(json, "d3circle/flare.json")
я также заменил исходную строку в примере index.html
к
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.5/d3.min.js"></script>
Затем запустите index.html и вы должны увидеть
Чтобы создать блестящие привязки должны быть выполнимыми используя htmlwidgets
и следуя некоторым примерам (источник имеет некоторые). Обратите внимание, что некоторые вещи не работают, как раскраска. Json, который хранится здесь, фактически содержит много информации об узлах (все данные, агрегированные с использованием treemap
), которые вы могли бы использовать на рисунке.
, который выглядит красиво. Структура данных будет такой же, как и treemap (последовательное разделение катергорических переменных и агрегирование). Существует d3tree, доступный из своевременного портфеля на github whit блестящие привязки. – jenesaisquoi