├── resources
├── styles.css
└── index.html
├── .gitignore
├── postcss.config.js
├── tailwind.config.js
├── .github
└── workflows
│ └── main.yml
├── src
└── main
│ └── tech
│ └── thomas_sojka
│ ├── hiccup_d3
│ ├── utils.cljs
│ ├── charts
│ │ ├── voronoi.cljs
│ │ ├── world_map.cljs
│ │ ├── contour.cljs
│ │ ├── tree.cljs
│ │ ├── sunburst.cljs
│ │ ├── pack.cljs
│ │ ├── graph.cljs
│ │ ├── treemap.cljs
│ │ ├── line.cljs
│ │ ├── chord.cljs
│ │ ├── sankey.cljs
│ │ ├── pie.cljs
│ │ ├── bar.cljs
│ │ └── streamgraph.cljs
│ ├── macros.clj
│ └── app.cljs
│ └── shadow_tailwind
│ └── dev_hook.clj
├── shadow-cljs.edn
├── package.json
├── public
└── data
│ ├── population-by-age.json
│ ├── frequencies.json
│ ├── energy.csv
│ ├── unemployment.csv
│ ├── flare-2.json
│ ├── volcano.json
│ ├── miserables.json
│ └── apple-stock.csv
├── LICENSE
└── README.org
/resources/styles.css:
--------------------------------------------------------------------------------
1 | @tailwind base;
2 | @tailwind components;
3 | @tailwind utilities;
4 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | /node_modules/
2 | /public/css/
3 | /public/index.html
4 | /public/js/
5 | /.shadow-cljs/
6 |
--------------------------------------------------------------------------------
/postcss.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | plugins: {
3 | tailwindcss: {},
4 | autoprefixer: {},
5 | cssnano: {},
6 | },
7 | }
8 |
--------------------------------------------------------------------------------
/tailwind.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | purge: ['./src/main/tech/thomas_sojka/hiccup_d3/**/*.cljs'],
3 | darkMode: false, // or 'media' or 'class'
4 | theme: {
5 | extend: {},
6 | },
7 | variants: {
8 | extend: {},
9 | },
10 | plugins: [],
11 | }
12 |
--------------------------------------------------------------------------------
/.github/workflows/main.yml:
--------------------------------------------------------------------------------
1 | name: CI/CD
2 |
3 | on: [push]
4 |
5 | jobs:
6 | build:
7 |
8 | runs-on: ubuntu-latest
9 |
10 | steps:
11 | - uses: actions/checkout@v2
12 | - uses: DeLaGuardo/setup-clojure@master
13 | with:
14 | cli: '1.10.1'
15 | - name: Use Node.js
16 | uses: actions/setup-node@v1
17 | with:
18 | node-version: '14'
19 | - name: npm install
20 | run: npm install
21 | - name: Build
22 | run: npx shadow-cljs release :frontend
23 | - name: Deploy
24 | uses: maxheld83/ghpages@v0.3.0
25 | env:
26 | GH_PAT: ${{ secrets.GH_PAT }}
27 | BUILD_DIR: "public"
28 |
--------------------------------------------------------------------------------
/src/main/tech/thomas_sojka/hiccup_d3/utils.cljs:
--------------------------------------------------------------------------------
1 | (ns tech.thomas-sojka.hiccup-d3.utils
2 | (:require [clojure.string :as str]))
3 |
4 | (defn fetch-json [url]
5 | (-> (js/fetch url)
6 | (.then (fn [res] (.json res)))
7 | (.catch (fn [res] (prn res)))))
8 |
9 | (defn csv->clj
10 | [csv]
11 | (let [[header-line & content-lines] (str/split-lines csv)
12 | headers (map #(-> %
13 | (str/split " ")
14 | str/join
15 | keyword)
16 | (str/split header-line ","))]
17 | (map
18 | (fn [line]
19 | (zipmap headers (str/split line ",")))
20 | content-lines)))
21 |
--------------------------------------------------------------------------------
/shadow-cljs.edn:
--------------------------------------------------------------------------------
1 | ;; shadow-cljs configuration
2 | {:source-paths
3 | ["src/dev"
4 | "src/main"
5 | "src/test"]
6 |
7 | :dependencies
8 | [[reagent "0.10.0"]
9 | [markdown-to-hiccup "0.6.2"]
10 | [venantius/glow "0.1.6"]]
11 | :dev-http {8080 "public"}
12 | :builds
13 | {:frontend
14 | {:target :browser
15 | :module-hash-names true
16 | :asset-path "js"
17 | :build-hooks
18 | [(shadow.html/copy-file
19 | "resources/index.html"
20 | "public/index.html")
21 | (tech.thomas-sojka.shadow-tailwind.dev-hook/build-dev-css
22 | "resources/styles.css"
23 | "public/css/styles.css")]
24 | :modules {:main {:init-fn tech.thomas-sojka.hiccup-d3.app/init}}}}}
25 |
--------------------------------------------------------------------------------
/src/main/tech/thomas_sojka/shadow_tailwind/dev_hook.clj:
--------------------------------------------------------------------------------
1 | (ns tech.thomas-sojka.shadow-tailwind.dev-hook
2 | (:require [clojure.java.io :as io]
3 | [clojure.java.shell :as shell]))
4 |
5 | (defn build-dev-css
6 | {:shadow.build/stage :configure}
7 | [{:shadow.build/keys [mode] :as build-state} source target]
8 | (let [source-file (io/file source)]
9 | (io/make-parents target)
10 | (let [{:keys [exit err]}
11 | (shell/sh "npx" "postcss" source "-o" target
12 | :env (assoc (into {} (System/getenv)) "NODE_ENV" (if (= mode :release) "production" "")))]
13 | (when (= exit 1)
14 | (throw (Exception. err))))
15 | (assoc build-state ::source-last-mod (.lastModified source-file))))
16 |
17 |
--------------------------------------------------------------------------------
/src/main/tech/thomas_sojka/hiccup_d3/charts/voronoi.cljs:
--------------------------------------------------------------------------------
1 | (ns tech.thomas-sojka.hiccup-d3.charts.voronoi
2 | (:require ["d3" :as d3])
3 | (:require-macros [tech.thomas-sojka.hiccup-d3.macros :as m]))
4 |
5 | (def plain
6 | (m/build-chart
7 | "plain"
8 | (fn [data]
9 | (let [size 300
10 | delaunay (.from d3/Delaunay (clj->js data))
11 | voronoi (.voronoi delaunay (into-array [0 0 size size]))]
12 | [:svg {:viewBox (str 0 " " 0 " " size " " size)}
13 | [:path {:fill "transparent"
14 | :stroke "black"
15 | :d (.render voronoi)}]]))))
16 |
17 | (def voronoi
18 | {:title "Voronoi"
19 | :load (fn [] (js/Promise.resolve (map (fn [] [(rand 300) (rand 300)]) (range 100))))
20 | :charts [plain]})
21 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "hiccup-d3",
3 | "version": "0.0.1",
4 | "private": true,
5 | "devDependencies": {
6 | "autoprefixer": "^10.1.0",
7 | "cssnano": "^4.1.10",
8 | "husky": "^4.3.6",
9 | "lint-staged": "^10.5.3",
10 | "postcss": "^8.2.1",
11 | "postcss-cli": "^8.3.1",
12 | "shadow-cljs": "^2.11.11",
13 | "tailwindcss": "^2.0.2"
14 | },
15 | "dependencies": {
16 | "clipboard": "^2.0.6",
17 | "d3": "^6.3.1",
18 | "d3-sankey": "^0.12.3",
19 | "react": "^17.0.1",
20 | "react-dom": "^17.0.1"
21 | },
22 | "husky": {
23 | "hooks": {
24 | "pre-commit": "lint-staged"
25 | }
26 | },
27 | "lint-staged": {
28 | "**/*": "clojure -Sdeps '{:deps {cljfmt {:mvn/version \"0.6.4\"}}}' -m cljfmt.main fix"
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/public/data/population-by-age.json:
--------------------------------------------------------------------------------
1 | [
2 | { "name": "<5", "value": 19912018 },
3 | { "name": "5-9", "value": 20501982 },
4 | { "name": "10-14", "value": 20679786 },
5 | { "name": "15-19", "value": 21354481 },
6 | { "name": "20-24", "value": 22604232 },
7 | { "name": "25-29", "value": 21698010 },
8 | { "name": "30-34", "value": 21183639 },
9 | { "name": "35-39", "value": 19855782 },
10 | { "name": "40-44", "value": 20796128 },
11 | { "name": "45-49", "value": 21370368 },
12 | { "name": "50-54", "value": 22525490 },
13 | { "name": "55-59", "value": 21001947 },
14 | { "name": "60-64", "value": 18415681 },
15 | { "name": "65-69", "value": 14547446 },
16 | { "name": "70-74", "value": 10587721 },
17 | { "name": "75-79", "value": 7730129 },
18 | { "name": "80-84", "value": 5811429 },
19 | { "name": "≥85", "value": 5938752 }
20 | ]
21 |
--------------------------------------------------------------------------------
/public/data/frequencies.json:
--------------------------------------------------------------------------------
1 | [{"letter":"A","frequency":0.08167},{"letter":"B","frequency":0.01492},{"letter":"C","frequency":0.02782},{"letter":"D","frequency":0.04253},{"letter":"E","frequency":0.12702},{"letter":"F","frequency":0.02288},{"letter":"G","frequency":0.02015},{"letter":"H","frequency":0.06094},{"letter":"I","frequency":0.06966},{"letter":"J","frequency":0.00153},{"letter":"K","frequency":0.00772},{"letter":"L","frequency":0.04025},{"letter":"M","frequency":0.02406},{"letter":"N","frequency":0.06749},{"letter":"O","frequency":0.07507},{"letter":"P","frequency":0.01929},{"letter":"Q","frequency":0.00095},{"letter":"R","frequency":0.05987},{"letter":"S","frequency":0.06327},{"letter":"T","frequency":0.09056},{"letter":"U","frequency":0.02758},{"letter":"V","frequency":0.00978},{"letter":"W","frequency":0.0236},{"letter":"X","frequency":0.0015},{"letter":"Y","frequency":0.01974},{"letter":"Z","frequency":0.00074}]
--------------------------------------------------------------------------------
/src/main/tech/thomas_sojka/hiccup_d3/charts/world_map.cljs:
--------------------------------------------------------------------------------
1 | (ns tech.thomas-sojka.hiccup-d3.charts.world-map
2 | (:require ["d3" :as d3]
3 | [tech.thomas-sojka.hiccup-d3.utils :refer [fetch-json]])
4 | (:require-macros [tech.thomas-sojka.hiccup-d3.macros :as m]))
5 |
6 | (def plain
7 | (m/build-chart
8 | "plain"
9 | (fn [data]
10 | (let [color (d3/scaleOrdinal d3/schemeCategory10)
11 | path (-> (d3/geoPath)
12 | (.projection (d3/geoMercator)))]
13 | [:svg {:viewBox (str 0 " " 0 " " 1000 " " 650)}
14 | [:g {:transform (str "translate(" 0 ", " 200 ")")}
15 | (map
16 | (fn [country]
17 | (let [country-name ^js (.-properties.abbrev country)]
18 | [:path {:key country-name
19 | :d (path country)
20 | :fill (color country-name)}]))
21 | ^js (.-features data))]]))))
22 |
23 | (def world-map
24 | {:title "World Map"
25 | :load (fn [] (-> (fetch-json "data/countries.json")))
26 | :charts [plain]})
27 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2020 Thomas Sojka
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/src/main/tech/thomas_sojka/hiccup_d3/charts/contour.cljs:
--------------------------------------------------------------------------------
1 | (ns tech.thomas-sojka.hiccup-d3.charts.contour
2 | (:require ["d3" :as d3]
3 | [tech.thomas-sojka.hiccup-d3.utils :refer [fetch-json]])
4 | (:require-macros [tech.thomas-sojka.hiccup-d3.macros :as m]))
5 |
6 | (def plain
7 | (m/build-chart
8 | "plain"
9 | (fn [data]
10 | (let [path (d3/geoPath)
11 | color (-> (d3/scaleSequential d3/interpolateTurbo)
12 | (.domain (d3/extent (.-values data)))
13 | (.nice))
14 | thresholds (.ticks color 20)
15 | width (.-width data)
16 | height (.-height data)
17 | contours (-> (d3/contours)
18 | (.size (into-array [width height])))]
19 | [:svg {:viewBox (str 0 " " 0 " " width " " height)}
20 | [:g
21 | (map
22 | (fn [threshold]
23 | [:path {:key threshold
24 | :d (path (.contour contours (.-values data) threshold))
25 | :fill (color threshold)}])
26 | thresholds)]]))))
27 |
28 | (def contour
29 | {:title "Contour"
30 | :load (fn [] (fetch-json "data/volcano.json"))
31 | :charts [plain]})
32 |
--------------------------------------------------------------------------------
/src/main/tech/thomas_sojka/hiccup_d3/charts/tree.cljs:
--------------------------------------------------------------------------------
1 | (ns tech.thomas-sojka.hiccup-d3.charts.tree
2 | (:require ["d3" :as d3]
3 | [tech.thomas-sojka.hiccup-d3.utils :refer [fetch-json]])
4 | (:require-macros [tech.thomas-sojka.hiccup-d3.macros :as m]))
5 |
6 | (def plain
7 | (m/build-chart
8 | "plain"
9 | (fn [data]
10 | (let [size 300
11 | r 2
12 | root ((-> (d3/tree)
13 | (.size (into-array [(- size (* 2 r)) (- size (* 2 r))])))
14 | (-> (d3/hierarchy data)))
15 | draw-link (-> (d3/linkVertical)
16 | (.x (fn [d] (.-x d)))
17 | (.y (fn [d] (.-y d))))]
18 | [:svg {:viewBox (str (- r) " " (- r) " " size " " size)}
19 | [:g
20 | (map
21 | (fn [node]
22 | [:circle {:key ^js (.-data.name node)
23 | :cx (.-x node)
24 | :cy (.-y node)
25 | :r r}])
26 | (.descendants root))]
27 | [:g
28 | (map-indexed
29 | (fn [idx link]
30 | [:path {:key idx
31 | :fill "transparent"
32 | :stroke "black"
33 | :d (draw-link link)}])
34 | (.links root))]]))))
35 |
36 | (def tree
37 | {:title "Tree"
38 | :load (fn [] (-> (fetch-json "data/flare-2.json")))
39 | :charts [plain]})
40 |
--------------------------------------------------------------------------------
/src/main/tech/thomas_sojka/hiccup_d3/charts/sunburst.cljs:
--------------------------------------------------------------------------------
1 | (ns tech.thomas-sojka.hiccup-d3.charts.sunburst
2 | (:require ["d3" :as d3]
3 | [tech.thomas-sojka.hiccup-d3.utils :refer [fetch-json]])
4 | (:require-macros [tech.thomas-sojka.hiccup-d3.macros :as m]))
5 |
6 | (def plain
7 | (m/build-chart
8 | "plain"
9 | (fn [data]
10 | (let [size 300
11 | arc (-> (d3/arc)
12 | (.startAngle (fn [d] (.-x0 d)))
13 | (.endAngle (fn [d] (.-x1 d)))
14 | (.innerRadius (fn [d] (.-y0 d)))
15 | (.outerRadius (fn [d] (- (.-y1 d) 1))))
16 | radius (/ size 2)
17 | color (d3/scaleOrdinal d3/schemeCategory10)
18 | partition ((-> (d3/partition)
19 | (.size (into-array [(* 2 js/Math.PI) radius])))
20 | (-> (d3/hierarchy data)
21 | (.sum (fn [d] (.-value d)))
22 | (.sort (fn [a b] (- (.-value b) (.-value a))))))]
23 | [:svg {:viewBox (str (- (/ size 2)) " " (- (/ size 2)) " " size " " size)}
24 | [:g
25 | (map
26 | (fn [d]
27 | [:path {:key ^js (.-data.name d)
28 | :d (arc d)
29 | :fill (color ^js (.-data.name d))}])
30 | (.descendants partition))]]))))
31 |
32 | (def sunburst
33 | {:title "Sunburst"
34 | :load (fn [] (fetch-json "data/flare-2.json"))
35 | :charts [plain]})
36 |
--------------------------------------------------------------------------------
/README.org:
--------------------------------------------------------------------------------
1 | * [[https://rollacaster.github.io/hiccup-d3/][hiccup-d3]]
2 | [[https://rollacaster.github.io/hiccup-d3/][hiccup-d3]] provides [[https://d3js.org/][D3]] charts written in [[https://clojurescript.org/][ClojureScript]].
3 | ** Usage
4 | This is not a library. Just copy [[https://rollacaster.github.io/hiccup-d3/][one of the examples]] as a starting point for your chart: https://rollacaster.github.io/hiccup-d3/.
5 |
6 | The example code assumes =D3= is already required.
7 | ** Rationale
8 | *** Transforming a [[https://observablehq.com/@d3/][D3 example from Observable]] to ClojureScript is repetitive work
9 | [[https://d3js.org/][D3]] can only process =JavaScript= data structures but to use the result you need to transform it into =Clojure= data structures. A common solution is to transform them into [[https://github.com/weavejester/hiccup][hiccup]]. Every time I start a new chart I repeat this task, to avoid this I created [[https://rollacaster.github.io/hiccup-d3/][hiccup-d3]] to have a common starting point for [[https://d3js.org/][D3]] charts.
10 | *** hiccup-d3 is no wrapper library
11 | Interop between [[https://clojurescript.org/][ClojureScript]] and JavaScript works well. Therefore, I did not want to create a wrapper which would add additional abstractions. Parts of [[https://d3js.org/][D3]] are written in an idiomatic Clojure style and focus on transforming data. Only those parts are part of [[https://rollacaster.github.io/hiccup-d3/][hiccup-d3]]. Maybe I'll try to write a library for the other parts in the future.
12 |
--------------------------------------------------------------------------------
/src/main/tech/thomas_sojka/hiccup_d3/charts/pack.cljs:
--------------------------------------------------------------------------------
1 | (ns tech.thomas-sojka.hiccup-d3.charts.pack
2 | (:require ["d3" :as d3]
3 | [tech.thomas-sojka.hiccup-d3.utils :refer [fetch-json]])
4 | (:require-macros [tech.thomas-sojka.hiccup-d3.macros :as m]))
5 |
6 | (def plain
7 | (m/build-chart
8 | "plain"
9 | (fn [data]
10 | (let [size 300
11 | color (d3/scaleOrdinal d3/schemeCategory10)
12 | margin 7
13 | root ((-> (d3/pack)
14 | (.size (into-array [(- size margin) (- size margin)])))
15 | (-> (d3/hierarchy data)
16 | (.sum (fn [d] (.-value d)))
17 | (.sort (fn [a b] (- (.-value b) (.-value a))))))]
18 | [:svg {:viewBox (str 0 " " 0 " " size " " size)}
19 | [:filter {:id "dropshadow" :filterUnits "userSpaceOnUse"}
20 | [:feGaussianBlur {:in "SourceAlpha" :stdDeviation "3"}]
21 | [:feOffset {:dx (/ margin 2) :dy (/ margin 2)}]
22 | [:feMerge
23 | [:feMergeNode]
24 | [:feMergeNode {:in "SourceGraphic"}]]]
25 | (map
26 | (fn [node]
27 | [:circle {:key ^js (.-data.name node)
28 | :cx (.-x node) :cy (.-y node) :r (.-r node)
29 | :fill (color (.-height node))
30 | :filter "url(#dropshadow)"}])
31 | (.descendants root))]))))
32 |
33 | (def pack
34 | {:title "Pack"
35 | :load (fn [] (-> (fetch-json "data/flare-2.json")))
36 | :charts [plain]})
37 |
--------------------------------------------------------------------------------
/src/main/tech/thomas_sojka/hiccup_d3/charts/graph.cljs:
--------------------------------------------------------------------------------
1 | (ns tech.thomas-sojka.hiccup-d3.charts.graph
2 | (:require ["d3" :as d3]
3 | [tech.thomas-sojka.hiccup-d3.utils :refer [fetch-json]])
4 | (:require-macros [tech.thomas-sojka.hiccup-d3.macros :as m]))
5 |
6 | (def plain
7 | (m/build-chart
8 | "plain"
9 | (fn [data]
10 | (let [size 600]
11 | (-> (d3/forceSimulation (.-nodes data))
12 | (.force "link" (-> (d3/forceLink (.-links data))
13 | (.id (fn [d] (.-id d)))))
14 | (.force "charge" (d3/forceManyBody))
15 | (.force "center" (d3/forceCenter (/ size 2) (/ size 2)))
16 | .stop
17 | (.tick 1500))
18 | [:svg {:viewBox (str "0 0 " size " " size)}
19 | [:g
20 | (map (fn [node]
21 | [:circle {:key (.-id node)
22 | :cx (.-x node)
23 | :cy (.-y node)
24 | :r 5}])
25 | (.-nodes data))]
26 | [:g
27 | (map
28 | (fn [link]
29 | [:line {:key (.-index link)
30 | :x1 (.-x (.-source link))
31 | :y1 (.-y (.-source link))
32 | :x2 (.-x (.-target link))
33 | :y2 (.-y (.-target link))
34 | :stroke "black"}])
35 | (.-links data))]]))))
36 |
37 | (def graph
38 | {:title "Graph"
39 | :load (fn [] (-> (fetch-json "data/miserables.json")))
40 | :charts [plain]})
41 |
--------------------------------------------------------------------------------
/src/main/tech/thomas_sojka/hiccup_d3/charts/treemap.cljs:
--------------------------------------------------------------------------------
1 | (ns tech.thomas-sojka.hiccup-d3.charts.treemap
2 | (:require ["d3" :as d3]
3 | [tech.thomas-sojka.hiccup-d3.utils :refer [fetch-json]])
4 | (:require-macros [tech.thomas-sojka.hiccup-d3.macros :as m]))
5 |
6 | (def plain
7 | (m/build-chart
8 | "plain"
9 | (fn [data]
10 | (let [size 300
11 | color (d3/scaleOrdinal d3/schemeCategory10)
12 | root ((-> (d3/treemap)
13 | (.tile d3/treemapBinary)
14 | (.size (into-array [size size])))
15 | (-> (d3/hierarchy data)
16 | (.sum (fn [d] (.-value d)))
17 | (.sort (fn [a b] (- (.-value b) (.-value a))))))]
18 | [:svg {:viewBox (str 0 " " 0 " " size " " size)}
19 | [:g
20 | (->> (.leaves root)
21 | (map (fn [d]
22 | (let [parent-name (loop [d d]
23 | (if (> (.-depth d) 1)
24 | (recur (.-parent d))
25 | ^js (.-data.name d)))]
26 | [:rect {:key ^js (.-data.name d)
27 | :x (.-x0 d) :y (.-y0 d)
28 | :width (- (.-x1 d) (.-x0 d))
29 | :height (- (.-y1 d) (.-y0 d))
30 | :stroke "black"
31 | :fill (color parent-name)}]))))]]))))
32 |
33 | (def treemap
34 | {:title "Treemap"
35 | :load (fn [] (-> (fetch-json "data/flare-2.json")))
36 | :charts [plain]})
37 |
--------------------------------------------------------------------------------
/src/main/tech/thomas_sojka/hiccup_d3/charts/line.cljs:
--------------------------------------------------------------------------------
1 | (ns tech.thomas-sojka.hiccup-d3.charts.line
2 | (:require ["d3" :as d3]
3 | [tech.thomas-sojka.hiccup-d3.utils :refer [csv->clj]])
4 | (:require-macros [tech.thomas-sojka.hiccup-d3.macros :as m]))
5 |
6 | (def plain
7 | (m/build-chart
8 | "plain"
9 | (fn [data]
10 | (let [size 300
11 | dates (map :date data)
12 | values (map :close data)
13 | x (-> (d3/scaleUtc)
14 | (.domain (into-array [(apply min dates) (apply max dates)]))
15 | (.range (into-array [0 size])))
16 | y (-> (d3/scaleLinear)
17 | (.domain (into-array [0 (apply max values)]))
18 | (.range (into-array [size 0])))
19 | line (-> (d3/line)
20 | (.x (fn [d] (x (:date d))))
21 | (.y (fn [d] (y (:close d)))))]
22 | [:svg {:viewBox (str 0 " " 0 " " size " " size)}
23 | [:path {:d (line data)
24 | :fill "transparent"
25 | :stroke (first d3/schemeCategory10)}]]))))
26 |
27 | (def line
28 | {:title "Line"
29 | :load (fn []
30 | (let [parse-stock-data (fn [stock-data]
31 | (-> stock-data
32 | (update :date #(js/Date. %))
33 | (update :close js/parseFloat)))]
34 | (-> (js/fetch "data/apple-stock.csv")
35 | (.then (fn [res] (.text res)))
36 | (.then (fn [res] (->> res
37 | csv->clj
38 | (map parse-stock-data)))))))
39 | :charts [plain]})
40 |
--------------------------------------------------------------------------------
/src/main/tech/thomas_sojka/hiccup_d3/charts/chord.cljs:
--------------------------------------------------------------------------------
1 | (ns tech.thomas-sojka.hiccup-d3.charts.chord
2 | (:require ["d3" :as d3])
3 | (:require-macros [tech.thomas-sojka.hiccup-d3.macros :as m]))
4 |
5 | (def plain
6 | (m/build-chart
7 | "plain"
8 | (fn [data]
9 | (let [size 300
10 | radius (/ size 2)
11 | innerRadius (- radius 10)
12 | color (d3/scaleOrdinal d3/schemeCategory10)
13 | ribbon (-> (d3/ribbon)
14 | (.radius (- innerRadius 1))
15 | (.padAngle (/ 1 innerRadius)))
16 | arc (-> (d3/arc)
17 | (.innerRadius innerRadius)
18 | (.outerRadius radius))
19 | chord (-> (d3/chord)
20 | (.sortSubgroups d3/descending)
21 | (.sortChords d3/descending))]
22 | [:svg {:viewBox (str (- radius) " " (- radius) " " size " " size)}
23 | [:g
24 | (map-indexed
25 | (fn [idx link]
26 | [:path {:key idx :d (ribbon link) :fill (color ^js (.-source.index link))}])
27 | (chord data))]
28 | [:g
29 | (map
30 | (fn [group]
31 | [:path {:d (arc group) :fill (color (.-index group)) :key (.-index group)}])
32 | (.-groups (chord data)))]]))))
33 |
34 | (def chord
35 | {:title "Chord"
36 | :load (fn [] (js/Promise.resolve
37 | (clj->js
38 | [[0.096899, 0.008859, 0.000554, 0.004430, 0.025471, 0.024363, 0.005537, 0.025471],
39 | [0.001107, 0.018272, 0.000000, 0.004983, 0.011074, 0.010520, 0.002215, 0.004983],
40 | [0.000554, 0.002769, 0.002215, 0.002215, 0.003876, 0.008306, 0.000554, 0.003322],
41 | [0.000554, 0.001107, 0.000554, 0.012182, 0.011628, 0.006645, 0.004983, 0.010520],
42 | [0.002215, 0.004430, 0.000000, 0.002769, 0.104097, 0.012182, 0.004983, 0.028239],
43 | [0.011628, 0.026024, 0.000000, 0.013843, 0.087486, 0.168328, 0.017165, 0.055925],
44 | [0.000554, 0.004983, 0.000000, 0.003322, 0.004430, 0.008859, 0.017719, 0.004430],
45 | [0.002215, 0.007198, 0.000000, 0.003322, 0.016611, 0.014950, 0.001107, 0.054264]])))
46 | :charts [plain]})
47 |
--------------------------------------------------------------------------------
/src/main/tech/thomas_sojka/hiccup_d3/charts/sankey.cljs:
--------------------------------------------------------------------------------
1 | (ns tech.thomas-sojka.hiccup-d3.charts.sankey
2 | (:require ["d3" :as d3]
3 | ["d3-sankey" :as d3-sankey]
4 | [clojure.string :as str]
5 | [tech.thomas-sojka.hiccup-d3.utils :refer [csv->clj]])
6 | (:require-macros [tech.thomas-sojka.hiccup-d3.macros :as m]))
7 |
8 | (def plain
9 | (m/build-chart
10 | "plain"
11 | (fn [data]
12 | (let [size 300
13 | color (d3/scaleOrdinal d3/schemeCategory10)
14 | nodes (fn [links]
15 | (->> links
16 | (mapcat (fn [{:keys [source target]}] [source target]))
17 | distinct
18 | (map (fn [name] {:name name :category (str/replace name #" .*" "")}))))
19 | data (clj->js {:links data :nodes (nodes data)})
20 | compute-sankey (-> (d3-sankey/sankey)
21 | (.nodeId (fn [d] (.-name d)))
22 | (.size (into-array [size size])))
23 | sankey-data (compute-sankey data)]
24 | [:svg {:viewBox (str "0 0 " size " " size)}
25 | [:g
26 | (map (fn [node]
27 | [:rect {:key (.-name node)
28 | :height (- (.-y1 node) (.-y0 node))
29 | :width (- (.-x1 node) (.-x0 node))
30 | :x (.-x0 node)
31 | :y (.-y0 node)
32 | :fill (color ^js (.-category node))}])
33 | (.-nodes sankey-data))]
34 | [:g
35 | (map
36 | (fn [link]
37 | [:path {:key (.-index link)
38 | :d ((d3-sankey/sankeyLinkHorizontal) link)
39 | :stroke-width (.-width link)
40 | :stroke (color (.-source.name ^js link))
41 | :opacity 0.5
42 | :fill "transparent"}])
43 | (.-links sankey-data))]]))))
44 |
45 | (def sankey
46 | {:title "Sankey"
47 | :load (fn []
48 | (-> (js/fetch "data/energy.csv")
49 | (.then (fn [res] (.text res)))
50 | (.then (fn [res] (->> res
51 | csv->clj
52 | (map #(update % :value js/parseFloat)))))
53 | (.catch (fn [res] (prn res)))))
54 | :charts [plain]})
55 |
--------------------------------------------------------------------------------
/src/main/tech/thomas_sojka/hiccup_d3/charts/pie.cljs:
--------------------------------------------------------------------------------
1 | (ns tech.thomas-sojka.hiccup-d3.charts.pie
2 | (:require ["d3" :as d3]
3 | [tech.thomas-sojka.hiccup-d3.utils :refer [fetch-json]])
4 | (:require-macros [tech.thomas-sojka.hiccup-d3.macros :as m]))
5 |
6 | (def plain
7 | (m/build-chart
8 | "plain"
9 | (fn [data]
10 | (let [size 300
11 | pie (-> (d3/pie)
12 | (.sort nil)
13 | (.value (fn [d] (:value d))))
14 | arc (-> (d3/arc)
15 | (.innerRadius 0)
16 | (.outerRadius (/ size 2)))
17 | color (d3/scaleOrdinal d3/schemeCategory10)
18 | arcs (pie data)]
19 | [:svg {:viewBox (str (- (/ size 2)) " " (- (/ size 2)) " " size " " size)}
20 | (map
21 | (fn [pie-arc]
22 | [:g {:key (.-index pie-arc)}
23 | [:path {:d (arc pie-arc) :fill (color (.-index pie-arc))}]])
24 | arcs)]))))
25 |
26 | (def with-labels
27 | (m/build-chart
28 | "with labels"
29 | (fn [data]
30 | (let [size 300
31 | pie (-> (d3/pie)
32 | (.sort nil)
33 | (.value (fn [d] (:value d))))
34 | arc (-> (d3/arc)
35 | (.innerRadius 0)
36 | (.outerRadius (/ size 2)))
37 | arc-label (let [r (* (/ size 2) 0.8)]
38 | (-> (d3/arc)
39 | (.innerRadius r)
40 | (.outerRadius r)))
41 | color (d3/scaleOrdinal d3/schemeCategory10)
42 | arcs (pie data)]
43 | [:svg {:viewBox (str (- (/ size 2)) " " (- (/ size 2)) " " size " " size)}
44 | (map
45 | (fn [pie-arc]
46 | [:g {:key (.-index pie-arc)}
47 | [:path {:d (arc pie-arc) :fill (color (.-index pie-arc))}]
48 | (when (> (- ^js (.-endAngle pie-arc) ^js (.-startAngle pie-arc)) 0.3)
49 | [:text
50 | {:transform (str "translate(" (.centroid arc-label pie-arc) ")")
51 | :text-anchor "middle"
52 | :dominant-baseline "middle"}
53 | (:name (.-data pie-arc))])])
54 | arcs)]))))
55 |
56 | (def pie
57 | {:title "Pie"
58 | :load (fn []
59 | (-> (fetch-json "data/population-by-age.json")
60 | (.then (fn [res] (js->clj res :keywordize-keys true)))))
61 | :charts [plain with-labels]})
62 |
--------------------------------------------------------------------------------
/public/data/energy.csv:
--------------------------------------------------------------------------------
1 | source,target,value
2 | Agricultural 'waste',Bio-conversion,124.729
3 | Bio-conversion,Liquid,0.597
4 | Bio-conversion,Losses,26.862
5 | Bio-conversion,Solid,280.322
6 | Bio-conversion,Gas,81.144
7 | Biofuel imports,Liquid,35
8 | Biomass imports,Solid,35
9 | Coal imports,Coal,11.606
10 | Coal reserves,Coal,63.965
11 | Coal,Solid,75.571
12 | District heating,Industry,10.639
13 | District heating,Heating and cooling - commercial,22.505
14 | District heating,Heating and cooling - homes,46.184
15 | Electricity grid,Over generation / exports,104.453
16 | Electricity grid,Heating and cooling - homes,113.726
17 | Electricity grid,H2 conversion,27.14
18 | Electricity grid,Industry,342.165
19 | Electricity grid,Road transport,37.797
20 | Electricity grid,Agriculture,4.412
21 | Electricity grid,Heating and cooling - commercial,40.858
22 | Electricity grid,Losses,56.691
23 | Electricity grid,Rail transport,7.863
24 | Electricity grid,Lighting & appliances - commercial,90.008
25 | Electricity grid,Lighting & appliances - homes,93.494
26 | Gas imports,Ngas,40.719
27 | Gas reserves,Ngas,82.233
28 | Gas,Heating and cooling - commercial,0.129
29 | Gas,Losses,1.401
30 | Gas,Thermal generation,151.891
31 | Gas,Agriculture,2.096
32 | Gas,Industry,48.58
33 | Geothermal,Electricity grid,7.013
34 | H2 conversion,H2,20.897
35 | H2 conversion,Losses,6.242
36 | H2,Road transport,20.897
37 | Hydro,Electricity grid,6.995
38 | Liquid,Industry,121.066
39 | Liquid,International shipping,128.69
40 | Liquid,Road transport,135.835
41 | Liquid,Domestic aviation,14.458
42 | Liquid,International aviation,206.267
43 | Liquid,Agriculture,3.64
44 | Liquid,National navigation,33.218
45 | Liquid,Rail transport,4.413
46 | Marine algae,Bio-conversion,4.375
47 | Ngas,Gas,122.952
48 | Nuclear,Thermal generation,839.978
49 | Oil imports,Oil,504.287
50 | Oil reserves,Oil,107.703
51 | Oil,Liquid,611.99
52 | Other waste,Solid,56.587
53 | Other waste,Bio-conversion,77.81
54 | Pumped heat,Heating and cooling - homes,193.026
55 | Pumped heat,Heating and cooling - commercial,70.672
56 | Solar PV,Electricity grid,59.901
57 | Solar Thermal,Heating and cooling - homes,19.263
58 | Solar,Solar Thermal,19.263
59 | Solar,Solar PV,59.901
60 | Solid,Agriculture,0.882
61 | Solid,Thermal generation,400.12
62 | Solid,Industry,46.477
63 | Thermal generation,Electricity grid,525.531
64 | Thermal generation,Losses,787.129
65 | Thermal generation,District heating,79.329
66 | Tidal,Electricity grid,9.452
67 | UK land based bioenergy,Bio-conversion,182.01
68 | Wave,Electricity grid,19.013
69 | Wind,Electricity grid,289.366
70 |
--------------------------------------------------------------------------------
/src/main/tech/thomas_sojka/hiccup_d3/charts/bar.cljs:
--------------------------------------------------------------------------------
1 | (ns tech.thomas-sojka.hiccup-d3.charts.bar
2 | (:require ["d3" :as d3]
3 | [tech.thomas-sojka.hiccup-d3.utils :refer [fetch-json]])
4 | (:require-macros [tech.thomas-sojka.hiccup-d3.macros :as m]))
5 |
6 | (def plain
7 | (m/build-chart
8 | "plain"
9 | (fn [data]
10 | (let [size 400
11 | x (-> (d3/scaleLinear)
12 | (.range (into-array [0 size]))
13 | (.domain (into-array [0 (apply max (map :frequency data))])))
14 | y (-> (d3/scaleBand)
15 | (.domain (into-array (map :letter data)))
16 | (.range (into-array [0 size])))
17 | color (d3/scaleOrdinal d3/schemeCategory10)]
18 | [:svg {:viewBox (str "0 0 " size " " size)}
19 | (map
20 | (fn [{:keys [letter frequency]}]
21 | [:g {:key letter :transform (str "translate(" 0 "," (y letter) ")")}
22 | [:rect {:x (x 0)
23 | :height (.bandwidth y)
24 | :fill (color letter)
25 | :width (x frequency)}]])
26 | data)]))))
27 |
28 | (def with-labels
29 | (m/build-chart
30 | "with labels"
31 | (fn [data]
32 | (let [size 400
33 | margin {:top 0 :right 0 :left 16 :bottom 0}
34 | x (-> (d3/scaleLinear)
35 | (.range (into-array [(:left margin) (- size (:right margin))]))
36 | (.domain (into-array [0 (apply max (map :frequency data))])))
37 | y (-> (d3/scaleBand)
38 | (.domain (into-array (map :letter data)))
39 | (.range (into-array [(:top margin) (- size (:bottom margin))])))
40 | color (d3/scaleOrdinal d3/schemeCategory10)]
41 | [:svg {:viewBox (str "0 0 " size " " size)}
42 | (map
43 | (fn [{:keys [letter frequency]}]
44 | [:g {:key letter :transform (str "translate(" 0 "," (y letter) ")")}
45 | [:rect {:x (x 0)
46 | :height (.bandwidth y)
47 | :fill (color letter)
48 | :width (x frequency)}]])
49 | data)
50 | (map
51 | (fn [{:keys [letter frequency]}]
52 | [:g {:key letter :transform (str "translate(" 0 "," (y letter) ")")}
53 | [:text {:x 20
54 | :y (+ (/ (.bandwidth y) 2) 1)
55 | :dominant-baseline "middle"}
56 | frequency]
57 | [:text.current-fill
58 | {:x 0 :y (/ (.bandwidth y) 2) :dominant-baseline "middle"}
59 | letter]])
60 | data)]))))
61 |
62 | (def bar
63 | {:title "Bar"
64 | :load (fn []
65 | (-> (fetch-json "data/frequencies.json")
66 | (.then (fn [res] (js->clj res :keywordize-keys true)))))
67 | :charts [plain with-labels]})
68 |
--------------------------------------------------------------------------------
/resources/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
9 | hiccup-d3
10 |
11 |
12 |
13 |
14 |
15 |
72 |
73 |
74 |
75 |
76 |
--------------------------------------------------------------------------------
/src/main/tech/thomas_sojka/hiccup_d3/macros.clj:
--------------------------------------------------------------------------------
1 | (ns tech.thomas-sojka.hiccup-d3.macros
2 | (:require [clojure.pprint :refer [pprint]]
3 | [clojure.string :as str]
4 | [clojure.walk :as walk]
5 | [glow.core :as glow]
6 | [markdown-to-hiccup.core :as m]))
7 |
8 | (def doc-hiccup
9 | (-> "https://raw.githubusercontent.com/d3/d3/master/API.md"
10 | slurp
11 | (m/md->hiccup)))
12 |
13 | (defn find-call-in-doc-item [call doc-item]
14 | (and (string? doc-item)
15 | (str/includes? doc-item call)
16 | (= call
17 | (last
18 | (re-matches
19 | #"^https:\/\/github\.com\/d3\/.*\/blob\/v.*\/README\.md#(.*)$"
20 | doc-item)))))
21 |
22 | (defn d3-doc-link [call]
23 | (cond
24 | (= call "sankey") "https://github.com/d3/d3-sankey#_sankey"
25 | (= call "sankeyLinkHorizontal") "https://github.com/d3/d3-sankey#sankeyLinkHorizontal"
26 | :else
27 | (let [d3-api (atom nil)]
28 | (walk/postwalk
29 | (fn [doc-item]
30 | (when (find-call-in-doc-item (case call
31 | "Delaunay" "new_Delaunay"
32 | call)
33 | doc-item)
34 | (reset! d3-api doc-item)))
35 | doc-hiccup)
36 | @d3-api)))
37 |
38 | (defn d3-fns [code]
39 | (let [d3-calls (atom [])]
40 | (walk/postwalk
41 | (fn [item]
42 | (when (and (symbol? item) (str/includes? item "d3"))
43 | (swap! d3-calls conj (name item))))
44 | code)
45 | (set @d3-calls)))
46 |
47 | (defmacro build-chart [title code]
48 | `{:title ~title
49 | :d3-apis ~(mapv (fn [fn] {:doc-link (d3-doc-link fn) :fn fn}) (d3-fns code))
50 | :code-formatted ~(glow/highlight-html (with-out-str (pprint (last code))))
51 | :chart (fn [data#] (~code data#))})
52 |
53 | (spit "public/css/glow.css" (glow/generate-css
54 | {:background "white"
55 | :exception "#859900"
56 | :repeat "#859900"
57 | :conditional "#859900"
58 | :variable "#268bd2"
59 | :core-fn "#586e75"
60 | :definition "#cb4b16"
61 | :reader-char "#dc322f"
62 | :special-form "#859900"
63 | :macro "#859900"
64 | :number "#2aa198"
65 | :boolean "#2aa198"
66 | :nil "#2aa198"
67 | :s-exp "#586e75"
68 | :keyword "#268bd2"
69 | :comment "#586e75"
70 | :string "#2aa198"
71 | :character "#2aa198"
72 | :regex "#dc322f"
73 | :symbol "#586e75"}))
74 |
75 |
--------------------------------------------------------------------------------
/src/main/tech/thomas_sojka/hiccup_d3/charts/streamgraph.cljs:
--------------------------------------------------------------------------------
1 | (ns tech.thomas-sojka.hiccup-d3.charts.streamgraph
2 | (:require ["d3" :as d3]
3 | [tech.thomas-sojka.hiccup-d3.utils :refer [csv->clj]])
4 | (:require-macros [tech.thomas-sojka.hiccup-d3.macros :as m]))
5 |
6 | (def plain
7 | (m/build-chart
8 | "plain"
9 | (fn [data]
10 | (let [size 300
11 | data-keys (remove #{"date"} (map name (keys (first data))))
12 | create-series (-> (d3/stack)
13 | (.keys data-keys)
14 | (.offset d3/stackOffsetWiggle)
15 | (.order d3/stackOrderInsideOut))
16 | series (create-series (clj->js data))
17 | dates (map :date data)
18 | x (-> (d3/scaleUtc)
19 | (.domain (into-array [(apply min dates) (apply max dates)]))
20 | (.range (into-array [0 size])))
21 | y (-> (d3/scaleLinear)
22 | (.domain
23 | (into-array
24 | [(apply min (map (fn [d] (apply min (map first d))) series))
25 | (apply max (map (fn [d] (apply max (map last d))) series))]))
26 | (.range (into-array [0 size])))
27 | area (-> (d3/area)
28 | (.x (fn [d] (x ^js (.-data.date d))))
29 | (.y0 (fn [[y0]] (y y0)))
30 | (.y1 (fn [[_ y1]] (y y1))))
31 | color (-> (d3/scaleOrdinal)
32 | (.domain (clj->js data-keys))
33 | (.range d3/schemeCategory10))]
34 | [:svg {:viewBox (str 0 " " 0 " " size " " size)}
35 | (map
36 | (fn [d] [:path {:key (.-index d) :d (area d) :fill (color (.-key d))}])
37 | series)]))))
38 |
39 | (def streamgraph
40 | {:title "Streamgraph"
41 | :load (let [parse-unemployment-data
42 | (fn [employment-data]
43 | (-> employment-data
44 | (update :date #(js/Date. %))
45 | (update :MiningandExtraction js/parseFloat)
46 | (update :Finance js/parseFloat)
47 | (update :Leisureandhospitality js/parseFloat)
48 | (update :Businessservices js/parseFloat)
49 | (update :WholesaleandRetailTrade js/parseFloat)
50 | (update :Construction js/parseFloat)
51 | (update :Manufacturing js/parseFloat)
52 | (update :Information js/parseFloat)
53 | (update :Agriculture js/parseFloat)
54 | (update :Other js/parseFloat)
55 | (update :EducationandHealth js/parseFloat)
56 | (update :TransportationandUtilities js/parseFloat)
57 | (update :Self-employed js/parseFloat)
58 | (update :Government js/parseFloat)))]
59 | (fn [] (-> (js/fetch "data/unemployment.csv")
60 | (.then (fn [res] (.text res)))
61 | (.then (fn [res] (->> res
62 | csv->clj
63 | (map parse-unemployment-data)))))))
64 | :charts [plain]})
65 |
--------------------------------------------------------------------------------
/public/data/unemployment.csv:
--------------------------------------------------------------------------------
1 | date,Wholesale and Retail Trade,Manufacturing,Leisure and hospitality,Business services,Construction,Education and Health,Government,Finance,Self-employed,Other,Transportation and Utilities,Information,Agriculture,Mining and Extraction
2 | 2000-01-01,1000,734,782,655,745,353,430,228,239,274,236,125,154,19
3 | 2000-02-01,1023,694,779,587,812,349,409,240,262,232,223,112,173,25
4 | 2000-03-01,983,739,789,623,669,381,311,226,213,247,192,140,152,17
5 | 2000-04-01,793,736,658,517,447,329,269,197,218,240,191,95,135,20
6 | 2000-05-01,821,685,675,561,397,423,370,195,206,254,190,131,73,27
7 | 2000-06-01,837,621,833,545,389,452,603,216,188,225,183,102,109,13
8 | 2000-07-01,792,708,786,636,384,478,545,190,222,202,228,144,77,16
9 | 2000-08-01,853,685,675,584,446,450,583,213,186,187,198,143,110,23
10 | 2000-09-01,791,667,636,559,386,398,408,187,213,220,231,130,124,25
11 | 2000-10-01,739,693,691,504,417,339,391,224,226,161,153,96,113,39
12 | 2000-11-01,701,672,694,547,482,351,384,184,273,217,129,117,192,11
13 | 2000-12-01,715,653,639,564,580,293,365,200,178,167,168,151,196,20
14 | 2001-01-01,908,911,806,734,836,428,463,232,194,197,194,161,188,11
15 | 2001-02-01,990,902,821,724,826,423,298,235,209,243,189,109,193,27
16 | 2001-03-01,1037,954,817,652,683,456,355,211,181,200,193,148,267,14
17 | 2001-04-01,820,855,744,655,596,341,369,232,216,220,232,148,140,24
18 | 2001-05-01,875,903,731,652,478,390,361,191,206,172,178,164,109,34
19 | 2001-06-01,955,956,821,694,443,476,525,249,187,246,242,163,130,26
20 | 2001-07-01,833,1054,813,731,447,513,548,289,191,228,236,206,113,17
21 | 2001-08-01,928,1023,767,790,522,595,540,256,243,241,226,210,141,18
22 | 2001-09-01,936,996,900,810,489,455,438,268,256,225,214,219,101,23
23 | 2001-10-01,941,1065,903,910,535,486,429,281,247,239,321,233,118,32
24 | 2001-11-01,1046,1108,935,946,670,516,420,320,234,256,302,241,145,20
25 | 2001-12-01,1074,1172,938,921,785,483,419,258,249,277,310,275,192,27
26 | 2002-01-01,1212,1377,947,1120,1211,586,486,267,263,304,368,263,195,33
27 | 2002-02-01,1264,1296,973,973,1060,590,508,318,250,339,331,279,187,35
28 | 2002-03-01,1269,1367,976,964,1009,540,477,287,217,314,313,266,269,28
29 | 2002-04-01,1222,1322,953,951,855,493,447,292,255,268,280,257,151,33
30 | 2002-05-01,1138,1194,1022,983,626,533,484,340,264,264,257,260,89,25
31 | 2002-06-01,1240,1187,1034,1079,593,638,561,373,246,335,274,255,89,35
32 | 2002-07-01,1132,1185,999,1075,594,671,645,345,249,356,270,264,114,19
33 | 2002-08-01,1170,1108,884,926,654,660,596,343,271,353,221,270,125,32
34 | 2002-09-01,1171,1076,885,1007,615,562,530,299,266,281,235,231,92,42
35 | 2002-10-01,1212,1046,956,962,680,517,499,312,275,272,262,211,97,36
36 | 2002-11-01,1242,1115,978,1029,758,493,468,337,297,284,233,220,137,32
37 | 2002-12-01,1150,1188,922,1038,941,558,446,322,327,241,243,255,120,45
38 | 2003-01-01,1342,1302,1049,1112,1196,559,571,327,324,304,331,243,159,54
39 | 2003-02-01,1238,1229,1145,1140,1173,576,483,310,304,331,316,321,172,41
40 | 2003-03-01,1179,1222,1035,1190,987,518,526,357,279,370,319,267,161,46
41 | 2003-04-01,1201,1199,986,1076,772,611,440,323,248,331,274,268,154,41
42 | 2003-05-01,1247,1150,955,1105,715,618,478,320,271,339,260,251,133,40
43 | 2003-06-01,1434,1232,1048,1092,710,769,704,358,295,359,300,239,94,36
44 | 2003-07-01,1387,1193,1020,1021,677,697,749,284,270,405,289,224,113,43
45 | 2003-08-01,1161,1186,1050,881,650,760,745,342,302,373,255,224,173,20
46 | 2003-09-01,1229,1175,978,975,681,649,556,305,287,338,255,248,98,25
47 | 2003-10-01,1189,1041,933,1014,651,639,500,303,338,378,260,182,136,31
48 | 2003-11-01,1156,1034,990,948,690,662,542,311,308,357,275,257,148,34
49 | 2003-12-01,1081,1025,885,948,813,620,516,283,299,278,267,224,137,32
50 | 2004-01-01,1389,1110,1097,1070,994,662,511,403,302,322,243,236,184,31
51 | 2004-02-01,1369,1094,987,964,1039,608,490,363,260,366,291,194,168,24
52 | 2004-03-01,1386,1083,1039,999,1011,584,530,343,260,366,284,216,153,22
53 | 2004-04-01,1248,1004,925,752,849,589,433,312,242,347,239,168,107,34
54 | 2004-05-01,1183,966,977,819,665,570,468,302,287,310,230,190,99,22
55 | 2004-06-01,1182,957,1189,814,668,769,580,335,306,326,227,172,106,27
56 | 2004-07-01,1163,1019,965,790,610,725,741,307,291,346,231,174,140,28
57 | 2004-08-01,1079,840,1010,845,563,647,676,312,324,341,236,191,103,10
58 | 2004-09-01,1127,852,854,750,629,593,568,374,362,301,208,178,88,8
59 | 2004-10-01,1138,884,853,781,635,526,561,358,301,300,219,185,102,15
60 | 2004-11-01,1045,905,916,872,695,570,514,290,353,294,217,187,131,20
61 | 2004-12-01,1058,872,850,875,870,562,499,290,341,276,204,173,165,16
62 | 2005-01-01,1302,889,993,958,1079,613,555,252,346,290,276,168,153,29
63 | 2005-02-01,1301,889,1008,916,1150,619,472,301,363,325,245,204,107,25
64 | 2005-03-01,1173,879,967,807,961,614,468,261,312,308,267,177,139,32
65 | 2005-04-01,1131,793,882,714,693,591,478,255,273,306,257,178,84,19
66 | 2005-05-01,1145,743,944,730,567,648,453,288,299,314,223,145,66,16
67 | 2005-06-01,1197,743,950,743,559,667,681,307,268,291,247,160,76,25
68 | 2005-07-01,1194,883,929,804,509,635,683,309,282,274,222,142,69,22
69 | 2005-08-01,1130,767,844,728,561,644,664,300,249,306,187,156,100,12
70 | 2005-09-01,1038,775,842,862,572,658,568,260,282,307,211,168,127,12
71 | 2005-10-01,1050,800,796,748,519,628,502,255,255,319,251,162,85,2
72 | 2005-11-01,1013,823,966,711,564,677,494,268,319,300,199,172,118,18
73 | 2005-12-01,968,757,930,788,813,529,393,204,327,269,202,128,127,23
74 | 2006-01-01,1203,778,910,825,868,593,457,233,341,308,287,105,140,26
75 | 2006-02-01,1141,821,1040,841,836,528,472,268,332,281,260,119,139,25
76 | 2006-03-01,1022,701,917,824,820,563,461,298,300,292,263,116,117,14
77 | 2006-04-01,972,745,882,644,674,558,414,293,334,266,272,132,81,17
78 | 2006-05-01,1025,680,830,695,647,543,429,289,251,265,226,158,79,20
79 | 2006-06-01,1085,635,942,753,569,617,578,299,245,265,225,114,35,31
80 | 2006-07-01,1083,736,867,735,633,659,659,329,291,305,237,103,55,25
81 | 2006-08-01,977,680,855,681,618,611,595,263,306,341,217,132,76,32
82 | 2006-09-01,1008,632,810,736,586,576,396,235,299,310,183,170,78,14
83 | 2006-10-01,972,618,795,768,456,531,424,211,275,268,206,116,77,15
84 | 2006-11-01,1018,702,836,658,618,536,400,229,257,306,183,137,125,22
85 | 2006-12-01,965,660,701,791,725,502,395,227,287,306,190,108,139,25
86 | 2007-01-01,1166,752,911,885,922,563,476,233,376,275,248,143,128,35
87 | 2007-02-01,1045,774,879,825,1086,489,405,295,300,257,251,139,127,33
88 | 2007-03-01,896,742,845,775,924,495,419,252,311,222,249,109,123,24
89 | 2007-04-01,872,749,822,689,853,555,408,231,240,224,188,77,67,17
90 | 2007-05-01,795,651,831,743,676,622,428,281,276,242,216,110,64,22
91 | 2007-06-01,979,653,917,722,600,653,572,303,258,256,242,114,59,33
92 | 2007-07-01,1089,621,920,743,617,665,704,307,324,243,309,112,40,33
93 | 2007-08-01,1028,596,877,683,558,648,695,371,315,239,205,140,54,33
94 | 2007-09-01,1027,673,892,655,596,630,525,316,304,257,224,124,53,25
95 | 2007-10-01,907,729,911,675,641,534,492,307,338,182,218,120,47,9
96 | 2007-11-01,893,762,986,679,645,526,482,261,336,255,242,132,80,16
97 | 2007-12-01,1009,772,961,803,968,521,451,315,326,235,210,125,96,24
98 | 2008-01-01,1120,837,1176,893,1099,576,471,285,338,264,271,169,113,28
99 | 2008-02-01,1007,820,1056,866,1118,562,372,323,340,313,289,193,135,16
100 | 2008-03-01,992,831,944,876,1170,609,425,323,346,283,267,155,175,28
101 | 2008-04-01,919,796,874,736,1057,551,373,324,338,251,245,143,108,28
102 | 2008-05-01,1049,879,1074,829,809,619,461,361,366,275,269,170,94,28
103 | 2008-06-01,1160,862,1154,890,785,669,654,337,364,322,329,157,86,28
104 | 2008-07-01,1329,908,1172,866,783,776,770,350,345,352,359,141,125,13
105 | 2008-08-01,1366,960,1122,961,814,844,721,409,378,412,309,144,111,17
106 | 2008-09-01,1277,984,1029,951,970,835,573,380,414,374,337,166,84,25
107 | 2008-10-01,1313,1007,1126,1052,1078,797,552,434,396,334,316,168,97,15
108 | 2008-11-01,1397,1144,1283,992,1237,748,527,494,411,434,331,173,119,32
109 | 2008-12-01,1535,1315,1210,1147,1438,791,511,540,559,367,421,219,229,46
110 | 2009-01-01,1794,1711,1487,1445,1744,792,652,571,659,431,522,232,245,59
111 | 2009-02-01,1847,1822,1477,1512,2025,847,563,637,586,453,563,224,251,63
112 | 2009-03-01,1852,1912,1484,1597,1979,931,598,639,625,377,558,252,241,105
113 | 2009-04-01,1833,1968,1322,1448,1737,964,575,561,488,403,541,320,176,125
114 | 2009-05-01,1835,2010,1599,1514,1768,1005,702,536,530,476,506,303,136,98
115 | 2009-06-01,1863,2010,1688,1580,1601,1267,991,513,472,557,499,347,182,100
116 | 2009-07-01,1854,1988,1600,1531,1687,1269,1129,570,552,490,511,373,180,95
117 | 2009-08-01,1794,1866,1636,1560,1542,1239,1118,566,569,528,547,358,195,93
118 | 2009-09-01,1809,1876,1469,1596,1594,1257,928,657,636,462,538,362,150,76
119 | 2009-10-01,1919,1884,1604,1488,1744,1280,785,646,610,541,480,261,166,84
120 | 2009-11-01,1879,1882,1524,1514,1780,1168,748,619,592,491,493,243,180,96
121 | 2009-12-01,1851,1747,1624,1486,2044,1183,797,665,609,513,539,256,292,89
122 | 2010-01-01,2154,1918,1804,1614,2194,1175,948,623,730,609,657,313,318,68
123 | 2010-02-01,2071,1814,1597,1740,2440,1200,880,708,680,603,591,300,285,79
124 |
--------------------------------------------------------------------------------
/src/main/tech/thomas_sojka/hiccup_d3/app.cljs:
--------------------------------------------------------------------------------
1 | (ns tech.thomas-sojka.hiccup-d3.app
2 | (:require ["clipboard" :as clipboard]
3 | [cljs.pprint :refer [pprint]]
4 | [reagent.core :as r]
5 | [reagent.dom :as dom]
6 | [tech.thomas-sojka.hiccup-d3.charts.bar :refer [bar]]
7 | [tech.thomas-sojka.hiccup-d3.charts.pie :refer [pie]]
8 | [tech.thomas-sojka.hiccup-d3.charts.pack :refer [pack]]
9 | [tech.thomas-sojka.hiccup-d3.charts.tree :refer [tree]]
10 | [tech.thomas-sojka.hiccup-d3.charts.world-map :refer [world-map]]
11 | [tech.thomas-sojka.hiccup-d3.charts.sankey :refer [sankey]]
12 | [tech.thomas-sojka.hiccup-d3.charts.sunburst :refer [sunburst]]
13 | [tech.thomas-sojka.hiccup-d3.charts.graph :refer [graph]]
14 | [tech.thomas-sojka.hiccup-d3.charts.line :refer [line]]
15 | [tech.thomas-sojka.hiccup-d3.charts.treemap :refer [treemap]]
16 | [tech.thomas-sojka.hiccup-d3.charts.chord :refer [chord]]
17 | [tech.thomas-sojka.hiccup-d3.charts.voronoi :refer [voronoi]]
18 | [tech.thomas-sojka.hiccup-d3.charts.streamgraph :refer [streamgraph]]
19 | [tech.thomas-sojka.hiccup-d3.charts.contour :refer [contour]]))
20 |
21 | (defn icon [{:keys [name class]}]
22 | [:svg.fill-current {:viewBox "0 0 24 24" :class class}
23 | [:path {:d (case name
24 | :chart "M5 19h-4v-4h4v4zm6 0h-4v-8h4v8zm6 0h-4v-13h4v13zm6 0h-4v-19h4v19zm1 2h-24v2h24v-2z"
25 | :code "M24 10.935v2.131l-8 3.947v-2.23l5.64-2.783-5.64-2.79v-2.223l8 3.948zm-16 3.848l-5.64-2.783 5.64-2.79v-2.223l-8 3.948v2.131l8 3.947v-2.23zm7.047-10.783h-2.078l-4.011 16h2.073l4.016-16z"
26 | :data "M13 6c3.469 0 2 5 2 5s5-1.594 5 2v9h-12v-16h5zm.827-2h-7.827v20h16v-11.842c0-2.392-5.011-8.158-8.173-8.158zm.173-2l-3-2h-9v22h2v-20h10z"
27 | :copy "M22 2v22h-20v-22h3c1.23 0 2.181-1.084 3-2h8c.82.916 1.771 2 3 2h3zm-11 1c0 .552.448 1 1 1 .553 0 1-.448 1-1s-.447-1-1-1c-.552 0-1 .448-1 1zm9 1h-4l-2 2h-3.897l-2.103-2h-4v18h16v-18zm-13 9.729l.855-.791c1 .484 1.635.852 2.76 1.654 2.113-2.399 3.511-3.616 6.106-5.231l.279.64c-2.141 1.869-3.709 3.949-5.967 7.999-1.393-1.64-2.322-2.686-4.033-4.271z")}]])
28 |
29 | (defn spinner []
30 | [:svg {:width "38" :height "38" :viewBox "0 0 38 38"}
31 | [:defs [:linearGradient#a {:x1 "8.042%" :y1 "0%" :x2 "65.682%" :y2 "23.865%"}
32 | [:stop {:stop-color "#1F2937" :stop-opacity "0" :offset "0%"}]
33 | [:stop {:stop-color "#1F2937" :stop-opacity ".631" :offset "63.146%"}]
34 | [:stop {:stop-color "#1F2937" :offset "100%"}]]]
35 | [:g {:fill "none" :fill-rule "evenodd"}
36 | [:g {:transform "translate(1 1)"}
37 | [:path#Oval-2 {:d "M36 18c0-9.94-8.06-18-18-18" :stroke "url(#a)" :stroke-width "2"}
38 | [:animateTransform {:attributeName "transform" :type "rotate" :from "0 18 18" :to "360 18 18" :dur "0.9s" :repeatCount "indefinite"}]]
39 | [:circle {:fill "#1F2937" :cx "36" :cy "18" :r "1"}
40 | [:animateTransform {:attributeName "transform" :type "rotate" :from "0 18 18" :to "360 18 18" :dur "0.9s" :repeatCount "indefinite"}]]]]])
41 |
42 | (defn get-screen-size []
43 | (condp #(< %2 %1) js/window.screen.width
44 | 640 "sm"
45 | 768 "md"
46 | 1024 "lg"
47 | 1280 "xl"
48 | "2xl"))
49 |
50 | (def screen-size (r/atom (get-screen-size)))
51 |
52 | (defn card [children]
53 | [:div.shadow-lg.border.md:rounded-xl.bg-white.w-full.mb-2.lg:mr-16.md:mb-2.lg:mb-16 {:class "md:w-1/2 lg:w-5/12"}
54 | children])
55 |
56 | (defn chart-container-button [{:keys [type active-tab]} children]
57 | [:button.p-5.md:p-6.hover:bg-gray-100.focus:outline-none.focus:ring
58 | {:class "w-1/3" :on-click (fn [] (reset! active-tab type))}
59 | [:div.flex.items-center.justify-center
60 | {:class (if (= @active-tab type) "text-blue-600" "text-gray-600")}
61 | [:div.w-4.h-4.mr-1 [icon {:name type}]]
62 | children]])
63 |
64 | (defn chart-container [{:keys [load]}]
65 | (let [copy-id (random-uuid)
66 | data (r/atom nil)]
67 | (-> (load)
68 | (.then (fn [res] (reset! data res)))
69 | (.catch (fn [e] (prn e))))
70 | (clipboard. ".copy-button")
71 | (let [active-tab (r/atom :chart)
72 | active-variant (r/atom 0)]
73 | (fn [{:keys [title charts]}]
74 | (let [chart-height (if (#{"sm" "md" "lg"} @screen-size) "auto" 399)
75 | height (if (#{"sm" "md" "lg"} @screen-size) "auto" (- chart-height 42))]
76 | [card
77 | [:<>
78 | [:div.p-6.md:pt-14.md:px-14.border-b
79 | {:style {:height "calc(100% - 72px)"}}
80 | [:h2.text-3xl.font-semibold.tracking-wide.mb-3
81 | title]
82 | (when (> (count charts) 1)
83 | [:div.pb-3
84 | [:h3.mb-2.text-sm.font-bold "Variants"]
85 | [:ul.flex.flex-wrap
86 | (doall
87 | (map-indexed
88 | (fn [idx {:keys [title]}]
89 | [:li.mr-2.mb-2 {:key title :class (if (= idx @active-variant) "text-blue-300" "text-white")}
90 | [:button.px-3.py-1.rounded-full.bg-gray-700.focus:outline-none.focus:ring
91 | {:on-click #(reset! active-variant idx)}
92 | title]])
93 | charts))]])
94 | (let [{:keys [d3-apis chart code-formatted]} (nth charts @active-variant)]
95 | [:div
96 | [:div
97 | {:class
98 | (r/class-names (when-not (= @active-tab :chart) "hidden")
99 | (when-not @data "flex justify-center items-center"))
100 | :style {:height chart-height}}
101 | (if @data
102 | [chart @data]
103 | [spinner])]
104 | [:div
105 | {:class (r/class-names (when-not (= @active-tab :code) "hidden"))}
106 | [:pre.overflow-auto.mb-4
107 | {:style {:height height} :id (str "code" copy-id)}
108 | [:div {:dangerouslySetInnerHTML {:__html code-formatted}}]]
109 | [:div.flex.justify-center
110 | [:button.copy-button.font-bold.border.px-3.focus:outline-none.focus:ring
111 | {:data-clipboard-target (str "#code" copy-id)}
112 | [:div.flex.items-center.justify-center
113 | [:div.w-4.h-4.mr-1 [icon {:name :copy :class "text-gray-600"}]]
114 | "copy"]]]]
115 | [:div
116 | {:class (r/class-names (when-not (= @active-tab :data) "hidden"))}
117 | [:pre.overflow-auto.mb-4
118 | {:style {:height height} :id (str "data" copy-id)}
119 | (if (coll? @data)
120 | (with-out-str (pprint (vec @data)))
121 | (.stringify js/JSON @data nil 2))]
122 | [:div.flex.justify-center
123 | [:button.copy-button.font-bold.border.px-3.focus:outline-none.focus:ring
124 | {:data-clipboard-target (str "#data" copy-id)}
125 | [:div.flex.items-center.justify-center
126 | [:div.w-4.h-4.mr-1
127 | [icon {:name :copy :class "text-gray-600"}]]
128 | "copy"]]]]
129 | [:div.pt-3
130 | [:h3.mb-2.text-sm.font-bold.pl-3 "d3 APIs"]
131 | [:ul.flex.flex-wrap
132 | (map (fn [{:keys [fn doc-link]}]
133 | [:li.text-white.mr-2.mb-2.rounded-full
134 | {:key fn :class (if doc-link "bg-gray-700" "bg-red-400")}
135 | [:a.focus:outline-none.focus:ring.rounded-full.px-3.py-1.block
136 | {:href doc-link :target "_blank" :rel "noopener"} fn]])
137 | d3-apis)]]])]
138 | [:div.flex.divide-x
139 | [chart-container-button {:type :chart :active-tab active-tab} "Chart"]
140 | [chart-container-button {:type :code :active-tab active-tab} "Code"]
141 | [chart-container-button {:type :data :active-tab active-tab} "Data"]]]])))))
142 |
143 | (defn app []
144 | (r/with-let [_ (js/window.addEventListener "resize" (fn [] (reset! screen-size (get-screen-size))))]
145 | [:div.text-gray-900.flex.flex-col.h-screen
146 | [:header.border-b.bg-gradient-to-b.from-gray-600.to-gray-900
147 | [:div.px-6.py-4.max-w-7xl.mx-auto
148 | [:h1.text-xl.font-bold.text-white
149 | [:a {:href "https://rollacaster.github.io/hiccup-d3/"} "hiccup-d3"]]
150 | [:div.text-white.py-12.flex
151 | [:div.text-4xl {:class "lg:w-1/2"}
152 | [:div.max-w-md
153 | "Hiccup D3-Charts in ClojureScript"]]
154 | [:div.text-lg.hidden.md:block {:class "w-1/2"}
155 | [:div.max-w-md
156 | "Use these starting points to create a new chart with "
157 | [:a.underline {:href "https://github.com/weavejester/hiccup"} "hiccup"]
158 | ". No functionality was wrapped, access the full "
159 | [:a.underline
160 | {:href "https://github.com/d3/d3/blob/master/API.md"} "D3 API"] ". The
161 | example code assumes D3 is already required."]]]]]
162 | [:div.flex-1
163 | [:div.max-w-7xl.mx-auto.py-2.md:p-6.flex.flex-wrap
164 | [chart-container bar]
165 | [chart-container pie]
166 | [chart-container pack]
167 | [chart-container tree]
168 | [chart-container world-map]
169 | [chart-container sankey]
170 | [chart-container sunburst]
171 | [chart-container graph]
172 | [chart-container line]
173 | [chart-container treemap]
174 | [chart-container chord]
175 | [chart-container contour]
176 | [chart-container voronoi]
177 | [chart-container streamgraph]]]
178 | [:footer.bg-gray-800.flex.justify-center.py-2
179 | [:a.text-white.underline {:href "https://github.com/rollacaster/hiccup-d3"} "Code"]]]
180 | (finally
181 | (js/document.removeEventListener "resize" get-screen-size))))
182 |
183 | (dom/render [app] (js/document.getElementById "root"))
184 |
185 | (defn init [])
186 |
187 |
--------------------------------------------------------------------------------
/public/data/flare-2.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "flare",
3 | "children": [
4 | {
5 | "name": "analytics",
6 | "children": [
7 | {
8 | "name": "cluster",
9 | "children": [
10 | {"name": "AgglomerativeCluster", "value": 3938},
11 | {"name": "CommunityStructure", "value": 3812},
12 | {"name": "HierarchicalCluster", "value": 6714},
13 | {"name": "MergeEdge", "value": 743}
14 | ]
15 | },
16 | {
17 | "name": "graph",
18 | "children": [
19 | {"name": "BetweennessCentrality", "value": 3534},
20 | {"name": "LinkDistance", "value": 5731},
21 | {"name": "MaxFlowMinCut", "value": 7840},
22 | {"name": "ShortestPaths", "value": 5914},
23 | {"name": "SpanningTree", "value": 3416}
24 | ]
25 | },
26 | {
27 | "name": "optimization",
28 | "children": [
29 | {"name": "AspectRatioBanker", "value": 7074}
30 | ]
31 | }
32 | ]
33 | },
34 | {
35 | "name": "animate",
36 | "children": [
37 | {"name": "Easing", "value": 17010},
38 | {"name": "FunctionSequence", "value": 5842},
39 | {
40 | "name": "interpolate",
41 | "children": [
42 | {"name": "ArrayInterpolator", "value": 1983},
43 | {"name": "ColorInterpolator", "value": 2047},
44 | {"name": "DateInterpolator", "value": 1375},
45 | {"name": "Interpolator", "value": 8746},
46 | {"name": "MatrixInterpolator", "value": 2202},
47 | {"name": "NumberInterpolator", "value": 1382},
48 | {"name": "ObjectInterpolator", "value": 1629},
49 | {"name": "PointInterpolator", "value": 1675},
50 | {"name": "RectangleInterpolator", "value": 2042}
51 | ]
52 | },
53 | {"name": "ISchedulable", "value": 1041},
54 | {"name": "Parallel", "value": 5176},
55 | {"name": "Pause", "value": 449},
56 | {"name": "Scheduler", "value": 5593},
57 | {"name": "Sequence", "value": 5534},
58 | {"name": "Transition", "value": 9201},
59 | {"name": "Transitioner", "value": 19975},
60 | {"name": "TransitionEvent", "value": 1116},
61 | {"name": "Tween", "value": 6006}
62 | ]
63 | },
64 | {
65 | "name": "data",
66 | "children": [
67 | {
68 | "name": "converters",
69 | "children": [
70 | {"name": "Converters", "value": 721},
71 | {"name": "DelimitedTextConverter", "value": 4294},
72 | {"name": "GraphMLConverter", "value": 9800},
73 | {"name": "IDataConverter", "value": 1314},
74 | {"name": "JSONConverter", "value": 2220}
75 | ]
76 | },
77 | {"name": "DataField", "value": 1759},
78 | {"name": "DataSchema", "value": 2165},
79 | {"name": "DataSet", "value": 586},
80 | {"name": "DataSource", "value": 3331},
81 | {"name": "DataTable", "value": 772},
82 | {"name": "DataUtil", "value": 3322}
83 | ]
84 | },
85 | {
86 | "name": "display",
87 | "children": [
88 | {"name": "DirtySprite", "value": 8833},
89 | {"name": "LineSprite", "value": 1732},
90 | {"name": "RectSprite", "value": 3623},
91 | {"name": "TextSprite", "value": 10066}
92 | ]
93 | },
94 | {
95 | "name": "flex",
96 | "children": [
97 | {"name": "FlareVis", "value": 4116}
98 | ]
99 | },
100 | {
101 | "name": "physics",
102 | "children": [
103 | {"name": "DragForce", "value": 1082},
104 | {"name": "GravityForce", "value": 1336},
105 | {"name": "IForce", "value": 319},
106 | {"name": "NBodyForce", "value": 10498},
107 | {"name": "Particle", "value": 2822},
108 | {"name": "Simulation", "value": 9983},
109 | {"name": "Spring", "value": 2213},
110 | {"name": "SpringForce", "value": 1681}
111 | ]
112 | },
113 | {
114 | "name": "query",
115 | "children": [
116 | {"name": "AggregateExpression", "value": 1616},
117 | {"name": "And", "value": 1027},
118 | {"name": "Arithmetic", "value": 3891},
119 | {"name": "Average", "value": 891},
120 | {"name": "BinaryExpression", "value": 2893},
121 | {"name": "Comparison", "value": 5103},
122 | {"name": "CompositeExpression", "value": 3677},
123 | {"name": "Count", "value": 781},
124 | {"name": "DateUtil", "value": 4141},
125 | {"name": "Distinct", "value": 933},
126 | {"name": "Expression", "value": 5130},
127 | {"name": "ExpressionIterator", "value": 3617},
128 | {"name": "Fn", "value": 3240},
129 | {"name": "If", "value": 2732},
130 | {"name": "IsA", "value": 2039},
131 | {"name": "Literal", "value": 1214},
132 | {"name": "Match", "value": 3748},
133 | {"name": "Maximum", "value": 843},
134 | {
135 | "name": "methods",
136 | "children": [
137 | {"name": "add", "value": 593},
138 | {"name": "and", "value": 330},
139 | {"name": "average", "value": 287},
140 | {"name": "count", "value": 277},
141 | {"name": "distinct", "value": 292},
142 | {"name": "div", "value": 595},
143 | {"name": "eq", "value": 594},
144 | {"name": "fn", "value": 460},
145 | {"name": "gt", "value": 603},
146 | {"name": "gte", "value": 625},
147 | {"name": "iff", "value": 748},
148 | {"name": "isa", "value": 461},
149 | {"name": "lt", "value": 597},
150 | {"name": "lte", "value": 619},
151 | {"name": "max", "value": 283},
152 | {"name": "min", "value": 283},
153 | {"name": "mod", "value": 591},
154 | {"name": "mul", "value": 603},
155 | {"name": "neq", "value": 599},
156 | {"name": "not", "value": 386},
157 | {"name": "or", "value": 323},
158 | {"name": "orderby", "value": 307},
159 | {"name": "range", "value": 772},
160 | {"name": "select", "value": 296},
161 | {"name": "stddev", "value": 363},
162 | {"name": "sub", "value": 600},
163 | {"name": "sum", "value": 280},
164 | {"name": "update", "value": 307},
165 | {"name": "variance", "value": 335},
166 | {"name": "where", "value": 299},
167 | {"name": "xor", "value": 354},
168 | {"name": "_", "value": 264}
169 | ]
170 | },
171 | {"name": "Minimum", "value": 843},
172 | {"name": "Not", "value": 1554},
173 | {"name": "Or", "value": 970},
174 | {"name": "Query", "value": 13896},
175 | {"name": "Range", "value": 1594},
176 | {"name": "StringUtil", "value": 4130},
177 | {"name": "Sum", "value": 791},
178 | {"name": "Variable", "value": 1124},
179 | {"name": "Variance", "value": 1876},
180 | {"name": "Xor", "value": 1101}
181 | ]
182 | },
183 | {
184 | "name": "scale",
185 | "children": [
186 | {"name": "IScaleMap", "value": 2105},
187 | {"name": "LinearScale", "value": 1316},
188 | {"name": "LogScale", "value": 3151},
189 | {"name": "OrdinalScale", "value": 3770},
190 | {"name": "QuantileScale", "value": 2435},
191 | {"name": "QuantitativeScale", "value": 4839},
192 | {"name": "RootScale", "value": 1756},
193 | {"name": "Scale", "value": 4268},
194 | {"name": "ScaleType", "value": 1821},
195 | {"name": "TimeScale", "value": 5833}
196 | ]
197 | },
198 | {
199 | "name": "util",
200 | "children": [
201 | {"name": "Arrays", "value": 8258},
202 | {"name": "Colors", "value": 10001},
203 | {"name": "Dates", "value": 8217},
204 | {"name": "Displays", "value": 12555},
205 | {"name": "Filter", "value": 2324},
206 | {"name": "Geometry", "value": 10993},
207 | {
208 | "name": "heap",
209 | "children": [
210 | {"name": "FibonacciHeap", "value": 9354},
211 | {"name": "HeapNode", "value": 1233}
212 | ]
213 | },
214 | {"name": "IEvaluable", "value": 335},
215 | {"name": "IPredicate", "value": 383},
216 | {"name": "IValueProxy", "value": 874},
217 | {
218 | "name": "math",
219 | "children": [
220 | {"name": "DenseMatrix", "value": 3165},
221 | {"name": "IMatrix", "value": 2815},
222 | {"name": "SparseMatrix", "value": 3366}
223 | ]
224 | },
225 | {"name": "Maths", "value": 17705},
226 | {"name": "Orientation", "value": 1486},
227 | {
228 | "name": "palette",
229 | "children": [
230 | {"name": "ColorPalette", "value": 6367},
231 | {"name": "Palette", "value": 1229},
232 | {"name": "ShapePalette", "value": 2059},
233 | {"name": "SizePalette", "value": 2291}
234 | ]
235 | },
236 | {"name": "Property", "value": 5559},
237 | {"name": "Shapes", "value": 19118},
238 | {"name": "Sort", "value": 6887},
239 | {"name": "Stats", "value": 6557},
240 | {"name": "Strings", "value": 22026}
241 | ]
242 | },
243 | {
244 | "name": "vis",
245 | "children": [
246 | {
247 | "name": "axis",
248 | "children": [
249 | {"name": "Axes", "value": 1302},
250 | {"name": "Axis", "value": 24593},
251 | {"name": "AxisGridLine", "value": 652},
252 | {"name": "AxisLabel", "value": 636},
253 | {"name": "CartesianAxes", "value": 6703}
254 | ]
255 | },
256 | {
257 | "name": "controls",
258 | "children": [
259 | {"name": "AnchorControl", "value": 2138},
260 | {"name": "ClickControl", "value": 3824},
261 | {"name": "Control", "value": 1353},
262 | {"name": "ControlList", "value": 4665},
263 | {"name": "DragControl", "value": 2649},
264 | {"name": "ExpandControl", "value": 2832},
265 | {"name": "HoverControl", "value": 4896},
266 | {"name": "IControl", "value": 763},
267 | {"name": "PanZoomControl", "value": 5222},
268 | {"name": "SelectionControl", "value": 7862},
269 | {"name": "TooltipControl", "value": 8435}
270 | ]
271 | },
272 | {
273 | "name": "data2",
274 | "children": [
275 | {"name": "Data", "value": 20544},
276 | {"name": "DataList", "value": 19788},
277 | {"name": "DataSprite", "value": 10349},
278 | {"name": "EdgeSprite", "value": 3301},
279 | {"name": "NodeSprite", "value": 19382},
280 | {
281 | "name": "render",
282 | "children": [
283 | {"name": "ArrowType", "value": 698},
284 | {"name": "EdgeRenderer", "value": 5569},
285 | {"name": "IRenderer", "value": 353},
286 | {"name": "ShapeRenderer", "value": 2247}
287 | ]
288 | },
289 | {"name": "ScaleBinding", "value": 11275},
290 | {"name": "Tree", "value": 7147},
291 | {"name": "TreeBuilder", "value": 9930}
292 | ]
293 | },
294 | {
295 | "name": "events",
296 | "children": [
297 | {"name": "DataEvent", "value": 2313},
298 | {"name": "SelectionEvent", "value": 1880},
299 | {"name": "TooltipEvent", "value": 1701},
300 | {"name": "VisualizationEvent", "value": 1117}
301 | ]
302 | },
303 | {
304 | "name": "legend",
305 | "children": [
306 | {"name": "Legend", "value": 20859},
307 | {"name": "LegendItem", "value": 4614},
308 | {"name": "LegendRange", "value": 10530}
309 | ]
310 | },
311 | {
312 | "name": "operator",
313 | "children": [
314 | {
315 | "name": "distortion",
316 | "children": [
317 | {"name": "BifocalDistortion", "value": 4461},
318 | {"name": "Distortion", "value": 6314},
319 | {"name": "FisheyeDistortion", "value": 3444}
320 | ]
321 | },
322 | {
323 | "name": "encoder",
324 | "children": [
325 | {"name": "ColorEncoder", "value": 3179},
326 | {"name": "Encoder", "value": 4060},
327 | {"name": "PropertyEncoder", "value": 4138},
328 | {"name": "ShapeEncoder", "value": 1690},
329 | {"name": "SizeEncoder", "value": 1830}
330 | ]
331 | },
332 | {
333 | "name": "filter",
334 | "children": [
335 | {"name": "FisheyeTreeFilter", "value": 5219},
336 | {"name": "GraphDistanceFilter", "value": 3165},
337 | {"name": "VisibilityFilter", "value": 3509}
338 | ]
339 | },
340 | {"name": "IOperator", "value": 1286},
341 | {
342 | "name": "label",
343 | "children": [
344 | {"name": "Labeler", "value": 9956},
345 | {"name": "RadialLabeler", "value": 3899},
346 | {"name": "StackedAreaLabeler", "value": 3202}
347 | ]
348 | },
349 | {
350 | "name": "layout",
351 | "children": [
352 | {"name": "AxisLayout", "value": 6725},
353 | {"name": "BundledEdgeRouter", "value": 3727},
354 | {"name": "CircleLayout", "value": 9317},
355 | {"name": "CirclePackingLayout", "value": 12003},
356 | {"name": "DendrogramLayout", "value": 4853},
357 | {"name": "ForceDirectedLayout", "value": 8411},
358 | {"name": "IcicleTreeLayout", "value": 4864},
359 | {"name": "IndentedTreeLayout", "value": 3174},
360 | {"name": "Layout", "value": 7881},
361 | {"name": "NodeLinkTreeLayout", "value": 12870},
362 | {"name": "PieLayout", "value": 2728},
363 | {"name": "RadialTreeLayout", "value": 12348},
364 | {"name": "RandomLayout", "value": 870},
365 | {"name": "StackedAreaLayout", "value": 9121},
366 | {"name": "TreeMapLayout", "value": 9191}
367 | ]
368 | },
369 | {"name": "Operator", "value": 2490},
370 | {"name": "OperatorList", "value": 5248},
371 | {"name": "OperatorSequence", "value": 4190},
372 | {"name": "OperatorSwitch", "value": 2581},
373 | {"name": "SortOperator", "value": 2023}
374 | ]
375 | },
376 | {"name": "Visualization", "value": 16540}
377 | ]
378 | }
379 | ]
380 | }
381 |
--------------------------------------------------------------------------------
/public/data/volcano.json:
--------------------------------------------------------------------------------
1 | {"width":87,"height":61,"values":[103,104,104,105,105,106,106,106,107,107,106,106,105,105,104,104,104,104,105,107,107,106,105,105,107,108,109,110,110,110,110,110,110,109,109,109,109,109,109,108,107,107,107,107,106,106,105,104,104,104,104,104,104,104,103,103,103,103,102,102,101,101,100,100,100,100,100,99,98,97,97,96,96,96,96,96,96,96,95,95,95,94,94,94,94,94,94,104,104,105,105,106,106,107,107,107,107,107,107,107,106,106,106,106,106,106,108,108,108,106,106,108,109,110,110,112,112,113,112,111,110,110,110,110,109,109,109,108,107,107,107,107,106,106,105,104,104,104,104,104,104,104,103,103,103,103,102,102,101,101,100,100,100,100,99,99,98,97,97,96,96,96,96,96,96,96,95,95,95,94,94,94,94,94,104,105,105,106,106,107,107,108,108,108,108,108,108,108,108,108,108,108,108,108,110,110,110,110,110,110,110,111,113,115,116,115,113,112,110,110,110,110,110,110,109,108,108,108,108,107,106,105,105,105,105,105,105,104,104,104,104,103,103,103,102,102,102,101,100,100,100,99,99,98,97,97,96,96,96,96,96,96,96,96,95,95,94,94,94,94,94,105,105,106,106,107,107,108,108,109,109,109,109,109,110,110,110,110,110,110,110,111,112,115,115,115,115,115,116,116,117,119,118,117,116,114,113,112,110,110,110,110,110,110,109,109,108,107,106,106,106,106,106,105,105,105,104,104,104,103,103,103,102,102,102,101,100,100,99,99,98,97,97,96,96,96,96,96,96,96,96,95,95,94,94,94,94,94,105,106,106,107,107,108,108,109,109,110,110,110,110,111,110,110,110,110,111,114,115,116,121,121,121,121,121,122,123,124,124,123,121,119,118,117,115,114,112,111,110,110,110,110,110,110,109,109,108,109,107,107,106,106,105,105,104,104,104,104,103,103,102,102,102,101,100,100,99,99,98,97,96,96,96,96,96,96,96,96,95,95,94,94,94,94,94,106,106,107,107,107,108,109,109,110,110,111,111,112,113,112,111,111,112,115,118,118,119,126,128,128,127,128,128,129,130,129,128,127,125,122,120,118,117,115,114,112,110,110,110,110,110,111,110,110,110,109,109,108,107,106,105,105,105,104,104,104,103,103,102,102,102,101,100,99,99,98,97,96,96,96,96,96,96,96,96,95,95,94,94,94,94,94,106,107,107,108,108,108,109,110,110,111,112,113,114,115,114,115,116,116,119,123,125,130,133,134,134,134,134,135,135,136,135,134,132,130,128,124,121,119,118,116,114,112,111,111,111,112,112,111,110,110,110,109,108,108,107,108,107,106,105,104,104,104,103,103,103,102,101,100,99,99,98,97,96,96,96,96,96,96,96,96,95,95,95,94,94,94,94,107,107,108,108,109,109,110,110,112,113,114,115,116,117,117,120,120,121,123,129,134,136,138,139,139,139,140,142,142,141,141,140,137,134,131,127,124,122,120,118,117,115,113,114,113,114,114,113,112,111,110,110,109,108,107,106,105,105,105,104,104,104,103,103,103,101,100,100,99,99,98,97,96,96,96,96,96,96,96,96,96,95,95,94,94,94,94,107,108,108,109,109,110,111,112,114,115,116,117,118,119,121,125,125,127,131,136,140,141,142,144,144,145,148,149,148,147,146,144,140,138,136,130,127,125,123,121,119,118,117,117,116,116,116,115,114,113,113,111,110,109,108,107,106,105,105,103,103,102,102,102,103,101,100,100,100,99,98,98,97,96,96,96,96,96,96,96,96,95,95,95,94,94,94,107,108,109,109,110,110,110,113,115,117,118,119,120,123,126,129,131,134,139,142,144,145,147,148,150,152,154,154,153,154,151,149,146,143,140,136,130,128,126,124,122,121,120,119,118,117,117,117,116,116,115,113,112,110,109,108,107,106,106,105,104,103,102,101,101,100,100,100,100,99,99,98,97,96,96,96,96,96,96,96,96,95,95,95,94,94,94,107,108,109,109,110,110,110,112,115,117,119,122,125,127,130,133,137,141,143,145,148,149,152,155,157,159,160,160,161,162,159,156,153,149,146,142,139,134,130,128,126,125,122,120,120,120,119,119,119,118,117,115,113,111,110,110,109,108,107,106,106,105,104,104,103,102,100,100,100,99,99,98,97,96,96,96,96,96,96,96,96,95,95,95,95,94,94,108,108,109,109,110,110,110,112,115,118,121,125,128,131,134,138,141,145,147,149,152,157,160,161,163,166,169,170,170,171,168,162,158,155,152,148,144,140,136,132,129,127,124,122,121,120,120,120,120,120,119,117,115,113,110,110,110,110,109,108,108,107,107,106,105,104,102,100,100,100,99,98,97,96,96,96,96,96,96,96,96,96,95,95,95,94,94,108,109,109,110,110,111,112,114,117,120,124,128,131,135,138,142,145,149,152,155,158,163,166,167,170,173,175,175,175,173,171,169,164,160,156,153,149,144,140,136,131,129,126,124,123,123,122,121,120,120,120,119,117,115,111,110,110,110,110,110,109,109,110,109,108,106,103,101,100,100,100,98,97,96,96,96,96,96,96,96,96,96,95,95,95,95,94,108,109,110,110,110,113,114,116,119,122,126,131,134,138,141,145,149,152,156,160,164,169,171,174,177,175,178,179,177,175,174,172,168,163,160,157,151,147,143,138,133,130,128,125,125,124,123,122,121,121,120,120,118,116,115,111,110,110,110,110,113,114,113,112,110,107,105,102,100,100,100,98,97,96,96,96,96,96,96,96,96,96,96,95,95,95,94,108,109,110,110,112,115,116,118,122,125,129,133,137,140,144,149,152,157,161,165,169,173,176,179,179,180,180,180,178,178,176,175,171,165,163,160,153,148,143,139,135,132,129,128,127,125,124,124,123,123,122,122,120,118,117,118,115,117,118,118,119,117,116,115,112,109,107,105,100,100,100,100,97,96,96,96,96,96,96,96,96,96,96,95,95,95,95,108,109,110,111,114,116,118,122,127,130,133,136,140,144,148,153,157,161,165,169,173,177,180,180,180,180,181,180,180,180,179,178,173,168,165,161,156,149,143,139,136,133,130,129,128,126,126,125,125,125,125,124,122,121,120,120,120,120,121,122,123,122,120,117,114,111,108,106,105,100,100,100,100,96,96,96,96,96,96,96,96,96,96,96,95,95,95,107,108,110,113,115,118,121,126,131,134,137,140,143,148,152,157,162,165,169,173,177,181,181,181,180,181,181,181,180,180,180,178,176,170,167,163,158,152,145,140,137,134,132,130,129,127,127,126,127,128,128,126,125,125,125,123,126,128,129,130,130,125,124,119,116,114,112,110,107,106,105,100,100,100,96,96,96,96,96,96,96,96,96,96,96,95,95,107,109,111,116,119,122,125,130,135,137,140,144,148,152,156,161,165,168,172,177,181,184,181,181,181,180,180,180,180,180,180,178,178,173,168,163,158,152,146,141,138,136,134,132,130,129,128,128,130,130,130,129,128,129,129,130,132,133,133,134,134,132,128,122,119,116,114,112,108,106,105,105,100,100,100,97,97,97,97,97,97,97,96,96,96,96,95,108,110,112,117,122,126,129,135,139,141,144,149,153,156,160,165,168,171,177,181,184,185,182,180,180,179,178,178,180,179,179,178,176,173,168,163,157,152,148,143,139,137,135,133,131,130,130,131,132,132,132,131,132,132,133,134,136,137,137,137,136,134,131,124,121,118,116,114,111,109,107,106,105,100,100,100,97,97,97,97,97,97,97,96,96,96,96,108,110,114,120,126,129,134,139,142,144,146,152,158,161,164,168,171,175,181,184,186,186,183,179,178,178,177,175,178,177,177,176,175,173,168,162,156,153,149,145,142,140,138,136,133,132,132,132,134,134,134,134,135,136,137,138,140,140,140,140,139,137,133,127,123,120,118,115,112,108,108,106,106,105,100,100,100,98,98,98,98,98,98,97,96,96,96,108,110,116,122,128,133,137,141,143,146,149,154,161,165,168,172,175,180,184,188,189,187,182,178,176,176,175,173,174,173,175,174,173,171,168,161,157,154,150,148,145,143,141,138,135,135,134,135,135,136,136,137,138,139,140,140,140,140,140,140,140,139,135,130,126,123,120,117,114,111,109,108,107,106,105,100,100,100,99,99,98,98,98,98,97,97,96,110,112,118,124,130,135,139,142,145,148,151,157,163,169,172,176,179,183,187,190,190,186,180,177,175,173,170,169,169,170,171,172,170,170,167,163,160,157,154,152,149,147,144,140,137,137,136,137,138,138,139,140,141,140,140,140,140,140,140,140,140,138,134,131,128,124,121,118,115,112,110,109,108,107,106,105,100,100,100,99,99,99,98,98,98,97,97,110,114,120,126,131,136,140,143,146,149,154,159,166,171,177,180,182,186,190,190,190,185,179,174,171,168,166,163,164,163,166,169,170,170,168,164,162,161,158,155,153,150,147,143,139,139,139,139,140,141,141,142,142,141,140,140,140,140,140,140,140,137,134,131,128,125,122,119,116,114,112,110,109,109,108,107,105,100,100,100,99,99,99,98,98,97,97,110,115,121,127,132,136,140,144,148,151,157,162,169,174,178,181,186,188,190,191,190,184,177,172,168,165,162,159,158,158,159,161,166,167,169,166,164,163,161,159,156,153,149,146,142,142,141,142,143,143,143,143,144,142,141,140,140,140,140,140,140,138,134,131,128,125,123,120,117,116,114,112,110,109,108,107,106,105,102,101,100,99,99,99,98,98,97,110,116,121,127,132,136,140,144,148,154,160,166,171,176,180,184,189,190,191,191,191,183,176,170,166,163,159,156,154,155,155,158,161,165,170,167,166,165,163,161,158,155,152,150,146,145,145,145,146,146,144,145,145,144,142,141,140,140,140,140,138,136,134,131,128,125,123,121,119,117,115,113,112,111,111,110,108,106,105,102,100,100,99,99,99,98,98,110,114,119,126,131,135,140,144,149,158,164,168,172,176,183,184,189,190,191,191,190,183,174,169,165,161,158,154,150,151,152,155,159,164,168,168,168,167,165,163,160,158,155,153,150,148,148,148,148,148,147,146,146,145,143,142,141,140,139,138,136,134,132,131,128,126,124,122,120,118,116,114,113,113,112,111,108,107,106,105,104,102,100,99,99,99,99,110,113,119,125,131,136,141,145,150,158,164,168,172,177,183,187,189,191,192,191,190,183,174,168,164,160,157,153,150,149,150,154,158,162,166,170,170,168,166,164,162,160,158,155,152,151,151,151,151,151,149,148,147,146,145,143,142,140,139,137,135,134,132,131,129,127,125,123,121,119,117,116,114,114,113,112,110,108,107,105,103,100,100,100,100,99,99,110,112,118,124,130,136,142,146,151,157,163,168,174,178,183,187,189,190,191,192,189,182,174,168,164,160,157,153,149,148,149,153,157,161,167,170,170,170,168,166,165,163,159,156,154,153,155,155,155,155,152,150,149,147,145,143,141,140,139,138,136,134,133,131,130,128,126,124,122,120,119,117,116,115,114,113,111,110,107,106,105,105,102,101,100,100,100,110,111,116,122,129,137,142,146,151,158,164,168,172,179,183,186,189,190,192,193,188,182,174,168,164,161,157,154,151,149,151,154,158,161,167,170,170,170,170,169,168,166,160,157,156,156,157,158,159,159,156,153,150,148,146,144,141,140,140,138,136,135,134,133,131,129,127,125,123,122,120,118,117,116,115,114,112,111,110,108,107,106,105,104,102,100,100,108,110,115,121,131,137,142,147,152,159,163,167,170,177,182,184,187,189,192,194,189,183,174,169,165,161,158,156,154,153,154,157,160,164,167,171,172,174,174,173,171,168,161,159,158,158,159,161,161,160,158,155,151,149,147,144,142,141,140,138,137,136,135,134,132,130,128,126,125,123,121,119,118,117,116,115,113,112,112,111,110,109,108,107,105,101,100,108,110,114,120,128,134,140,146,152,158,162,166,169,175,180,183,186,189,193,195,190,184,176,171,167,163,160,158,157,156,157,159,163,166,170,174,176,178,178,176,172,167,164,161,161,160,161,163,163,163,160,157,153,150,148,146,144,142,141,140,139,138,136,135,134,133,129,127,126,124,122,121,119,118,117,116,114,113,112,111,110,110,109,109,107,104,100,107,110,115,119,123,129,135,141,146,156,161,165,168,173,179,182,186,189,193,194,191,184,179,175,170,166,162,161,160,160,161,162,165,169,172,176,178,179,179,176,172,168,165,163,163,163,163,165,166,164,161,158,155,152,150,147,146,144,143,142,141,139,139,138,137,135,131,128,127,125,124,122,121,119,118,116,115,113,112,111,111,110,110,109,109,105,100,107,110,114,117,121,126,130,135,142,151,159,163,167,171,177,182,185,189,192,193,191,187,183,179,174,169,167,166,164,164,165,166,169,171,174,178,179,180,180,178,173,169,166,165,165,166,165,168,169,166,163,159,157,154,152,149,148,147,146,145,143,142,141,140,139,138,133,130,128,127,125,124,122,120,118,117,115,112,111,111,111,111,110,109,108,106,100,107,109,113,118,122,126,129,134,139,150,156,160,165,170,175,181,184,188,191,192,192,189,185,181,177,173,171,169,168,167,169,170,172,174,176,178,179,180,180,179,175,170,168,166,166,168,168,170,170,168,164,160,158,155,152,151,150,149,149,148,147,145,144,143,142,141,136,133,130,129,127,125,123,120,119,118,115,112,111,111,111,110,109,109,109,105,100,105,107,111,117,121,124,127,131,137,148,154,159,164,168,174,181,184,187,190,191,191,190,187,184,180,178,175,174,172,171,173,173,173,176,178,179,180,180,180,179,175,170,168,166,168,169,170,170,170,170,166,161,158,156,154,153,151,150,150,150,150,148,147,146,145,143,139,135,133,131,129,126,124,121,120,118,114,111,111,111,110,110,109,107,106,104,100,104,106,110,114,118,121,125,129,135,142,150,157,162,167,173,180,183,186,188,190,190,190,189,184,183,181,180,179,179,176,177,176,176,177,178,179,180,180,179,177,173,169,167,166,167,169,170,170,170,170,167,161,159,157,155,153,151,150,150,150,150,150,150,149,147,145,141,138,135,133,130,127,125,123,121,118,113,111,110,110,109,109,107,106,105,103,100,104,106,108,111,115,119,123,128,134,141,148,154,161,166,172,179,182,184,186,189,190,190,190,187,185,183,180,180,180,179,179,177,176,177,178,178,178,177,176,174,171,168,166,164,166,168,170,170,170,170,168,162,159,157,155,153,151,150,150,150,150,150,150,150,150,148,144,140,137,134,132,129,127,125,122,117,111,110,107,107,106,105,104,103,102,101,100,103,105,107,110,114,118,122,127,132,140,146,153,159,165,171,176,180,183,185,186,189,190,188,187,184,182,180,180,180,179,178,176,176,176,176,174,174,173,172,170,168,167,165,163,164,165,169,170,170,170,166,162,159,157,155,153,151,150,150,150,150,150,150,150,150,150,146,142,139,136,133,131,128,125,122,117,110,108,106,105,104,103,103,101,101,101,101,102,103,106,108,112,116,121,125,130,138,145,151,157,163,170,174,178,181,181,184,186,186,187,186,184,181,180,180,180,179,178,174,173,173,171,170,170,169,168,167,166,164,163,162,161,164,167,169,170,168,164,160,158,157,155,153,151,150,150,150,150,150,150,150,150,150,147,144,141,138,135,133,128,125,122,116,109,107,104,104,103,102,101,101,101,101,101,101,102,105,107,110,115,120,124,129,136,143,149,155,162,168,170,174,176,178,179,181,182,184,184,183,181,180,180,179,177,174,172,170,168,166,165,164,164,164,164,162,160,159,159,158,160,162,164,166,166,163,159,157,156,155,153,151,150,150,150,150,150,150,150,150,150,149,146,143,140,137,133,129,124,119,112,108,105,103,103,102,101,101,101,101,100,100,101,102,104,106,109,113,118,122,127,133,141,149,155,161,165,168,170,172,175,176,177,179,181,181,181,180,180,179,177,174,171,167,165,163,161,160,160,160,160,160,157,155,155,154,154,155,157,159,161,161,161,159,156,154,154,153,151,150,150,150,150,150,150,150,150,150,149,147,144,141,137,133,129,123,116,110,107,104,102,102,101,101,101,100,100,100,100,102,103,104,106,108,112,116,120,125,129,137,146,154,161,163,165,166,169,172,173,174,175,177,178,178,178,178,177,174,171,168,164,160,158,157,157,156,156,156,155,152,151,150,150,151,151,152,154,156,157,157,156,155,153,152,152,151,150,150,150,150,150,150,150,150,150,150,147,144,141,138,133,127,120,113,109,106,103,101,101,101,100,100,100,100,100,100,103,104,105,106,108,110,114,118,123,127,133,143,150,156,160,160,161,162,167,170,171,172,173,175,175,174,174,173,171,168,164,160,156,155,154,153,153,152,152,150,149,148,148,148,148,148,149,149,150,152,152,152,152,151,150,150,150,150,150,150,150,150,150,150,150,150,149,147,144,141,138,132,125,118,111,108,105,103,102,101,101,101,100,100,100,100,100,104,105,106,107,108,110,113,117,120,125,129,138,145,151,156,156,157,158,160,164,166,168,170,171,172,171,171,169,166,163,160,156,153,151,150,150,149,149,149,148,146,146,146,146,146,146,146,147,148,148,149,149,149,148,148,148,148,149,149,150,150,150,150,150,150,150,148,146,143,141,136,129,123,117,110,108,105,104,103,102,102,101,101,100,100,100,100,103,104,105,106,107,109,111,115,118,122,127,133,140,143,150,152,153,155,157,159,162,164,167,168,168,168,167,166,163,160,157,153,150,148,148,147,147,147,145,145,144,143,143,143,144,144,144,144,145,145,145,145,146,146,146,146,146,147,147,148,149,150,150,150,150,149,147,145,143,141,134,127,123,117,111,108,105,105,104,104,103,103,102,101,100,100,100,102,103,104,105,106,107,109,113,116,120,125,129,133,137,143,147,149,151,152,154,158,161,164,165,164,164,163,163,160,157,154,151,149,147,145,145,144,143,141,140,141,141,141,141,141,142,142,142,142,142,142,142,143,143,143,144,144,145,146,146,146,147,148,148,148,148,145,143,142,140,134,128,123,117,112,108,106,105,105,104,104,103,102,101,100,100,99,102,103,104,105,105,106,108,110,113,118,123,127,129,132,137,141,142,142,145,150,154,157,161,161,160,160,160,159,157,154,151,148,146,145,143,142,142,139,137,136,137,137,138,138,139,139,139,139,139,139,139,139,140,140,141,142,142,143,144,144,144,145,145,145,145,145,144,142,140,139,136,129,124,119,113,109,106,106,105,104,103,102,101,101,100,99,99,102,103,104,104,105,106,107,108,111,116,121,124,126,128,131,134,135,137,139,143,147,152,156,157,157,157,156,155,153,151,148,146,143,142,141,140,138,135,133,132,132,133,133,133,134,135,135,135,135,136,136,137,137,138,138,139,140,141,141,142,142,143,142,142,141,141,140,139,137,134,133,129,125,121,114,110,107,106,106,104,103,102,101,100,99,99,99,102,103,104,104,105,105,106,108,110,113,118,121,124,126,128,130,132,134,136,139,143,147,150,154,154,154,153,151,149,148,146,143,141,139,137,136,132,130,128,128,128,129,129,130,130,131,132,132,132,133,134,134,135,135,136,137,138,139,139,140,140,140,139,139,138,137,137,135,132,130,129,127,124,120,116,112,109,106,105,103,102,101,101,100,99,99,99,101,102,103,104,104,105,106,107,108,110,114,119,121,124,126,128,129,132,134,137,140,143,147,149,151,151,151,149,147,145,143,141,138,136,134,131,128,126,124,125,125,126,126,127,128,128,129,129,130,130,131,131,132,132,133,134,135,135,136,136,137,137,136,136,135,134,133,131,129,128,127,126,123,119,115,111,109,107,105,104,103,102,101,100,100,100,99,101,102,103,103,104,104,105,106,108,110,112,116,119,121,124,125,127,130,132,135,137,140,143,147,149,149,149,147,145,143,141,139,136,133,131,128,125,122,121,122,122,122,123,125,125,126,127,127,127,128,128,128,129,129,130,131,131,132,132,133,133,133,132,132,131,131,130,129,128,126,125,124,121,117,111,109,108,106,105,104,103,102,101,101,100,100,100,100,101,102,103,103,104,105,106,107,108,110,114,117,119,121,123,126,128,130,133,136,139,141,144,146,147,146,145,143,141,138,136,133,130,127,124,121,120,120,120,120,120,121,122,123,124,124,125,125,126,126,125,126,126,126,125,126,127,128,128,129,129,128,128,128,128,128,128,126,125,123,122,119,114,109,108,107,106,105,104,103,103,102,102,101,100,100,100,101,102,103,104,105,106,107,108,109,110,112,115,117,120,122,125,127,130,132,135,137,139,142,144,144,144,142,140,138,136,132,129,126,123,120,120,119,119,118,119,119,120,120,120,121,122,122,123,123,123,123,122,123,122,122,121,122,122,122,123,123,123,124,125,125,126,126,125,124,122,120,116,113,109,107,106,105,104,104,103,102,102,101,101,100,100,100,101,102,103,104,105,106,107,108,109,110,112,114,117,119,122,124,127,129,131,134,136,138,140,142,142,142,140,138,136,133,129,125,122,120,119,118,118,117,116,117,117,118,119,119,120,120,120,121,121,121,122,121,120,120,120,119,119,120,120,120,120,120,120,123,123,124,124,124,123,121,119,114,112,108,106,106,104,104,103,102,102,101,101,100,100,99,101,102,103,104,105,106,107,108,109,110,111,113,114,116,119,121,124,126,128,130,133,135,137,138,140,140,139,137,135,133,131,127,122,120,118,118,117,117,116,115,116,116,117,118,118,118,119,119,120,120,121,121,120,119,119,118,117,117,118,119,118,118,118,119,120,122,123,123,123,122,120,117,113,110,108,106,105,104,103,103,102,101,101,100,100,99,99,101,102,103,104,105,106,107,108,109,110,111,111,113,115,118,121,123,125,127,129,131,133,135,137,138,138,137,134,132,130,127,122,120,118,116,116,116,116,115,113,114,115,116,117,117,118,118,119,119,119,120,120,119,118,117,117,116,116,117,117,117,118,119,119,119,120,121,121,121,121,119,116,113,110,107,105,105,103,103,103,102,101,100,100,99,99,99,101,102,103,104,105,106,107,108,109,110,111,112,114,116,117,120,122,124,126,129,130,132,133,135,136,136,134,132,129,126,122,120,118,116,114,114,114,114,114,113,113,114,115,116,116,117,117,117,118,118,119,119,118,117,116,116,115,115,116,116,116,117,117,118,118,119,120,120,120,120,119,116,113,109,106,104,104,103,102,102,101,101,100,99,99,99,98,101,102,103,104,105,106,107,108,109,110,111,113,115,117,117,118,121,123,126,128,130,130,131,132,133,134,131,129,125,122,120,118,116,114,113,112,112,113,112,112,111,112,113,113,114,115,116,116,117,117,118,118,116,116,115,115,115,114,114,115,116,116,117,117,118,118,119,119,120,120,117,115,112,108,106,104,103,102,102,102,101,100,99,99,99,98,98,101,102,103,104,105,105,106,107,108,109,110,111,113,115,117,118,120,122,125,126,127,128,129,130,131,131,128,125,121,120,118,116,114,113,113,111,111,111,111,110,109,110,111,112,113,113,114,115,115,116,117,117,116,115,114,114,113,113,114,114,115,115,116,116,117,118,118,119,119,118,116,114,112,108,105,103,103,102,101,101,100,100,99,99,98,98,97,100,101,102,103,104,105,106,107,108,109,110,110,111,113,115,118,120,121,122,124,125,125,126,127,128,127,124,121,120,118,116,114,113,112,112,110,109,109,108,108,108,109,110,111,112,112,113,114,114,115,116,116,115,114,113,112,112,113,113,114,114,115,115,116,116,117,117,118,118,117,115,113,111,107,105,103,102,101,101,100,100,100,99,99,98,98,97,100,101,102,103,104,105,105,106,107,108,109,110,110,111,114,116,118,120,120,121,122,122,123,124,123,123,120,118,117,115,114,115,113,111,110,109,108,108,107,107,107,108,109,110,111,111,112,113,113,114,115,115,114,113,112,111,111,112,112,112,113,114,114,115,115,116,116,117,117,116,114,112,109,106,104,102,101,100,100,99,99,99,99,98,98,97,97]}
2 |
--------------------------------------------------------------------------------
/public/data/miserables.json:
--------------------------------------------------------------------------------
1 | {
2 | "nodes": [
3 | { "id": "Myriel", "group": 1 },
4 | { "id": "Napoleon", "group": 1 },
5 | { "id": "Mlle.Baptistine", "group": 1 },
6 | { "id": "Mme.Magloire", "group": 1 },
7 | { "id": "CountessdeLo", "group": 1 },
8 | { "id": "Geborand", "group": 1 },
9 | { "id": "Champtercier", "group": 1 },
10 | { "id": "Cravatte", "group": 1 },
11 | { "id": "Count", "group": 1 },
12 | { "id": "OldMan", "group": 1 },
13 | { "id": "Labarre", "group": 2 },
14 | { "id": "Valjean", "group": 2 },
15 | { "id": "Marguerite", "group": 3 },
16 | { "id": "Mme.deR", "group": 2 },
17 | { "id": "Isabeau", "group": 2 },
18 | { "id": "Gervais", "group": 2 },
19 | { "id": "Tholomyes", "group": 3 },
20 | { "id": "Listolier", "group": 3 },
21 | { "id": "Fameuil", "group": 3 },
22 | { "id": "Blacheville", "group": 3 },
23 | { "id": "Favourite", "group": 3 },
24 | { "id": "Dahlia", "group": 3 },
25 | { "id": "Zephine", "group": 3 },
26 | { "id": "Fantine", "group": 3 },
27 | { "id": "Mme.Thenardier", "group": 4 },
28 | { "id": "Thenardier", "group": 4 },
29 | { "id": "Cosette", "group": 5 },
30 | { "id": "Javert", "group": 4 },
31 | { "id": "Fauchelevent", "group": 0 },
32 | { "id": "Bamatabois", "group": 2 },
33 | { "id": "Perpetue", "group": 3 },
34 | { "id": "Simplice", "group": 2 },
35 | { "id": "Scaufflaire", "group": 2 },
36 | { "id": "Woman1", "group": 2 },
37 | { "id": "Judge", "group": 2 },
38 | { "id": "Champmathieu", "group": 2 },
39 | { "id": "Brevet", "group": 2 },
40 | { "id": "Chenildieu", "group": 2 },
41 | { "id": "Cochepaille", "group": 2 },
42 | { "id": "Pontmercy", "group": 4 },
43 | { "id": "Boulatruelle", "group": 6 },
44 | { "id": "Eponine", "group": 4 },
45 | { "id": "Anzelma", "group": 4 },
46 | { "id": "Woman2", "group": 5 },
47 | { "id": "MotherInnocent", "group": 0 },
48 | { "id": "Gribier", "group": 0 },
49 | { "id": "Jondrette", "group": 7 },
50 | { "id": "Mme.Burgon", "group": 7 },
51 | { "id": "Gavroche", "group": 8 },
52 | { "id": "Gillenormand", "group": 5 },
53 | { "id": "Magnon", "group": 5 },
54 | { "id": "Mlle.Gillenormand", "group": 5 },
55 | { "id": "Mme.Pontmercy", "group": 5 },
56 | { "id": "Mlle.Vaubois", "group": 5 },
57 | { "id": "Lt.Gillenormand", "group": 5 },
58 | { "id": "Marius", "group": 8 },
59 | { "id": "BaronessT", "group": 5 },
60 | { "id": "Mabeuf", "group": 8 },
61 | { "id": "Enjolras", "group": 8 },
62 | { "id": "Combeferre", "group": 8 },
63 | { "id": "Prouvaire", "group": 8 },
64 | { "id": "Feuilly", "group": 8 },
65 | { "id": "Courfeyrac", "group": 8 },
66 | { "id": "Bahorel", "group": 8 },
67 | { "id": "Bossuet", "group": 8 },
68 | { "id": "Joly", "group": 8 },
69 | { "id": "Grantaire", "group": 8 },
70 | { "id": "MotherPlutarch", "group": 9 },
71 | { "id": "Gueulemer", "group": 4 },
72 | { "id": "Babet", "group": 4 },
73 | { "id": "Claquesous", "group": 4 },
74 | { "id": "Montparnasse", "group": 4 },
75 | { "id": "Toussaint", "group": 5 },
76 | { "id": "Child1", "group": 10 },
77 | { "id": "Child2", "group": 10 },
78 | { "id": "Brujon", "group": 4 },
79 | { "id": "Mme.Hucheloup", "group": 8 }
80 | ],
81 | "links": [
82 | { "source": "Napoleon", "target": "Myriel", "value": 1 },
83 | { "source": "Mlle.Baptistine", "target": "Myriel", "value": 8 },
84 | { "source": "Mme.Magloire", "target": "Myriel", "value": 10 },
85 | { "source": "Mme.Magloire", "target": "Mlle.Baptistine", "value": 6 },
86 | { "source": "CountessdeLo", "target": "Myriel", "value": 1 },
87 | { "source": "Geborand", "target": "Myriel", "value": 1 },
88 | { "source": "Champtercier", "target": "Myriel", "value": 1 },
89 | { "source": "Cravatte", "target": "Myriel", "value": 1 },
90 | { "source": "Count", "target": "Myriel", "value": 2 },
91 | { "source": "OldMan", "target": "Myriel", "value": 1 },
92 | { "source": "Valjean", "target": "Labarre", "value": 1 },
93 | { "source": "Valjean", "target": "Mme.Magloire", "value": 3 },
94 | { "source": "Valjean", "target": "Mlle.Baptistine", "value": 3 },
95 | { "source": "Valjean", "target": "Myriel", "value": 5 },
96 | { "source": "Marguerite", "target": "Valjean", "value": 1 },
97 | { "source": "Mme.deR", "target": "Valjean", "value": 1 },
98 | { "source": "Isabeau", "target": "Valjean", "value": 1 },
99 | { "source": "Gervais", "target": "Valjean", "value": 1 },
100 | { "source": "Listolier", "target": "Tholomyes", "value": 4 },
101 | { "source": "Fameuil", "target": "Tholomyes", "value": 4 },
102 | { "source": "Fameuil", "target": "Listolier", "value": 4 },
103 | { "source": "Blacheville", "target": "Tholomyes", "value": 4 },
104 | { "source": "Blacheville", "target": "Listolier", "value": 4 },
105 | { "source": "Blacheville", "target": "Fameuil", "value": 4 },
106 | { "source": "Favourite", "target": "Tholomyes", "value": 3 },
107 | { "source": "Favourite", "target": "Listolier", "value": 3 },
108 | { "source": "Favourite", "target": "Fameuil", "value": 3 },
109 | { "source": "Favourite", "target": "Blacheville", "value": 4 },
110 | { "source": "Dahlia", "target": "Tholomyes", "value": 3 },
111 | { "source": "Dahlia", "target": "Listolier", "value": 3 },
112 | { "source": "Dahlia", "target": "Fameuil", "value": 3 },
113 | { "source": "Dahlia", "target": "Blacheville", "value": 3 },
114 | { "source": "Dahlia", "target": "Favourite", "value": 5 },
115 | { "source": "Zephine", "target": "Tholomyes", "value": 3 },
116 | { "source": "Zephine", "target": "Listolier", "value": 3 },
117 | { "source": "Zephine", "target": "Fameuil", "value": 3 },
118 | { "source": "Zephine", "target": "Blacheville", "value": 3 },
119 | { "source": "Zephine", "target": "Favourite", "value": 4 },
120 | { "source": "Zephine", "target": "Dahlia", "value": 4 },
121 | { "source": "Fantine", "target": "Tholomyes", "value": 3 },
122 | { "source": "Fantine", "target": "Listolier", "value": 3 },
123 | { "source": "Fantine", "target": "Fameuil", "value": 3 },
124 | { "source": "Fantine", "target": "Blacheville", "value": 3 },
125 | { "source": "Fantine", "target": "Favourite", "value": 4 },
126 | { "source": "Fantine", "target": "Dahlia", "value": 4 },
127 | { "source": "Fantine", "target": "Zephine", "value": 4 },
128 | { "source": "Fantine", "target": "Marguerite", "value": 2 },
129 | { "source": "Fantine", "target": "Valjean", "value": 9 },
130 | { "source": "Mme.Thenardier", "target": "Fantine", "value": 2 },
131 | { "source": "Mme.Thenardier", "target": "Valjean", "value": 7 },
132 | { "source": "Thenardier", "target": "Mme.Thenardier", "value": 13 },
133 | { "source": "Thenardier", "target": "Fantine", "value": 1 },
134 | { "source": "Thenardier", "target": "Valjean", "value": 12 },
135 | { "source": "Cosette", "target": "Mme.Thenardier", "value": 4 },
136 | { "source": "Cosette", "target": "Valjean", "value": 31 },
137 | { "source": "Cosette", "target": "Tholomyes", "value": 1 },
138 | { "source": "Cosette", "target": "Thenardier", "value": 1 },
139 | { "source": "Javert", "target": "Valjean", "value": 17 },
140 | { "source": "Javert", "target": "Fantine", "value": 5 },
141 | { "source": "Javert", "target": "Thenardier", "value": 5 },
142 | { "source": "Javert", "target": "Mme.Thenardier", "value": 1 },
143 | { "source": "Javert", "target": "Cosette", "value": 1 },
144 | { "source": "Fauchelevent", "target": "Valjean", "value": 8 },
145 | { "source": "Fauchelevent", "target": "Javert", "value": 1 },
146 | { "source": "Bamatabois", "target": "Fantine", "value": 1 },
147 | { "source": "Bamatabois", "target": "Javert", "value": 1 },
148 | { "source": "Bamatabois", "target": "Valjean", "value": 2 },
149 | { "source": "Perpetue", "target": "Fantine", "value": 1 },
150 | { "source": "Simplice", "target": "Perpetue", "value": 2 },
151 | { "source": "Simplice", "target": "Valjean", "value": 3 },
152 | { "source": "Simplice", "target": "Fantine", "value": 2 },
153 | { "source": "Simplice", "target": "Javert", "value": 1 },
154 | { "source": "Scaufflaire", "target": "Valjean", "value": 1 },
155 | { "source": "Woman1", "target": "Valjean", "value": 2 },
156 | { "source": "Woman1", "target": "Javert", "value": 1 },
157 | { "source": "Judge", "target": "Valjean", "value": 3 },
158 | { "source": "Judge", "target": "Bamatabois", "value": 2 },
159 | { "source": "Champmathieu", "target": "Valjean", "value": 3 },
160 | { "source": "Champmathieu", "target": "Judge", "value": 3 },
161 | { "source": "Champmathieu", "target": "Bamatabois", "value": 2 },
162 | { "source": "Brevet", "target": "Judge", "value": 2 },
163 | { "source": "Brevet", "target": "Champmathieu", "value": 2 },
164 | { "source": "Brevet", "target": "Valjean", "value": 2 },
165 | { "source": "Brevet", "target": "Bamatabois", "value": 1 },
166 | { "source": "Chenildieu", "target": "Judge", "value": 2 },
167 | { "source": "Chenildieu", "target": "Champmathieu", "value": 2 },
168 | { "source": "Chenildieu", "target": "Brevet", "value": 2 },
169 | { "source": "Chenildieu", "target": "Valjean", "value": 2 },
170 | { "source": "Chenildieu", "target": "Bamatabois", "value": 1 },
171 | { "source": "Cochepaille", "target": "Judge", "value": 2 },
172 | { "source": "Cochepaille", "target": "Champmathieu", "value": 2 },
173 | { "source": "Cochepaille", "target": "Brevet", "value": 2 },
174 | { "source": "Cochepaille", "target": "Chenildieu", "value": 2 },
175 | { "source": "Cochepaille", "target": "Valjean", "value": 2 },
176 | { "source": "Cochepaille", "target": "Bamatabois", "value": 1 },
177 | { "source": "Pontmercy", "target": "Thenardier", "value": 1 },
178 | { "source": "Boulatruelle", "target": "Thenardier", "value": 1 },
179 | { "source": "Eponine", "target": "Mme.Thenardier", "value": 2 },
180 | { "source": "Eponine", "target": "Thenardier", "value": 3 },
181 | { "source": "Anzelma", "target": "Eponine", "value": 2 },
182 | { "source": "Anzelma", "target": "Thenardier", "value": 2 },
183 | { "source": "Anzelma", "target": "Mme.Thenardier", "value": 1 },
184 | { "source": "Woman2", "target": "Valjean", "value": 3 },
185 | { "source": "Woman2", "target": "Cosette", "value": 1 },
186 | { "source": "Woman2", "target": "Javert", "value": 1 },
187 | { "source": "MotherInnocent", "target": "Fauchelevent", "value": 3 },
188 | { "source": "MotherInnocent", "target": "Valjean", "value": 1 },
189 | { "source": "Gribier", "target": "Fauchelevent", "value": 2 },
190 | { "source": "Mme.Burgon", "target": "Jondrette", "value": 1 },
191 | { "source": "Gavroche", "target": "Mme.Burgon", "value": 2 },
192 | { "source": "Gavroche", "target": "Thenardier", "value": 1 },
193 | { "source": "Gavroche", "target": "Javert", "value": 1 },
194 | { "source": "Gavroche", "target": "Valjean", "value": 1 },
195 | { "source": "Gillenormand", "target": "Cosette", "value": 3 },
196 | { "source": "Gillenormand", "target": "Valjean", "value": 2 },
197 | { "source": "Magnon", "target": "Gillenormand", "value": 1 },
198 | { "source": "Magnon", "target": "Mme.Thenardier", "value": 1 },
199 | { "source": "Mlle.Gillenormand", "target": "Gillenormand", "value": 9 },
200 | { "source": "Mlle.Gillenormand", "target": "Cosette", "value": 2 },
201 | { "source": "Mlle.Gillenormand", "target": "Valjean", "value": 2 },
202 | { "source": "Mme.Pontmercy", "target": "Mlle.Gillenormand", "value": 1 },
203 | { "source": "Mme.Pontmercy", "target": "Pontmercy", "value": 1 },
204 | { "source": "Mlle.Vaubois", "target": "Mlle.Gillenormand", "value": 1 },
205 | { "source": "Lt.Gillenormand", "target": "Mlle.Gillenormand", "value": 2 },
206 | { "source": "Lt.Gillenormand", "target": "Gillenormand", "value": 1 },
207 | { "source": "Lt.Gillenormand", "target": "Cosette", "value": 1 },
208 | { "source": "Marius", "target": "Mlle.Gillenormand", "value": 6 },
209 | { "source": "Marius", "target": "Gillenormand", "value": 12 },
210 | { "source": "Marius", "target": "Pontmercy", "value": 1 },
211 | { "source": "Marius", "target": "Lt.Gillenormand", "value": 1 },
212 | { "source": "Marius", "target": "Cosette", "value": 21 },
213 | { "source": "Marius", "target": "Valjean", "value": 19 },
214 | { "source": "Marius", "target": "Tholomyes", "value": 1 },
215 | { "source": "Marius", "target": "Thenardier", "value": 2 },
216 | { "source": "Marius", "target": "Eponine", "value": 5 },
217 | { "source": "Marius", "target": "Gavroche", "value": 4 },
218 | { "source": "BaronessT", "target": "Gillenormand", "value": 1 },
219 | { "source": "BaronessT", "target": "Marius", "value": 1 },
220 | { "source": "Mabeuf", "target": "Marius", "value": 1 },
221 | { "source": "Mabeuf", "target": "Eponine", "value": 1 },
222 | { "source": "Mabeuf", "target": "Gavroche", "value": 1 },
223 | { "source": "Enjolras", "target": "Marius", "value": 7 },
224 | { "source": "Enjolras", "target": "Gavroche", "value": 7 },
225 | { "source": "Enjolras", "target": "Javert", "value": 6 },
226 | { "source": "Enjolras", "target": "Mabeuf", "value": 1 },
227 | { "source": "Enjolras", "target": "Valjean", "value": 4 },
228 | { "source": "Combeferre", "target": "Enjolras", "value": 15 },
229 | { "source": "Combeferre", "target": "Marius", "value": 5 },
230 | { "source": "Combeferre", "target": "Gavroche", "value": 6 },
231 | { "source": "Combeferre", "target": "Mabeuf", "value": 2 },
232 | { "source": "Prouvaire", "target": "Gavroche", "value": 1 },
233 | { "source": "Prouvaire", "target": "Enjolras", "value": 4 },
234 | { "source": "Prouvaire", "target": "Combeferre", "value": 2 },
235 | { "source": "Feuilly", "target": "Gavroche", "value": 2 },
236 | { "source": "Feuilly", "target": "Enjolras", "value": 6 },
237 | { "source": "Feuilly", "target": "Prouvaire", "value": 2 },
238 | { "source": "Feuilly", "target": "Combeferre", "value": 5 },
239 | { "source": "Feuilly", "target": "Mabeuf", "value": 1 },
240 | { "source": "Feuilly", "target": "Marius", "value": 1 },
241 | { "source": "Courfeyrac", "target": "Marius", "value": 9 },
242 | { "source": "Courfeyrac", "target": "Enjolras", "value": 17 },
243 | { "source": "Courfeyrac", "target": "Combeferre", "value": 13 },
244 | { "source": "Courfeyrac", "target": "Gavroche", "value": 7 },
245 | { "source": "Courfeyrac", "target": "Mabeuf", "value": 2 },
246 | { "source": "Courfeyrac", "target": "Eponine", "value": 1 },
247 | { "source": "Courfeyrac", "target": "Feuilly", "value": 6 },
248 | { "source": "Courfeyrac", "target": "Prouvaire", "value": 3 },
249 | { "source": "Bahorel", "target": "Combeferre", "value": 5 },
250 | { "source": "Bahorel", "target": "Gavroche", "value": 5 },
251 | { "source": "Bahorel", "target": "Courfeyrac", "value": 6 },
252 | { "source": "Bahorel", "target": "Mabeuf", "value": 2 },
253 | { "source": "Bahorel", "target": "Enjolras", "value": 4 },
254 | { "source": "Bahorel", "target": "Feuilly", "value": 3 },
255 | { "source": "Bahorel", "target": "Prouvaire", "value": 2 },
256 | { "source": "Bahorel", "target": "Marius", "value": 1 },
257 | { "source": "Bossuet", "target": "Marius", "value": 5 },
258 | { "source": "Bossuet", "target": "Courfeyrac", "value": 12 },
259 | { "source": "Bossuet", "target": "Gavroche", "value": 5 },
260 | { "source": "Bossuet", "target": "Bahorel", "value": 4 },
261 | { "source": "Bossuet", "target": "Enjolras", "value": 10 },
262 | { "source": "Bossuet", "target": "Feuilly", "value": 6 },
263 | { "source": "Bossuet", "target": "Prouvaire", "value": 2 },
264 | { "source": "Bossuet", "target": "Combeferre", "value": 9 },
265 | { "source": "Bossuet", "target": "Mabeuf", "value": 1 },
266 | { "source": "Bossuet", "target": "Valjean", "value": 1 },
267 | { "source": "Joly", "target": "Bahorel", "value": 5 },
268 | { "source": "Joly", "target": "Bossuet", "value": 7 },
269 | { "source": "Joly", "target": "Gavroche", "value": 3 },
270 | { "source": "Joly", "target": "Courfeyrac", "value": 5 },
271 | { "source": "Joly", "target": "Enjolras", "value": 5 },
272 | { "source": "Joly", "target": "Feuilly", "value": 5 },
273 | { "source": "Joly", "target": "Prouvaire", "value": 2 },
274 | { "source": "Joly", "target": "Combeferre", "value": 5 },
275 | { "source": "Joly", "target": "Mabeuf", "value": 1 },
276 | { "source": "Joly", "target": "Marius", "value": 2 },
277 | { "source": "Grantaire", "target": "Bossuet", "value": 3 },
278 | { "source": "Grantaire", "target": "Enjolras", "value": 3 },
279 | { "source": "Grantaire", "target": "Combeferre", "value": 1 },
280 | { "source": "Grantaire", "target": "Courfeyrac", "value": 2 },
281 | { "source": "Grantaire", "target": "Joly", "value": 2 },
282 | { "source": "Grantaire", "target": "Gavroche", "value": 1 },
283 | { "source": "Grantaire", "target": "Bahorel", "value": 1 },
284 | { "source": "Grantaire", "target": "Feuilly", "value": 1 },
285 | { "source": "Grantaire", "target": "Prouvaire", "value": 1 },
286 | { "source": "MotherPlutarch", "target": "Mabeuf", "value": 3 },
287 | { "source": "Gueulemer", "target": "Thenardier", "value": 5 },
288 | { "source": "Gueulemer", "target": "Valjean", "value": 1 },
289 | { "source": "Gueulemer", "target": "Mme.Thenardier", "value": 1 },
290 | { "source": "Gueulemer", "target": "Javert", "value": 1 },
291 | { "source": "Gueulemer", "target": "Gavroche", "value": 1 },
292 | { "source": "Gueulemer", "target": "Eponine", "value": 1 },
293 | { "source": "Babet", "target": "Thenardier", "value": 6 },
294 | { "source": "Babet", "target": "Gueulemer", "value": 6 },
295 | { "source": "Babet", "target": "Valjean", "value": 1 },
296 | { "source": "Babet", "target": "Mme.Thenardier", "value": 1 },
297 | { "source": "Babet", "target": "Javert", "value": 2 },
298 | { "source": "Babet", "target": "Gavroche", "value": 1 },
299 | { "source": "Babet", "target": "Eponine", "value": 1 },
300 | { "source": "Claquesous", "target": "Thenardier", "value": 4 },
301 | { "source": "Claquesous", "target": "Babet", "value": 4 },
302 | { "source": "Claquesous", "target": "Gueulemer", "value": 4 },
303 | { "source": "Claquesous", "target": "Valjean", "value": 1 },
304 | { "source": "Claquesous", "target": "Mme.Thenardier", "value": 1 },
305 | { "source": "Claquesous", "target": "Javert", "value": 1 },
306 | { "source": "Claquesous", "target": "Eponine", "value": 1 },
307 | { "source": "Claquesous", "target": "Enjolras", "value": 1 },
308 | { "source": "Montparnasse", "target": "Javert", "value": 1 },
309 | { "source": "Montparnasse", "target": "Babet", "value": 2 },
310 | { "source": "Montparnasse", "target": "Gueulemer", "value": 2 },
311 | { "source": "Montparnasse", "target": "Claquesous", "value": 2 },
312 | { "source": "Montparnasse", "target": "Valjean", "value": 1 },
313 | { "source": "Montparnasse", "target": "Gavroche", "value": 1 },
314 | { "source": "Montparnasse", "target": "Eponine", "value": 1 },
315 | { "source": "Montparnasse", "target": "Thenardier", "value": 1 },
316 | { "source": "Toussaint", "target": "Cosette", "value": 2 },
317 | { "source": "Toussaint", "target": "Javert", "value": 1 },
318 | { "source": "Toussaint", "target": "Valjean", "value": 1 },
319 | { "source": "Child1", "target": "Gavroche", "value": 2 },
320 | { "source": "Child2", "target": "Gavroche", "value": 2 },
321 | { "source": "Child2", "target": "Child1", "value": 3 },
322 | { "source": "Brujon", "target": "Babet", "value": 3 },
323 | { "source": "Brujon", "target": "Gueulemer", "value": 3 },
324 | { "source": "Brujon", "target": "Thenardier", "value": 3 },
325 | { "source": "Brujon", "target": "Gavroche", "value": 1 },
326 | { "source": "Brujon", "target": "Eponine", "value": 1 },
327 | { "source": "Brujon", "target": "Claquesous", "value": 1 },
328 | { "source": "Brujon", "target": "Montparnasse", "value": 1 },
329 | { "source": "Mme.Hucheloup", "target": "Bossuet", "value": 1 },
330 | { "source": "Mme.Hucheloup", "target": "Joly", "value": 1 },
331 | { "source": "Mme.Hucheloup", "target": "Grantaire", "value": 1 },
332 | { "source": "Mme.Hucheloup", "target": "Bahorel", "value": 1 },
333 | { "source": "Mme.Hucheloup", "target": "Courfeyrac", "value": 1 },
334 | { "source": "Mme.Hucheloup", "target": "Gavroche", "value": 1 },
335 | { "source": "Mme.Hucheloup", "target": "Enjolras", "value": 1 }
336 | ]
337 | }
338 |
--------------------------------------------------------------------------------
/public/data/apple-stock.csv:
--------------------------------------------------------------------------------
1 | date,close
2 | 2007-04-23,93.24
3 | 2007-04-24,95.35
4 | 2007-04-25,98.84
5 | 2007-04-26,99.92
6 | 2007-04-29,99.8
7 | 2007-05-01,99.47
8 | 2007-05-02,100.39
9 | 2007-05-03,100.4
10 | 2007-05-04,100.81
11 | 2007-05-07,103.92
12 | 2007-05-08,105.06
13 | 2007-05-09,106.88
14 | 2007-05-09,107.34
15 | 2007-05-10,108.74
16 | 2007-05-13,109.36
17 | 2007-05-14,107.52
18 | 2007-05-15,107.34
19 | 2007-05-16,109.44
20 | 2007-05-17,110.02
21 | 2007-05-20,111.98
22 | 2007-05-21,113.54
23 | 2007-05-22,112.89
24 | 2007-05-23,110.69
25 | 2007-05-24,113.62
26 | 2007-05-28,114.35
27 | 2007-05-29,118.77
28 | 2007-05-30,121.19
29 | 2007-06-01,118.4
30 | 2007-06-04,121.33
31 | 2007-06-05,122.67
32 | 2007-06-06,123.64
33 | 2007-06-07,124.07
34 | 2007-06-08,124.49
35 | 2007-06-10,120.19
36 | 2007-06-11,120.38
37 | 2007-06-12,117.5
38 | 2007-06-13,118.75
39 | 2007-06-14,120.5
40 | 2007-06-17,125.09
41 | 2007-06-18,123.66
42 | 2007-06-19,121.55
43 | 2007-06-20,123.9
44 | 2007-06-21,123
45 | 2007-06-24,122.34
46 | 2007-06-25,119.65
47 | 2007-06-26,121.89
48 | 2007-06-27,120.56
49 | 2007-06-28,122.04
50 | 2007-07-02,121.26
51 | 2007-07-03,127.17
52 | 2007-07-05,132.75
53 | 2007-07-06,132.3
54 | 2007-07-09,130.33
55 | 2007-07-09,132.35
56 | 2007-07-10,132.39
57 | 2007-07-11,134.07
58 | 2007-07-12,137.73
59 | 2007-07-15,138.1
60 | 2007-07-16,138.91
61 | 2007-07-17,138.12
62 | 2007-07-18,140
63 | 2007-07-19,143.75
64 | 2007-07-22,143.7
65 | 2007-07-23,134.89
66 | 2007-07-24,137.26
67 | 2007-07-25,146
68 | 2007-07-26,143.85
69 | 2007-07-29,141.43
70 | 2007-07-30,131.76
71 | 2007-08-01,135
72 | 2007-08-02,136.49
73 | 2007-08-03,131.85
74 | 2007-08-06,135.25
75 | 2007-08-07,135.03
76 | 2007-08-08,134.01
77 | 2007-08-09,126.39
78 | 2007-08-09,125
79 | 2007-08-12,127.79
80 | 2007-08-13,124.03
81 | 2007-08-14,119.9
82 | 2007-08-15,117.05
83 | 2007-08-16,122.06
84 | 2007-08-19,122.22
85 | 2007-08-20,127.57
86 | 2007-08-21,132.51
87 | 2007-08-22,131.07
88 | 2007-08-23,135.3
89 | 2007-08-26,132.25
90 | 2007-08-27,126.82
91 | 2007-08-28,134.08
92 | 2007-08-29,136.25
93 | 2007-08-30,138.48
94 | 2007-09-04,144.16
95 | 2007-09-05,136.76
96 | 2007-09-06,135.01
97 | 2007-09-07,131.77
98 | 2007-09-09,136.71
99 | 2007-09-10,135.49
100 | 2007-09-11,136.85
101 | 2007-09-12,137.2
102 | 2007-09-13,138.81
103 | 2007-09-16,138.41
104 | 2007-09-17,140.92
105 | 2007-09-18,140.77
106 | 2007-09-19,140.31
107 | 2007-09-20,144.15
108 | 2007-09-23,148.28
109 | 2007-09-24,153.18
110 | 2007-09-25,152.77
111 | 2007-09-26,154.5
112 | 2007-09-27,153.47
113 | 2007-10-01,156.34
114 | 2007-10-02,158.45
115 | 2007-10-03,157.92
116 | 2007-10-04,156.24
117 | 2007-10-05,161.45
118 | 2007-10-08,167.91
119 | 2007-10-09,167.86
120 | 2007-10-09,166.79
121 | 2007-10-10,162.23
122 | 2007-10-11,167.25
123 | 2007-10-14,166.98
124 | 2007-10-15,169.58
125 | 2007-10-16,172.75
126 | 2007-10-17,173.5
127 | 2007-10-18,170.42
128 | 2007-10-21,174.36
129 | 2007-10-22,186.16
130 | 2007-10-23,185.93
131 | 2007-10-24,182.78
132 | 2007-10-25,184.7
133 | 2007-10-28,185.09
134 | 2007-10-29,187
135 | 2007-10-30,189.95
136 | 2007-11-01,187.44
137 | 2007-11-02,187.87
138 | 2007-11-05,186.18
139 | 2007-11-06,191.79
140 | 2007-11-07,186.3
141 | 2007-11-08,175.47
142 | 2007-11-09,165.37
143 | 2007-11-11,153.76
144 | 2007-11-12,169.96
145 | 2007-11-13,166.11
146 | 2007-11-14,164.3
147 | 2007-11-15,166.39
148 | 2007-11-18,163.95
149 | 2007-11-19,168.85
150 | 2007-11-20,168.46
151 | 2007-11-22,171.54
152 | 2007-11-25,172.54
153 | 2007-11-26,174.81
154 | 2007-11-27,180.22
155 | 2007-11-28,184.29
156 | 2007-11-29,182.22
157 | 2007-12-03,178.86
158 | 2007-12-04,179.81
159 | 2007-12-05,185.5
160 | 2007-12-06,189.95
161 | 2007-12-07,194.3
162 | 2007-12-09,194.21
163 | 2007-12-10,188.54
164 | 2007-12-11,190.86
165 | 2007-12-12,191.83
166 | 2007-12-13,190.39
167 | 2007-12-16,184.4
168 | 2007-12-17,182.98
169 | 2007-12-18,183.12
170 | 2007-12-19,187.21
171 | 2007-12-20,193.91
172 | 2007-12-23,198.8
173 | 2007-12-25,198.95
174 | 2007-12-26,198.57
175 | 2007-12-27,199.83
176 | 2007-12-30,198.08
177 | 2008-01-02,194.84
178 | 2008-01-03,194.93
179 | 2008-01-04,180.05
180 | 2008-01-07,177.64
181 | 2008-01-08,171.25
182 | 2008-01-09,179.4
183 | 2008-01-09,178.02
184 | 2008-01-10,172.69
185 | 2008-01-13,178.78
186 | 2008-01-14,169.04
187 | 2008-01-15,159.64
188 | 2008-01-16,160.89
189 | 2008-01-17,161.36
190 | 2008-01-21,155.64
191 | 2008-01-22,139.07
192 | 2008-01-23,135.6
193 | 2008-01-24,130.01
194 | 2008-01-27,130.01
195 | 2008-01-28,131.54
196 | 2008-01-29,132.18
197 | 2008-01-30,135.36
198 | 2008-02-01,133.75
199 | 2008-02-04,131.65
200 | 2008-02-05,129.36
201 | 2008-02-06,122
202 | 2008-02-07,121.24
203 | 2008-02-08,125.48
204 | 2008-02-10,129.45
205 | 2008-02-11,124.86
206 | 2008-02-12,129.4
207 | 2008-02-13,127.46
208 | 2008-02-14,124.63
209 | 2008-02-18,122.18
210 | 2008-02-19,123.82
211 | 2008-02-20,121.54
212 | 2008-02-21,119.46
213 | 2008-02-24,119.74
214 | 2008-02-25,119.15
215 | 2008-02-26,122.96
216 | 2008-02-27,129.91
217 | 2008-02-28,125.02
218 | 2008-03-03,121.73
219 | 2008-03-04,124.62
220 | 2008-03-05,124.49
221 | 2008-03-06,120.93
222 | 2008-03-07,122.25
223 | 2008-03-09,119.69
224 | 2008-03-10,127.35
225 | 2008-03-11,126.03
226 | 2008-03-12,127.94
227 | 2008-03-13,126.61
228 | 2008-03-16,126.73
229 | 2008-03-17,132.82
230 | 2008-03-18,129.67
231 | 2008-03-19,133.27
232 | 2008-03-23,139.53
233 | 2008-03-24,140.98
234 | 2008-03-25,145.06
235 | 2008-03-26,140.25
236 | 2008-03-27,143.01
237 | 2008-03-30,143.5
238 | 2008-04-01,149.53
239 | 2008-04-02,147.49
240 | 2008-04-03,151.61
241 | 2008-04-04,153.08
242 | 2008-04-07,155.89
243 | 2008-04-08,152.84
244 | 2008-04-09,151.44
245 | 2008-04-09,154.55
246 | 2008-04-10,147.14
247 | 2008-04-13,147.78
248 | 2008-04-14,148.38
249 | 2008-04-15,153.7
250 | 2008-04-16,154.49
251 | 2008-04-17,161.04
252 | 2008-04-20,168.16
253 | 2008-04-21,160.2
254 | 2008-04-22,162.89
255 | 2008-04-23,168.94
256 | 2008-04-24,169.73
257 | 2008-04-27,172.24
258 | 2008-04-28,175.05
259 | 2008-04-29,173.95
260 | 2008-05-01,180
261 | 2008-05-02,180.94
262 | 2008-05-05,184.73
263 | 2008-05-06,186.66
264 | 2008-05-07,182.59
265 | 2008-05-08,185.06
266 | 2008-05-09,183.45
267 | 2008-05-11,188.16
268 | 2008-05-12,189.96
269 | 2008-05-13,186.26
270 | 2008-05-14,189.73
271 | 2008-05-15,187.62
272 | 2008-05-18,183.6
273 | 2008-05-19,185.9
274 | 2008-05-20,178.19
275 | 2008-05-21,177.05
276 | 2008-05-22,181.17
277 | 2008-05-26,186.43
278 | 2008-05-27,187.01
279 | 2008-05-28,186.69
280 | 2008-05-29,188.75
281 | 2008-06-02,186.1
282 | 2008-06-03,185.37
283 | 2008-06-04,185.19
284 | 2008-06-05,189.43
285 | 2008-06-06,185.64
286 | 2008-06-09,181.61
287 | 2008-06-09,185.64
288 | 2008-06-10,180.81
289 | 2008-06-11,173.26
290 | 2008-06-12,172.37
291 | 2008-06-15,176.84
292 | 2008-06-16,181.43
293 | 2008-06-17,178.75
294 | 2008-06-18,180.9
295 | 2008-06-19,175.27
296 | 2008-06-22,173.16
297 | 2008-06-23,173.25
298 | 2008-06-24,177.39
299 | 2008-06-25,168.26
300 | 2008-06-26,170.09
301 | 2008-06-29,167.44
302 | 2008-07-01,174.68
303 | 2008-07-02,168.18
304 | 2008-07-03,170.12
305 | 2008-07-07,175.16
306 | 2008-07-08,179.55
307 | 2008-07-09,174.25
308 | 2008-07-09,176.63
309 | 2008-07-10,172.58
310 | 2008-07-13,173.88
311 | 2008-07-14,169.64
312 | 2008-07-15,172.81
313 | 2008-07-16,171.81
314 | 2008-07-17,165.15
315 | 2008-07-20,166.29
316 | 2008-07-21,162.02
317 | 2008-07-22,166.26
318 | 2008-07-23,159.03
319 | 2008-07-24,162.12
320 | 2008-07-27,154.4
321 | 2008-07-28,157.08
322 | 2008-07-29,159.88
323 | 2008-07-30,158.95
324 | 2008-08-01,156.66
325 | 2008-08-04,153.23
326 | 2008-08-05,160.64
327 | 2008-08-06,164.19
328 | 2008-08-07,163.57
329 | 2008-08-08,169.55
330 | 2008-08-10,173.56
331 | 2008-08-11,176.73
332 | 2008-08-12,179.3
333 | 2008-08-13,179.32
334 | 2008-08-14,175.74
335 | 2008-08-17,175.39
336 | 2008-08-18,173.53
337 | 2008-08-19,175.84
338 | 2008-08-20,174.29
339 | 2008-08-21,176.79
340 | 2008-08-24,172.55
341 | 2008-08-25,173.64
342 | 2008-08-26,174.67
343 | 2008-08-27,173.74
344 | 2008-08-28,169.53
345 | 2008-09-02,166.19
346 | 2008-09-03,166.96
347 | 2008-09-04,161.22
348 | 2008-09-05,160.18
349 | 2008-09-08,157.92
350 | 2008-09-09,151.68
351 | 2008-09-09,151.61
352 | 2008-09-10,152.65
353 | 2008-09-11,148.94
354 | 2008-09-14,140.36
355 | 2008-09-15,139.88
356 | 2008-09-16,127.83
357 | 2008-09-17,134.09
358 | 2008-09-18,140.91
359 | 2008-09-21,131.05
360 | 2008-09-22,126.84
361 | 2008-09-23,128.71
362 | 2008-09-24,131.93
363 | 2008-09-25,128.24
364 | 2008-09-28,105.26
365 | 2008-09-29,113.66
366 | 2008-10-01,109.12
367 | 2008-10-02,100.1
368 | 2008-10-03,97.07
369 | 2008-10-06,98.14
370 | 2008-10-07,89.16
371 | 2008-10-08,89.79
372 | 2008-10-09,88.74
373 | 2008-10-09,96.8
374 | 2008-10-12,110.26
375 | 2008-10-13,104.08
376 | 2008-10-14,97.95
377 | 2008-10-15,101.89
378 | 2008-10-16,97.4
379 | 2008-10-19,98.44
380 | 2008-10-20,91.49
381 | 2008-10-21,96.87
382 | 2008-10-22,98.23
383 | 2008-10-23,96.38
384 | 2008-10-26,92.09
385 | 2008-10-27,99.91
386 | 2008-10-28,104.55
387 | 2008-10-29,111.04
388 | 2008-10-30,107.59
389 | 2008-11-03,106.96
390 | 2008-11-04,110.99
391 | 2008-11-05,103.3
392 | 2008-11-06,99.1
393 | 2008-11-07,98.24
394 | 2008-11-09,95.88
395 | 2008-11-10,94.77
396 | 2008-11-11,90.12
397 | 2008-11-12,96.44
398 | 2008-11-13,90.24
399 | 2008-11-16,88.14
400 | 2008-11-17,89.91
401 | 2008-11-18,86.29
402 | 2008-11-19,80.49
403 | 2008-11-20,82.58
404 | 2008-11-23,92.95
405 | 2008-11-24,90.8
406 | 2008-11-25,95
407 | 2008-11-26,95
408 | 2008-11-27,92.67
409 | 2008-12-01,88.93
410 | 2008-12-02,92.47
411 | 2008-12-03,95.9
412 | 2008-12-04,91.41
413 | 2008-12-05,94
414 | 2008-12-08,99.72
415 | 2008-12-09,100.06
416 | 2008-12-09,98.21
417 | 2008-12-10,95
418 | 2008-12-11,98.27
419 | 2008-12-14,94.75
420 | 2008-12-15,95.43
421 | 2008-12-16,89.16
422 | 2008-12-17,89.43
423 | 2008-12-18,90
424 | 2008-12-21,85.74
425 | 2008-12-22,86.38
426 | 2008-12-23,85.04
427 | 2008-12-24,85.04
428 | 2008-12-25,85.81
429 | 2008-12-28,86.61
430 | 2008-12-29,86.29
431 | 2008-12-30,85.35
432 | 2009-01-01,85.35
433 | 2009-01-02,90.75
434 | 2009-01-05,94.58
435 | 2009-01-06,93.02
436 | 2009-01-07,91.01
437 | 2009-01-08,92.7
438 | 2009-01-09,90.58
439 | 2009-01-11,88.66
440 | 2009-01-12,87.71
441 | 2009-01-13,85.33
442 | 2009-01-14,83.38
443 | 2009-01-15,82.33
444 | 2009-01-19,78.2
445 | 2009-01-20,82.83
446 | 2009-01-21,88.36
447 | 2009-01-22,88.36
448 | 2009-01-25,89.64
449 | 2009-01-26,90.73
450 | 2009-01-27,94.2
451 | 2009-01-28,93
452 | 2009-01-29,90.13
453 | 2009-02-02,91.51
454 | 2009-02-03,92.98
455 | 2009-02-04,93.55
456 | 2009-02-05,96.46
457 | 2009-02-06,99.72
458 | 2009-02-09,102.51
459 | 2009-02-09,97.83
460 | 2009-02-10,96.82
461 | 2009-02-11,99.27
462 | 2009-02-12,99.16
463 | 2009-02-16,94.53
464 | 2009-02-17,94.37
465 | 2009-02-18,90.64
466 | 2009-02-19,91.2
467 | 2009-02-22,86.95
468 | 2009-02-23,90.25
469 | 2009-02-24,91.16
470 | 2009-02-25,89.19
471 | 2009-02-26,89.31
472 | 2009-03-02,87.94
473 | 2009-03-03,88.37
474 | 2009-03-04,91.17
475 | 2009-03-05,88.84
476 | 2009-03-06,85.3
477 | 2009-03-09,83.11
478 | 2009-03-09,88.63
479 | 2009-03-10,92.68
480 | 2009-03-11,96.35
481 | 2009-03-12,95.93
482 | 2009-03-15,95.42
483 | 2009-03-16,99.66
484 | 2009-03-17,101.52
485 | 2009-03-18,101.62
486 | 2009-03-19,101.59
487 | 2009-03-22,107.66
488 | 2009-03-23,106.5
489 | 2009-03-24,106.49
490 | 2009-03-25,109.87
491 | 2009-03-26,106.85
492 | 2009-03-29,104.49
493 | 2009-03-30,105.12
494 | 2009-04-01,108.69
495 | 2009-04-02,112.71
496 | 2009-04-03,115.99
497 | 2009-04-06,118.45
498 | 2009-04-07,115
499 | 2009-04-08,116.32
500 | 2009-04-09,119.57
501 | 2009-04-09,119.57
502 | 2009-04-12,120.22
503 | 2009-04-13,118.31
504 | 2009-04-14,117.64
505 | 2009-04-15,121.45
506 | 2009-04-16,123.42
507 | 2009-04-19,120.5
508 | 2009-04-20,121.76
509 | 2009-04-21,121.51
510 | 2009-04-22,125.4
511 | 2009-04-23,123.9
512 | 2009-04-26,124.73
513 | 2009-04-27,123.9
514 | 2009-04-28,125.14
515 | 2009-04-29,125.83
516 | 2009-05-01,127.24
517 | 2009-05-04,132.07
518 | 2009-05-05,132.71
519 | 2009-05-06,132.5
520 | 2009-05-07,129.06
521 | 2009-05-08,129.19
522 | 2009-05-10,129.57
523 | 2009-05-11,124.42
524 | 2009-05-12,119.49
525 | 2009-05-13,122.95
526 | 2009-05-14,122.42
527 | 2009-05-17,126.65
528 | 2009-05-18,127.45
529 | 2009-05-19,125.87
530 | 2009-05-20,124.18
531 | 2009-05-21,122.5
532 | 2009-05-25,130.78
533 | 2009-05-26,133.05
534 | 2009-05-27,135.07
535 | 2009-05-28,135.81
536 | 2009-06-01,139.35
537 | 2009-06-02,139.49
538 | 2009-06-03,140.95
539 | 2009-06-04,143.74
540 | 2009-06-05,144.67
541 | 2009-06-08,143.85
542 | 2009-06-09,142.72
543 | 2009-06-09,140.25
544 | 2009-06-10,139.95
545 | 2009-06-11,136.97
546 | 2009-06-14,136.09
547 | 2009-06-15,136.35
548 | 2009-06-16,135.58
549 | 2009-06-17,135.88
550 | 2009-06-18,139.48
551 | 2009-06-21,137.37
552 | 2009-06-22,134.01
553 | 2009-06-23,136.22
554 | 2009-06-24,139.86
555 | 2009-06-25,142.44
556 | 2009-06-28,141.97
557 | 2009-06-29,142.43
558 | 2009-07-01,142.83
559 | 2009-07-02,140.02
560 | 2009-07-03,140.02
561 | 2009-07-06,138.61
562 | 2009-07-07,135.4
563 | 2009-07-08,137.22
564 | 2009-07-09,136.36
565 | 2009-07-09,138.52
566 | 2009-07-12,142.34
567 | 2009-07-13,142.27
568 | 2009-07-14,146.88
569 | 2009-07-15,147.52
570 | 2009-07-16,151.75
571 | 2009-07-19,152.91
572 | 2009-07-20,151.51
573 | 2009-07-21,156.74
574 | 2009-07-22,157.82
575 | 2009-07-23,159.99
576 | 2009-07-26,160.1
577 | 2009-07-27,160
578 | 2009-07-28,160.03
579 | 2009-07-29,162.79
580 | 2009-07-30,163.39
581 | 2009-08-03,166.43
582 | 2009-08-04,165.55
583 | 2009-08-05,165.11
584 | 2009-08-06,163.91
585 | 2009-08-07,165.51
586 | 2009-08-09,164.72
587 | 2009-08-11,165.31
588 | 2009-08-12,168.42
589 | 2009-08-13,166.78
590 | 2009-08-16,159.59
591 | 2009-08-17,164
592 | 2009-08-18,164.6
593 | 2009-08-19,166.33
594 | 2009-08-20,169.22
595 | 2009-08-23,169.06
596 | 2009-08-24,169.4
597 | 2009-08-25,167.41
598 | 2009-08-26,169.45
599 | 2009-08-27,170.05
600 | 2009-08-30,168.21
601 | 2009-09-01,165.3
602 | 2009-09-02,165.18
603 | 2009-09-03,166.55
604 | 2009-09-04,170.31
605 | 2009-09-08,172.93
606 | 2009-09-09,171.14
607 | 2009-09-09,172.56
608 | 2009-09-10,172.16
609 | 2009-09-13,173.72
610 | 2009-09-14,175.16
611 | 2009-09-15,181.87
612 | 2009-09-16,184.55
613 | 2009-09-17,185.02
614 | 2009-09-20,184.02
615 | 2009-09-21,184.48
616 | 2009-09-22,185.5
617 | 2009-09-23,183.82
618 | 2009-09-24,182.37
619 | 2009-09-27,186.15
620 | 2009-09-28,185.38
621 | 2009-09-29,185.35
622 | 2009-10-01,180.86
623 | 2009-10-02,184.9
624 | 2009-10-05,186.02
625 | 2009-10-06,190.01
626 | 2009-10-07,190.25
627 | 2009-10-08,189.27
628 | 2009-10-09,190.47
629 | 2009-10-11,190.81
630 | 2009-10-12,190.02
631 | 2009-10-13,191.29
632 | 2009-10-14,190.56
633 | 2009-10-15,188.05
634 | 2009-10-18,189.86
635 | 2009-10-19,198.76
636 | 2009-10-20,204.92
637 | 2009-10-21,205.2
638 | 2009-10-22,203.94
639 | 2009-10-25,202.48
640 | 2009-10-26,197.37
641 | 2009-10-27,192.4
642 | 2009-10-28,196.35
643 | 2009-10-29,188.5
644 | 2009-11-02,189.31
645 | 2009-11-03,188.75
646 | 2009-11-04,190.81
647 | 2009-11-05,194.03
648 | 2009-11-06,194.34
649 | 2009-11-09,201.46
650 | 2009-11-09,202.98
651 | 2009-11-10,203.25
652 | 2009-11-11,201.99
653 | 2009-11-12,204.45
654 | 2009-11-15,206.63
655 | 2009-11-16,207
656 | 2009-11-17,205.96
657 | 2009-11-18,200.51
658 | 2009-11-19,199.92
659 | 2009-11-22,205.88
660 | 2009-11-23,204.44
661 | 2009-11-24,204.19
662 | 2009-11-25,204.19
663 | 2009-11-26,200.59
664 | 2009-11-29,199.91
665 | 2009-12-01,196.97
666 | 2009-12-02,196.23
667 | 2009-12-03,196.48
668 | 2009-12-04,193.32
669 | 2009-12-07,188.95
670 | 2009-12-08,189.87
671 | 2009-12-09,197.8
672 | 2009-12-09,196.43
673 | 2009-12-10,194.67
674 | 2009-12-13,196.98
675 | 2009-12-14,194.17
676 | 2009-12-15,195.03
677 | 2009-12-16,191.86
678 | 2009-12-17,195.43
679 | 2009-12-20,198.23
680 | 2009-12-21,200.36
681 | 2009-12-22,202.1
682 | 2009-12-23,209.04
683 | 2009-12-24,209.04
684 | 2009-12-27,211.61
685 | 2009-12-28,209.1
686 | 2009-12-29,211.64
687 | 2009-12-30,210.73
688 | 2010-01-01,210.73
689 | 2010-01-04,214.01
690 | 2010-01-05,214.38
691 | 2010-01-06,210.97
692 | 2010-01-07,210.58
693 | 2010-01-08,211.98
694 | 2010-01-10,210.11
695 | 2010-01-11,207.72
696 | 2010-01-12,210.65
697 | 2010-01-13,209.43
698 | 2010-01-14,205.93
699 | 2010-01-17,205.93
700 | 2010-01-18,215.04
701 | 2010-01-19,211.72
702 | 2010-01-20,208.07
703 | 2010-01-21,197.75
704 | 2010-01-24,203.08
705 | 2010-01-25,205.94
706 | 2010-01-26,207.88
707 | 2010-01-27,199.29
708 | 2010-01-28,192.06
709 | 2010-02-01,194.73
710 | 2010-02-02,195.86
711 | 2010-02-03,199.23
712 | 2010-02-04,192.05
713 | 2010-02-05,195.46
714 | 2010-02-08,194.12
715 | 2010-02-09,196.19
716 | 2010-02-09,195.12
717 | 2010-02-10,198.67
718 | 2010-02-11,200.38
719 | 2010-02-14,200.38
720 | 2010-02-15,203.4
721 | 2010-02-16,202.55
722 | 2010-02-17,202.93
723 | 2010-02-18,201.67
724 | 2010-02-21,200.42
725 | 2010-02-22,197.06
726 | 2010-02-23,200.66
727 | 2010-02-24,202
728 | 2010-02-25,204.62
729 | 2010-03-01,208.99
730 | 2010-03-02,208.85
731 | 2010-03-03,209.33
732 | 2010-03-04,210.71
733 | 2010-03-05,218.95
734 | 2010-03-08,219.08
735 | 2010-03-09,223.02
736 | 2010-03-09,224.84
737 | 2010-03-10,225.5
738 | 2010-03-11,226.6
739 | 2010-03-14,223.84
740 | 2010-03-15,224.45
741 | 2010-03-16,224.12
742 | 2010-03-17,224.65
743 | 2010-03-18,222.25
744 | 2010-03-21,224.75
745 | 2010-03-22,228.36
746 | 2010-03-23,229.37
747 | 2010-03-24,226.65
748 | 2010-03-25,230.9
749 | 2010-03-28,232.39
750 | 2010-03-29,235.84
751 | 2010-03-30,235
752 | 2010-04-01,235.97
753 | 2010-04-02,235.97
754 | 2010-04-05,238.49
755 | 2010-04-06,239.54
756 | 2010-04-07,240.6
757 | 2010-04-08,239.95
758 | 2010-04-09,241.79
759 | 2010-04-11,242.29
760 | 2010-04-12,242.43
761 | 2010-04-13,245.69
762 | 2010-04-14,248.92
763 | 2010-04-15,247.4
764 | 2010-04-18,247.07
765 | 2010-04-19,244.59
766 | 2010-04-20,259.22
767 | 2010-04-21,266.47
768 | 2010-04-22,270.83
769 | 2010-04-25,269.5
770 | 2010-04-26,262.04
771 | 2010-04-27,261.6
772 | 2010-04-28,268.64
773 | 2010-04-29,261.09
774 | 2010-05-03,266.35
775 | 2010-05-04,258.68
776 | 2010-05-05,255.98
777 | 2010-05-06,246.25
778 | 2010-05-07,235.86
779 | 2010-05-09,253.99
780 | 2010-05-10,256.52
781 | 2010-05-11,262.09
782 | 2010-05-12,258.36
783 | 2010-05-13,253.82
784 | 2010-05-16,254.22
785 | 2010-05-17,252.36
786 | 2010-05-18,248.34
787 | 2010-05-19,237.76
788 | 2010-05-20,242.32
789 | 2010-05-23,246.76
790 | 2010-05-24,245.22
791 | 2010-05-25,244.11
792 | 2010-05-26,253.35
793 | 2010-05-27,256.88
794 | 2010-05-30,256.88
795 | 2010-06-01,260.83
796 | 2010-06-02,263.95
797 | 2010-06-03,263.12
798 | 2010-06-04,255.96
799 | 2010-06-07,250.94
800 | 2010-06-08,249.33
801 | 2010-06-09,243.2
802 | 2010-06-09,250.51
803 | 2010-06-10,253.51
804 | 2010-06-13,254.28
805 | 2010-06-14,259.69
806 | 2010-06-15,267.25
807 | 2010-06-16,271.87
808 | 2010-06-17,274.07
809 | 2010-06-20,270.17
810 | 2010-06-21,273.85
811 | 2010-06-22,270.97
812 | 2010-06-23,269
813 | 2010-06-24,266.7
814 | 2010-06-27,268.3
815 | 2010-06-28,256.17
816 | 2010-06-29,251.53
817 | 2010-07-01,248.48
818 | 2010-07-02,246.94
819 | 2010-07-05,246.94
820 | 2010-07-06,248.63
821 | 2010-07-07,258.66
822 | 2010-07-08,258.09
823 | 2010-07-09,259.62
824 | 2010-07-11,257.28
825 | 2010-07-12,251.8
826 | 2010-07-13,252.73
827 | 2010-07-14,251.45
828 | 2010-07-15,249.9
829 | 2010-07-18,245.58
830 | 2010-07-19,251.89
831 | 2010-07-20,254.24
832 | 2010-07-21,259.02
833 | 2010-07-22,259.94
834 | 2010-07-25,259.28
835 | 2010-07-26,264.08
836 | 2010-07-27,260.96
837 | 2010-07-28,258.11
838 | 2010-07-29,257.25
839 | 2010-08-02,261.85
840 | 2010-08-03,261.93
841 | 2010-08-04,262.98
842 | 2010-08-05,261.7
843 | 2010-08-06,260.09
844 | 2010-08-09,261.75
845 | 2010-08-09,259.41
846 | 2010-08-10,250.19
847 | 2010-08-11,251.79
848 | 2010-08-12,249.1
849 | 2010-08-15,247.64
850 | 2010-08-16,251.97
851 | 2010-08-17,253.07
852 | 2010-08-18,249.88
853 | 2010-08-19,249.64
854 | 2010-08-22,245.8
855 | 2010-08-23,239.93
856 | 2010-08-24,242.89
857 | 2010-08-25,240.28
858 | 2010-08-26,241.62
859 | 2010-08-29,242.5
860 | 2010-08-30,243.1
861 | 2010-09-01,250.33
862 | 2010-09-02,252.17
863 | 2010-09-03,258.77
864 | 2010-09-06,258.77
865 | 2010-09-07,257.81
866 | 2010-09-08,262.92
867 | 2010-09-09,263.07
868 | 2010-09-09,263.41
869 | 2010-09-12,267.04
870 | 2010-09-13,268.06
871 | 2010-09-14,270.22
872 | 2010-09-15,276.57
873 | 2010-09-16,275.37
874 | 2010-09-19,283.23
875 | 2010-09-20,283.77
876 | 2010-09-21,287.75
877 | 2010-09-22,288.92
878 | 2010-09-23,292.32
879 | 2010-09-26,291.16
880 | 2010-09-27,286.86
881 | 2010-09-28,287.37
882 | 2010-09-29,283.75
883 | 2010-10-01,282.52
884 | 2010-10-04,278.64
885 | 2010-10-05,288.94
886 | 2010-10-06,289.19
887 | 2010-10-07,289.22
888 | 2010-10-08,294.07
889 | 2010-10-10,295.36
890 | 2010-10-11,298.54
891 | 2010-10-12,300.14
892 | 2010-10-13,302.31
893 | 2010-10-14,314.74
894 | 2010-10-17,318
895 | 2010-10-18,309.49
896 | 2010-10-19,310.53
897 | 2010-10-20,309.52
898 | 2010-10-21,307.47
899 | 2010-10-24,308.84
900 | 2010-10-25,308.05
901 | 2010-10-26,307.83
902 | 2010-10-27,305.24
903 | 2010-10-28,300.98
904 | 2010-11-01,304.18
905 | 2010-11-02,309.36
906 | 2010-11-03,312.8
907 | 2010-11-04,318.27
908 | 2010-11-05,317.13
909 | 2010-11-08,318.62
910 | 2010-11-09,316.08
911 | 2010-11-09,318.03
912 | 2010-11-10,316.66
913 | 2010-11-11,308.03
914 | 2010-11-14,307.04
915 | 2010-11-15,301.59
916 | 2010-11-16,300.5
917 | 2010-11-17,308.43
918 | 2010-11-18,306.73
919 | 2010-11-21,313.36
920 | 2010-11-22,308.73
921 | 2010-11-23,314.8
922 | 2010-11-25,315
923 | 2010-11-28,316.87
924 | 2010-11-29,311.15
925 | 2010-12-01,316.4
926 | 2010-12-02,318.15
927 | 2010-12-03,317.44
928 | 2010-12-06,320.15
929 | 2010-12-07,318.21
930 | 2010-12-08,321.01
931 | 2010-12-09,319.76
932 | 2010-12-09,320.56
933 | 2010-12-12,321.67
934 | 2010-12-13,320.29
935 | 2010-12-14,320.36
936 | 2010-12-15,321.25
937 | 2010-12-16,320.61
938 | 2010-12-19,322.21
939 | 2010-12-20,324.2
940 | 2010-12-21,325.16
941 | 2010-12-22,323.6
942 | 2010-12-26,324.68
943 | 2010-12-27,325.47
944 | 2010-12-28,325.29
945 | 2010-12-29,323.66
946 | 2010-12-30,322.56
947 | 2011-01-03,329.57
948 | 2011-01-04,331.29
949 | 2011-01-05,334
950 | 2011-01-06,333.73
951 | 2011-01-07,336.12
952 | 2011-01-09,342.46
953 | 2011-01-10,341.64
954 | 2011-01-11,344.42
955 | 2011-01-12,345.68
956 | 2011-01-13,348.48
957 | 2011-01-17,340.65
958 | 2011-01-18,338.84
959 | 2011-01-19,332.68
960 | 2011-01-20,326.72
961 | 2011-01-23,337.45
962 | 2011-01-24,341.4
963 | 2011-01-25,343.85
964 | 2011-01-26,343.21
965 | 2011-01-27,336.1
966 | 2011-01-30,339.32
967 | 2011-02-01,345.03
968 | 2011-02-02,344.32
969 | 2011-02-03,343.44
970 | 2011-02-04,346.5
971 | 2011-02-07,351.88
972 | 2011-02-08,355.2
973 | 2011-02-09,358.16
974 | 2011-02-09,354.54
975 | 2011-02-10,356.85
976 | 2011-02-13,359.18
977 | 2011-02-14,359.9
978 | 2011-02-15,363.13
979 | 2011-02-16,358.3
980 | 2011-02-17,350.56
981 | 2011-02-21,338.61
982 | 2011-02-22,342.62
983 | 2011-02-23,342.88
984 | 2011-02-24,348.16
985 | 2011-02-27,353.21
986 | 2011-03-01,349.31
987 | 2011-03-02,352.12
988 | 2011-03-03,359.56
989 | 2011-03-04,360
990 | 2011-03-07,355.36
991 | 2011-03-08,355.76
992 | 2011-03-09,352.47
993 | 2011-03-09,346.67
994 | 2011-03-10,351.99
995 | 2011-03-13,353.56
996 | 2011-03-14,345.43
997 | 2011-03-15,330.01
998 | 2011-03-16,334.64
999 | 2011-03-17,330.67
1000 | 2011-03-20,339.3
1001 | 2011-03-21,341.2
1002 | 2011-03-22,339.19
1003 | 2011-03-23,344.97
1004 | 2011-03-24,351.54
1005 | 2011-03-27,350.44
1006 | 2011-03-28,350.96
1007 | 2011-03-29,348.63
1008 | 2011-03-30,348.51
1009 | 2011-04-01,344.56
1010 | 2011-04-04,341.19
1011 | 2011-04-05,338.89
1012 | 2011-04-06,338.04
1013 | 2011-04-07,338.08
1014 | 2011-04-08,335.06
1015 | 2011-04-10,330.8
1016 | 2011-04-11,332.4
1017 | 2011-04-12,336.13
1018 | 2011-04-13,332.42
1019 | 2011-04-14,327.46
1020 | 2011-04-17,331.85
1021 | 2011-04-18,337.86
1022 | 2011-04-19,342.41
1023 | 2011-04-20,350.7
1024 | 2011-04-24,353.01
1025 | 2011-04-25,350.42
1026 | 2011-04-26,350.15
1027 | 2011-04-27,346.75
1028 | 2011-04-28,350.13
1029 | 2011-05-02,346.28
1030 | 2011-05-03,348.2
1031 | 2011-05-04,349.57
1032 | 2011-05-05,346.75
1033 | 2011-05-06,346.66
1034 | 2011-05-09,347.6
1035 | 2011-05-09,349.45
1036 | 2011-05-10,347.23
1037 | 2011-05-11,346.57
1038 | 2011-05-12,340.5
1039 | 2011-05-15,333.3
1040 | 2011-05-16,336.14
1041 | 2011-05-17,339.87
1042 | 2011-05-18,340.53
1043 | 2011-05-19,335.22
1044 | 2011-05-22,334.4
1045 | 2011-05-23,332.19
1046 | 2011-05-24,336.78
1047 | 2011-05-25,335
1048 | 2011-05-26,337.41
1049 | 2011-05-30,347.83
1050 | 2011-06-01,345.51
1051 | 2011-06-02,346.1
1052 | 2011-06-03,343.44
1053 | 2011-06-06,338.04
1054 | 2011-06-07,332.04
1055 | 2011-06-08,332.24
1056 | 2011-06-09,331.49
1057 | 2011-06-09,325.9
1058 | 2011-06-12,326.6
1059 | 2011-06-13,332.44
1060 | 2011-06-14,326.75
1061 | 2011-06-15,325.16
1062 | 2011-06-16,320.26
1063 | 2011-06-19,315.32
1064 | 2011-06-20,325.3
1065 | 2011-06-21,322.61
1066 | 2011-06-22,331.23
1067 | 2011-06-23,326.35
1068 | 2011-06-26,332.04
1069 | 2011-06-27,335.26
1070 | 2011-06-28,334.04
1071 | 2011-06-29,335.67
1072 | 2011-07-01,343.26
1073 | 2011-07-05,349.43
1074 | 2011-07-06,351.76
1075 | 2011-07-07,357.2
1076 | 2011-07-08,359.71
1077 | 2011-07-10,354
1078 | 2011-07-11,353.75
1079 | 2011-07-12,358.02
1080 | 2011-07-13,357.77
1081 | 2011-07-14,364.92
1082 | 2011-07-17,373.8
1083 | 2011-07-18,376.85
1084 | 2011-07-19,386.9
1085 | 2011-07-20,387.29
1086 | 2011-07-21,393.3
1087 | 2011-07-24,398.5
1088 | 2011-07-25,403.41
1089 | 2011-07-26,392.59
1090 | 2011-07-27,391.82
1091 | 2011-07-28,390.48
1092 | 2011-08-01,396.75
1093 | 2011-08-02,388.91
1094 | 2011-08-03,392.57
1095 | 2011-08-04,377.37
1096 | 2011-08-05,373.62
1097 | 2011-08-08,353.21
1098 | 2011-08-09,374.01
1099 | 2011-08-09,363.69
1100 | 2011-08-10,373.7
1101 | 2011-08-11,376.99
1102 | 2011-08-14,383.41
1103 | 2011-08-15,380.48
1104 | 2011-08-16,380.44
1105 | 2011-08-17,366.05
1106 | 2011-08-18,356.03
1107 | 2011-08-21,356.44
1108 | 2011-08-22,373.6
1109 | 2011-08-23,376.18
1110 | 2011-08-24,373.72
1111 | 2011-08-25,383.58
1112 | 2011-08-28,389.97
1113 | 2011-08-29,389.99
1114 | 2011-08-30,384.83
1115 | 2011-09-01,381.03
1116 | 2011-09-02,374.05
1117 | 2011-09-06,379.74
1118 | 2011-09-07,383.93
1119 | 2011-09-08,384.14
1120 | 2011-09-09,377.48
1121 | 2011-09-11,379.94
1122 | 2011-09-12,384.62
1123 | 2011-09-13,389.3
1124 | 2011-09-14,392.96
1125 | 2011-09-15,400.5
1126 | 2011-09-18,411.63
1127 | 2011-09-19,413.45
1128 | 2011-09-20,412.14
1129 | 2011-09-21,401.82
1130 | 2011-09-22,404.3
1131 | 2011-09-25,403.17
1132 | 2011-09-26,399.26
1133 | 2011-09-27,397.01
1134 | 2011-09-28,390.57
1135 | 2011-09-29,381.32
1136 | 2011-10-03,374.6
1137 | 2011-10-04,372.5
1138 | 2011-10-05,378.25
1139 | 2011-10-06,377.37
1140 | 2011-10-07,369.8
1141 | 2011-10-09,388.81
1142 | 2011-10-10,400.29
1143 | 2011-10-11,402.19
1144 | 2011-10-12,408.43
1145 | 2011-10-13,422
1146 | 2011-10-16,419.99
1147 | 2011-10-17,422.24
1148 | 2011-10-18,398.62
1149 | 2011-10-19,395.31
1150 | 2011-10-20,392.87
1151 | 2011-10-23,405.77
1152 | 2011-10-24,397.77
1153 | 2011-10-25,400.6
1154 | 2011-10-26,404.69
1155 | 2011-10-27,404.95
1156 | 2011-10-30,404.78
1157 | 2011-11-01,396.51
1158 | 2011-11-02,397.41
1159 | 2011-11-03,403.07
1160 | 2011-11-04,400.24
1161 | 2011-11-07,399.73
1162 | 2011-11-08,406.23
1163 | 2011-11-09,395.28
1164 | 2011-11-09,385.22
1165 | 2011-11-10,384.62
1166 | 2011-11-13,379.26
1167 | 2011-11-14,388.83
1168 | 2011-11-15,384.77
1169 | 2011-11-16,377.41
1170 | 2011-11-17,374.94
1171 | 2011-11-20,369.01
1172 | 2011-11-21,376.51
1173 | 2011-11-22,366.99
1174 | 2011-11-24,363.57
1175 | 2011-11-27,376.12
1176 | 2011-11-28,373.2
1177 | 2011-11-29,382.2
1178 | 2011-12-01,387.93
1179 | 2011-12-02,389.7
1180 | 2011-12-05,393.01
1181 | 2011-12-06,390.95
1182 | 2011-12-07,389.09
1183 | 2011-12-08,390.66
1184 | 2011-12-09,393.62
1185 | 2011-12-11,391.84
1186 | 2011-12-12,388.81
1187 | 2011-12-13,380.19
1188 | 2011-12-14,378.94
1189 | 2011-12-15,381.02
1190 | 2011-12-18,382.21
1191 | 2011-12-19,395.95
1192 | 2011-12-20,396.44
1193 | 2011-12-21,398.55
1194 | 2011-12-22,403.43
1195 | 2011-12-26,406.53
1196 | 2011-12-27,402.64
1197 | 2011-12-28,405.12
1198 | 2011-12-29,405
1199 | 2012-01-03,411.23
1200 | 2012-01-04,413.44
1201 | 2012-01-05,418.03
1202 | 2012-01-06,422.4
1203 | 2012-01-09,421.73
1204 | 2012-01-09,423.24
1205 | 2012-01-10,422.55
1206 | 2012-01-11,421.39
1207 | 2012-01-12,419.81
1208 | 2012-01-16,424.7
1209 | 2012-01-17,429.11
1210 | 2012-01-18,427.75
1211 | 2012-01-19,420.3
1212 | 2012-01-22,427.41
1213 | 2012-01-23,420.41
1214 | 2012-01-24,446.66
1215 | 2012-01-25,444.63
1216 | 2012-01-26,447.28
1217 | 2012-01-29,453.01
1218 | 2012-01-30,456.48
1219 | 2012-02-01,456.19
1220 | 2012-02-02,455.12
1221 | 2012-02-03,459.68
1222 | 2012-02-06,463.97
1223 | 2012-02-07,468.83
1224 | 2012-02-08,476.68
1225 | 2012-02-09,493.17
1226 | 2012-02-09,493.42
1227 | 2012-02-12,502.6
1228 | 2012-02-13,509.46
1229 | 2012-02-14,497.67
1230 | 2012-02-15,502.21
1231 | 2012-02-16,502.12
1232 | 2012-02-20,514.85
1233 | 2012-02-21,513.04
1234 | 2012-02-22,516.39
1235 | 2012-02-23,522.41
1236 | 2012-02-26,525.76
1237 | 2012-02-27,535.41
1238 | 2012-02-28,542.44
1239 | 2012-03-01,544.47
1240 | 2012-03-02,545.18
1241 | 2012-03-05,533.16
1242 | 2012-03-06,530.26
1243 | 2012-03-07,530.69
1244 | 2012-03-08,541.99
1245 | 2012-03-09,545.17
1246 | 2012-03-11,552
1247 | 2012-03-12,568.1
1248 | 2012-03-13,589.58
1249 | 2012-03-14,585.56
1250 | 2012-03-15,585.57
1251 | 2012-03-18,601.1
1252 | 2012-03-19,605.96
1253 | 2012-03-20,602.5
1254 | 2012-03-21,599.34
1255 | 2012-03-22,596.05
1256 | 2012-03-25,606.98
1257 | 2012-03-26,614.48
1258 | 2012-03-27,617.62
1259 | 2012-03-28,609.86
1260 | 2012-03-29,599.55
1261 | 2012-04-02,618.63
1262 | 2012-04-03,629.32
1263 | 2012-04-04,624.31
1264 | 2012-04-05,633.68
1265 | 2012-04-09,636.23
1266 | 2012-04-09,628.44
1267 | 2012-04-10,626.2
1268 | 2012-04-11,622.77
1269 | 2012-04-12,605.23
1270 | 2012-04-15,580.13
1271 | 2012-04-16,609.7
1272 | 2012-04-17,608.34
1273 | 2012-04-18,587.44
1274 | 2012-04-19,572.98
1275 | 2012-04-22,571.7
1276 | 2012-04-23,560.28
1277 | 2012-04-24,610
1278 | 2012-04-25,607.7
1279 | 2012-04-26,603
1280 | 2012-04-29,583.98
1281 | 2012-05-01,582.13
1282 |
--------------------------------------------------------------------------------