Ci sono stati due passaggi: (1) aggregare i dati, quindi (2) convertire in json. Dopodiché, tutto il javascript è stato scritto nella pagina di esempio, quindi puoi semplicemente inserire i dati JSON risultanti.
Poiché i dati aggregati devono avere una struttura simile a una treemap, è possibile utilizzare il pacchetto treemap
per eseguire l'aggregazione (potrebbe anche utilizzare un ciclo con aggregazione successiva). Quindi, d3treeR
(da github) viene utilizzato per convertire i dati di treemap in un elenco nidificato e jsonlite
per convertire l'elenco in json.
Sto utilizzando alcuni dati di esempio GNI2010
, trovati nel pacchetto d3treeR
. Puoi vedere tutti i file sorgente su 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")
Ho anche sostituito la linea fonte nell'esempio index.html
a
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.5/d3.min.js"></script>
Poi accendere la index.html e si dovrebbe vedere 
Per creare le associazioni lucide dovrebbe essere fattibile usando htmlwidgets
e seguendo alcuni esempi (la fonte d3treeR
ne ha). Nota che certe cose non funzionano, come la colorazione. Il json che viene memorizzato qui contiene in realtà molte informazioni sui nodi (tutti i dati aggregati usando lo treemap
) che si potrebbe sfruttare nella figura.
che sembra bello. La struttura dei dati sarebbe la stessa di una mappa di tre (dividere successivamente le variabili catergorie e aggregare). C'è un d3tree disponibile da timelyportfolio su github con rilegature lucenti. – jenesaisquoi