From bc882aff5df681dd79c66ee5e43b8bbcce9b1dfb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Rivi=C3=A8re?= Date: Tue, 3 Aug 2021 18:49:40 +0200 Subject: [PATCH 1/3] software versions example with thanks to @yurivish --- test/data/software-versions.csv | 431 ++++++++++++++++++++++++++++++++ test/plots/index.js | 1 + test/plots/software-versions.js | 47 ++++ 3 files changed, 479 insertions(+) create mode 100644 test/data/software-versions.csv create mode 100644 test/plots/software-versions.js diff --git a/test/data/software-versions.csv b/test/data/software-versions.csv new file mode 100644 index 0000000000..672206b9e6 --- /dev/null +++ b/test/data/software-versions.csv @@ -0,0 +1,431 @@ +key +v324 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v369 +v348 +v348 +v348 +v348 +v368 +v368 +v368 +v368 +v368 +v368 +v359 +v369 +v359 +v369 +v324 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v368 +v348 +v368 +v368 +v368 +v368 +v348 +v368 +v348 +v348 +v348 +v369 +v348 +v368 +v368 +v368 +v368 +v368 +v368 +v368 +v359 +v359 +v359 +v359 +v324 +v348 +v348 +v348 +v368 +v368 +v348 +v348 +v348 +v348 +v348 +v368 +v368 +v368 +v348 +v348 +v348 +v348 +v348 +v368 +v369 +v348 +v348 +v348 +v348 +v368 +v368 +v368 +v368 +v368 +v368 +v368 +v359 +v369 +v359 +v359 +v324 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v368 +v368 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v368 +v368 +v348 +v369 +v348 +v348 +v348 +v368 +v368 +v368 +v368 +v368 +v368 +v368 +v359 +v359 +v359 +v359 +v324 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v368 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v368 +v368 +v368 +v368 +v368 +v368 +v368 +v359 +v359 +v359 +v359 +v324 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v369 +v348 +v348 +v348 +v368 +v368 +v368 +v368 +v368 +v368 +v368 +v359 +v368 +v369 +v359 +v324 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v369 +v348 +v348 +v348 +v348 +v368 +v368 +v368 +v368 +v368 +v368 +v368 +v359 +v369 +v369 +v359 +v324 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v368 +v369 +v348 +v348 +v348 +v348 +v348 +v368 +v368 +v368 +v368 +v368 +v368 +v368 +v369 +v368 +v368 +v359 +v324 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v369 +v348 +v348 +v368 +v368 +v368 +v368 +v368 +v368 +v368 +v369 +v359 +v369 +v359 +v324 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v348 +v368 +v368 +v368 +v368 +v368 +v368 +v368 +v369 +v369 +v359 +v359 +v368 +v368 +v368 +v368 +v369 +v368 +v368 +v368 +v368 +v369 +v381 +v381 +v381 +v381 +v381 +v381 +v381 +v381 +v381 +v381 +v381 +v381 +v429 +v429 +v429 +v429 +v429 +v429 +v429 +v429 +v429 +v429 +v429 +v429 +v429 +v429 +v429 +v429 +v429 +v429 +v429 +v429 +v429 +v429 +v429 +v429 +v429 +v429 +v429 +v429 +v429 +v429 +v429 +v429 +v429 +v429 +v429 +v429 +v429 +v429 +v429 +v429 +v429 +v429 +v429 +v429 +v429 +v429 +v429 +v429 \ No newline at end of file diff --git a/test/plots/index.js b/test/plots/index.js index 67812e74c1..694adcd6ec 100644 --- a/test/plots/index.js +++ b/test/plots/index.js @@ -88,6 +88,7 @@ export {default as sfTemperatureBandArea} from "./sf-temperature-band-area.js"; export {default as simpsonsRatings} from "./simpsons-ratings.js"; export {default as simpsonsRatingsDots} from "./simpsons-ratings-dots.js"; export {default as simpsonsViews} from "./simpsons-views.js"; +export {default as softwareVersions} from "./software-versions.js"; export {default as stackedBar} from "./stacked-bar.js"; export {default as stocksIndex} from "./stocks-index.js"; export {default as travelersYearOverYear} from "./travelers-year-over-year.js"; diff --git a/test/plots/software-versions.js b/test/plots/software-versions.js new file mode 100644 index 0000000000..6d800bfeca --- /dev/null +++ b/test/plots/software-versions.js @@ -0,0 +1,47 @@ +import * as Plot from "@observablehq/plot"; +import * as d3 from "d3"; + +export default async function() { + const data = await d3.csv("data/software-versions.csv"); + return Plot.plot({ + x: { percent: true }, + color: { scheme: "blues" }, + marks: [ + Plot.barX( + data, + Plot.stackX( + Plot.groupZ( + { + x: "proportion", + text: "first" + }, + { + fill: "key", + text: "key", + order: "value", + stroke: "black" + } + ) + ) + ), + Plot.text( + data, + Plot.stackX( + Plot.groupZ( + { + x: "proportion", + text: "first" + }, + { + z: "key", + text: "key", + order: "value" + } + ) + ) + ), + Plot.frame() + ], + width: 940 + }); +} From e5b4066b3b0788d2c38db63c7e7a0ec84eda456b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philippe=20Rivi=C3=A8re?= Date: Tue, 3 Aug 2021 21:36:27 +0200 Subject: [PATCH 2/3] forgot the test output --- test/output/softwareVersions.svg | 48 ++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 test/output/softwareVersions.svg diff --git a/test/output/softwareVersions.svg b/test/output/softwareVersions.svg new file mode 100644 index 0000000000..dd492b23df --- /dev/null +++ b/test/output/softwareVersions.svg @@ -0,0 +1,48 @@ + + + + 0 + + + 10 + + + 20 + + + 30 + + + 40 + + + 50 + + + 60 + + + 70 + + + 80 + + + 90 + + + 100 + Frequency (%) → + + + + + + + + + + + v324v381v369v359v429v368v348 + + \ No newline at end of file From 25b1b292395019d1b5943b423023c94d542e8c75 Mon Sep 17 00:00:00 2001 From: Mike Bostock Date: Tue, 3 Aug 2021 15:52:12 -0700 Subject: [PATCH 3/3] tweak example --- test/data/software-versions.csv | 862 +++++++++++++++---------------- test/output/softwareVersions.svg | 47 +- test/plots/software-versions.js | 70 ++- 3 files changed, 488 insertions(+), 491 deletions(-) diff --git a/test/data/software-versions.csv b/test/data/software-versions.csv index 672206b9e6..9f8a6496a5 100644 --- a/test/data/software-versions.csv +++ b/test/data/software-versions.csv @@ -1,431 +1,431 @@ -key -v324 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v369 -v348 -v348 -v348 -v348 -v368 -v368 -v368 -v368 -v368 -v368 -v359 -v369 -v359 -v369 -v324 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v368 -v348 -v368 -v368 -v368 -v368 -v348 -v368 -v348 -v348 -v348 -v369 -v348 -v368 -v368 -v368 -v368 -v368 -v368 -v368 -v359 -v359 -v359 -v359 -v324 -v348 -v348 -v348 -v368 -v368 -v348 -v348 -v348 -v348 -v348 -v368 -v368 -v368 -v348 -v348 -v348 -v348 -v348 -v368 -v369 -v348 -v348 -v348 -v348 -v368 -v368 -v368 -v368 -v368 -v368 -v368 -v359 -v369 -v359 -v359 -v324 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v368 -v368 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v368 -v368 -v348 -v369 -v348 -v348 -v348 -v368 -v368 -v368 -v368 -v368 -v368 -v368 -v359 -v359 -v359 -v359 -v324 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v368 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v368 -v368 -v368 -v368 -v368 -v368 -v368 -v359 -v359 -v359 -v359 -v324 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v369 -v348 -v348 -v348 -v368 -v368 -v368 -v368 -v368 -v368 -v368 -v359 -v368 -v369 -v359 -v324 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v369 -v348 -v348 -v348 -v348 -v368 -v368 -v368 -v368 -v368 -v368 -v368 -v359 -v369 -v369 -v359 -v324 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v368 -v369 -v348 -v348 -v348 -v348 -v348 -v368 -v368 -v368 -v368 -v368 -v368 -v368 -v369 -v368 -v368 -v359 -v324 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v369 -v348 -v348 -v368 -v368 -v368 -v368 -v368 -v368 -v368 -v369 -v359 -v369 -v359 -v324 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v348 -v368 -v368 -v368 -v368 -v368 -v368 -v368 -v369 -v369 -v359 -v359 -v368 -v368 -v368 -v368 -v369 -v368 -v368 -v368 -v368 -v369 -v381 -v381 -v381 -v381 -v381 -v381 -v381 -v381 -v381 -v381 -v381 -v381 -v429 -v429 -v429 -v429 -v429 -v429 -v429 -v429 -v429 -v429 -v429 -v429 -v429 -v429 -v429 -v429 -v429 -v429 -v429 -v429 -v429 -v429 -v429 -v429 -v429 -v429 -v429 -v429 -v429 -v429 -v429 -v429 -v429 -v429 -v429 -v429 -v429 -v429 -v429 -v429 -v429 -v429 -v429 -v429 -v429 -v429 -v429 -v429 \ No newline at end of file +version +324 +348 +348 +348 +348 +348 +348 +348 +348 +348 +348 +348 +348 +348 +348 +348 +348 +348 +348 +348 +348 +369 +348 +348 +348 +348 +368 +368 +368 +368 +368 +368 +359 +369 +359 +369 +324 +348 +348 +348 +348 +348 +348 +348 +348 +348 +348 +348 +368 +348 +368 +368 +368 +368 +348 +368 +348 +348 +348 +369 +348 +368 +368 +368 +368 +368 +368 +368 +359 +359 +359 +359 +324 +348 +348 +348 +368 +368 +348 +348 +348 +348 +348 +368 +368 +368 +348 +348 +348 +348 +348 +368 +369 +348 +348 +348 +348 +368 +368 +368 +368 +368 +368 +368 +359 +369 +359 +359 +324 +348 +348 +348 +348 +348 +348 +348 +368 +368 +348 +348 +348 +348 +348 +348 +348 +348 +368 +368 +348 +369 +348 +348 +348 +368 +368 +368 +368 +368 +368 +368 +359 +359 +359 +359 +324 +348 +348 +348 +348 +348 +348 +348 +348 +348 +348 +348 +348 +348 +368 +348 +348 +348 +348 +348 +348 +348 +348 +348 +348 +368 +368 +368 +368 +368 +368 +368 +359 +359 +359 +359 +324 +348 +348 +348 +348 +348 +348 +348 +348 +348 +348 +348 +348 +348 +348 +348 +348 +348 +348 +348 +348 +369 +348 +348 +348 +368 +368 +368 +368 +368 +368 +368 +359 +368 +369 +359 +324 +348 +348 +348 +348 +348 +348 +348 +348 +348 +348 +348 +348 +348 +348 +348 +348 +348 +348 +348 +369 +348 +348 +348 +348 +368 +368 +368 +368 +368 +368 +368 +359 +369 +369 +359 +324 +348 +348 +348 +348 +348 +348 +348 +348 +348 +348 +348 +348 +348 +348 +348 +348 +348 +368 +369 +348 +348 +348 +348 +348 +368 +368 +368 +368 +368 +368 +368 +369 +368 +368 +359 +324 +348 +348 +348 +348 +348 +348 +348 +348 +348 +348 +348 +348 +348 +348 +348 +348 +348 +348 +348 +348 +348 +369 +348 +348 +368 +368 +368 +368 +368 +368 +368 +369 +359 +369 +359 +324 +348 +348 +348 +348 +348 +348 +348 +348 +348 +348 +348 +348 +348 +348 +348 +348 +348 +348 +348 +348 +348 +348 +348 +348 +368 +368 +368 +368 +368 +368 +368 +369 +369 +359 +359 +368 +368 +368 +368 +369 +368 +368 +368 +368 +369 +381 +381 +381 +381 +381 +381 +381 +381 +381 +381 +381 +381 +429 +429 +429 +429 +429 +429 +429 +429 +429 +429 +429 +429 +429 +429 +429 +429 +429 +429 +429 +429 +429 +429 +429 +429 +429 +429 +429 +429 +429 +429 +429 +429 +429 +429 +429 +429 +429 +429 +429 +429 +429 +429 +429 +429 +429 +429 +429 +429 diff --git a/test/output/softwareVersions.svg b/test/output/softwareVersions.svg index dd492b23df..ef91ed9fde 100644 --- a/test/output/softwareVersions.svg +++ b/test/output/softwareVersions.svg @@ -1,48 +1,51 @@ - + 0 - + 10 - + 20 - + 30 - + 40 - + 50 - + 60 - + 70 - + 80 - + 90 - + 100 - Frequency (%) → + Frequency (%) → + + + + + + + + + - - - - - - - - + 348368429359369381324 + + + - v324v381v369v359v429v368v348 - \ No newline at end of file diff --git a/test/plots/software-versions.js b/test/plots/software-versions.js index 6d800bfeca..b691e7a069 100644 --- a/test/plots/software-versions.js +++ b/test/plots/software-versions.js @@ -3,45 +3,39 @@ import * as d3 from "d3"; export default async function() { const data = await d3.csv("data/software-versions.csv"); + + function stack({text, fill, ...options} = {}) { + return Plot.stackX( + { + ...Plot.groupZ( + { + x: "proportion", + text: "first" + }, + { + z: "version", + order: "value", + text, + fill + } + ), + reverse: true, + ...options + } + ); + } + return Plot.plot({ - x: { percent: true }, - color: { scheme: "blues" }, + x: { + percent: true + }, + color: { + scheme: "blues" + }, marks: [ - Plot.barX( - data, - Plot.stackX( - Plot.groupZ( - { - x: "proportion", - text: "first" - }, - { - fill: "key", - text: "key", - order: "value", - stroke: "black" - } - ) - ) - ), - Plot.text( - data, - Plot.stackX( - Plot.groupZ( - { - x: "proportion", - text: "first" - }, - { - z: "key", - text: "key", - order: "value" - } - ) - ) - ), - Plot.frame() - ], - width: 940 + Plot.barX(data, stack({fill: "version", insetLeft: 0.5, insetRight: 0.5})), + Plot.text(data, stack({text: "version"})), + Plot.ruleX([0, 1]) + ] }); }