37
|
1
|
;; from https://github.com/Lisp-Stat/plot/blob/master/src/vega/vega-datasets.lisp |
|
2
|
(defpackage :examples/vegadat |
|
3
|
(:use :cl :std :net/fetch :dat) |
|
4
|
(:export |
|
5
|
:*vega-datasets* :*vega-dataset-base-url* |
38
|
6
|
:fetch-vega-datasets :purge-vega-datasets)) |
37
|
7
|
|
|
8
|
(in-package :examples/vegadat) |
|
9
|
|
|
10
|
(defparameter *vega-dataset-base-url* "http://raw.githubusercontent.com/vega/vega-datasets/main/data/" |
|
11
|
"Base URL for datasets included in Vega") |
|
12
|
|
|
13
|
(defparameter *vega-dataset-stash* "vega/") |
|
14
|
|
|
15
|
|
|
16
|
;; (gethash :airpots *vega-datasets*) |
|
17
|
(defvar *vega-datasets* (make-hash-table :size 66 :test #'equal) |
|
18
|
"All Vega example data sets. k=symbol,v=url") |
|
19
|
|
|
20
|
(defun push-dataset (key) |
|
21
|
"Push a dataset to *VEGA-DATASETS* by filename." |
|
22
|
(let ((val (concatenate 'string *vega-dataset-base-url* key))) |
|
23
|
(setf (gethash key *vega-datasets*) val))) |
|
24
|
|
|
25
|
;; 66 files total, mostly json and csv. 1 tsv file, 1 arrow file. |
|
26
|
(mapc #'push-dataset |
|
27
|
'("airports.csv" "annual-precip.json" "anscombe.json" "barley.json" "budget.json" "budgets.json" "burtin.json" "cars.json" "countries.json" "crimea.json" "driving.json" "earthquakes.json" "flare-dependencies.json" "flare.json" "flights-10k.json" "flights-200k.json" "flights-20k.json" "flights-2k.json" "flights-5k.json" "football.json" "gapminder.json" "income.json" "jobs.json" "londonBoroughs.json" "londonCentroids.json" "londonTubeLines.json" "miserables.json" "monarchs.json" "movies.json" "normal-2d.json" "obesity.json" "ohlc.json" "penguins.json" "points.json" "political-contributions.json" "population.json" "udistrict.json" "unemployment-across-industries.json" "uniform-2d.json" "us-10m.json" "us-state-capitals.json" "volcano.json" "weather.json" "wheat.json" "world-110m.json" "airports.csv" "birdstrikes.csv" "co2-concentration.csv" "disasters.csv" "flights-3m.csv" "flights-airport.csv" "gapminder-health-income.csv" "github.csv" "iowa-electricity.csv" "la-riots.csv" "lookup_groups.csv" "lookup_people.csv" "population_engineers_hurricanes.csv" "seattle-weather-hourly-normals.csv" "seattle-weather.csv" "sp500-2000.csv" "sp500.csv" "stocks.csv" "us-employment.csv" "weather.csv" "windvectors.csv" "zipcodes.csv" "unemployment.tsv" "flights-200k.arrow")) |
|
28
|
|
|
29
|
(defun fetch-vega-datasets () |
|
30
|
(ensure-directories-exist *vega-dataset-stash*) |
|
31
|
(maphash-keys |
|
32
|
(lambda (x) (download (gethash x *vega-datasets*) |
|
33
|
(merge-pathnames x *vega-dataset-stash*))) |
|
34
|
*vega-datasets*)) |
|
35
|
|
|
36
|
(defun purge-vega-datasets () |
|
37
|
(std:when-let ((stash (probe-file *vega-dataset-stash*))) |
|
38
|
(sb-ext:delete-directory stash :recursive t))) |