Es gab zwei Schritte: (1) die Daten aggregieren, dann (2) in json konvertieren. Danach wurde das gesamte Javascript in diese Beispielseite geschrieben, sodass Sie einfach die resultierenden JSON-Daten anschließen können.
Da die aggregierten Daten eine ähnliche Struktur wie eine Treemap haben sollten, können wir das Paket treemap
für die Aggregation verwenden (könnte auch eine Schleife mit sukzessiver Aggregation verwenden). Dann wird d3treeR
(von Github) verwendet, um die Treemap-Daten in eine verschachtelte Liste zu konvertieren, und jsonlite
, um die Liste in JSON zu konvertieren.
Ich verwende einige Beispieldaten GNI2010
, im d3treeR
Paket gefunden. Sie können alle Quelldateien unter plunker sehen.
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")
I ersetzt auch die Source-Leitung in dem Beispiel index.html
zu
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.5/d3.min.js"></script>
Dann wird die index.html Feuer und Sie sollten sehen
machbar sein, die glänzenden Bindungen erstellen sollten Verwenden Sie htmlwidgets
und folgen einige Beispiele (die d3treeR
Quelle hat einige). Beachten Sie, dass bestimmte Dinge nicht funktionieren, wie die Färbung. Der JSON, der hier gespeichert wird, enthält tatsächlich viele Informationen über die Knoten (alle Daten, die mit Hilfe der treemap
aggregiert wurden), die Sie in der Abbildung verwenden könnten.
das sieht gut aus. Die Datenstruktur wäre die gleiche wie eine Treemap (sukzessive Aufteilung der kategorischen Variablen und Aggregation). Es gibt eine D3tree verfügbar von rechtzeitigen Portfolio auf Github Whit glänzende Bindungen. – jenesaisquoi