diff --git a/README.md b/README.md index 259921712f..576f2e9ff2 100644 --- a/README.md +++ b/README.md @@ -106,6 +106,8 @@ Plot.plot({ }) ``` +The generated SVG element has a random class name which applies a default stylesheet. Use the top-level **className** option to specify that class name. + ### Scale options Plot passes data through [scales](https://observablehq.com/@observablehq/plot-scales) as needed before rendering marks. A scale maps abstract values such as time or temperature to visual values such as position or color. Within a given plot, marks share scales. For example, if a plot has two Plot.line marks, both share the same *x* and *y* scales for a consistent representation of data. (Plot does not currently support dual-axis charts, which are [not advised](https://blog.datawrapper.de/dualaxis/).) diff --git a/src/plot.js b/src/plot.js index 0b7079bf4d..b804f7d200 100644 --- a/src/plot.js +++ b/src/plot.js @@ -3,11 +3,14 @@ import {Axes, autoAxisTicks, autoScaleLabels} from "./axes.js"; import {facets} from "./facet.js"; import {markify} from "./mark.js"; import {Scales, autoScaleRange, applyScales, exposeScales, isOrdinalScale} from "./scales.js"; -import {filterStyles, offset} from "./style.js"; +import {filterStyles, maybeClassName, offset} from "./style.js"; export function plot(options = {}) { const {facet, style, caption} = options; + // className for inline styles + const className = maybeClassName(options.className); + // When faceting, wrap all marks in a faceting mark. if (facet !== undefined) { const {marks} = options; @@ -68,11 +71,8 @@ export function plot(options = {}) { const {width, height} = dimensions; - // A unique identifier for this plot, for inline styles. - const uid = `plot-${Math.random().toString(16).slice(2)}`; - const svg = create("svg") - .attr("class", uid) + .attr("class", className) .attr("fill", "currentColor") .attr("font-family", "system-ui, sans-serif") .attr("font-size", 10) @@ -82,14 +82,14 @@ export function plot(options = {}) { .attr("height", height) .attr("viewBox", `0 0 ${width} ${height}`) .call(svg => svg.append("style").text(` - .${uid} { + .${className} { display: block; background: white; height: auto; height: intrinsic; max-width: 100%; } - .${uid} text { + .${className} text { white-space: pre; } `)) diff --git a/src/style.js b/src/style.js index 17d5d04a1e..0fddeb2dfe 100644 --- a/src/style.js +++ b/src/style.js @@ -153,3 +153,12 @@ export function filterStyles(index, {fill: F, fillOpacity: FO, stroke: S, stroke function none(color) { return color == null || color === "none"; } + +const validClassName = /^-?([_a-z]|[\240-\377]|\\[0-9a-f]{1,6}(\r\n|[ \t\r\n\f])?|\\[^\r\n\f0-9a-f])([_a-z0-9-]|[\240-\377]|\\[0-9a-f]{1,6}(\r\n|[ \t\r\n\f])?|\\[^\r\n\f0-9a-f])*$/; + +export function maybeClassName(name) { + if (name === undefined) return `plot-${Math.random().toString(16).slice(2)}`; + name = `${name}`; + if (!validClassName.test(name)) throw new Error(`invalid class name: ${name}`); + return name; +} diff --git a/test/output/aaplBollinger.svg b/test/output/aaplBollinger.svg index b6683e8120..62fe7f700f 100644 --- a/test/output/aaplBollinger.svg +++ b/test/output/aaplBollinger.svg @@ -1,4 +1,17 @@ + diff --git a/test/output/aaplCandlestick.svg b/test/output/aaplCandlestick.svg index 2055b8bd72..8f725adc05 100644 --- a/test/output/aaplCandlestick.svg +++ b/test/output/aaplCandlestick.svg @@ -1,4 +1,17 @@ + diff --git a/test/output/aaplChangeVolume.svg b/test/output/aaplChangeVolume.svg index adaac8c26c..d220f03b71 100644 --- a/test/output/aaplChangeVolume.svg +++ b/test/output/aaplChangeVolume.svg @@ -1,4 +1,17 @@ + diff --git a/test/output/aaplClose.svg b/test/output/aaplClose.svg index 91416c9b40..eee6e4a057 100644 --- a/test/output/aaplClose.svg +++ b/test/output/aaplClose.svg @@ -1,4 +1,17 @@ + diff --git a/test/output/aaplCloseUntyped.svg b/test/output/aaplCloseUntyped.svg index f4a2ca073d..c4fb512947 100644 --- a/test/output/aaplCloseUntyped.svg +++ b/test/output/aaplCloseUntyped.svg @@ -1,4 +1,17 @@ + diff --git a/test/output/aaplMonthly.svg b/test/output/aaplMonthly.svg index b286e8e7bc..0ee551a2f0 100644 --- a/test/output/aaplMonthly.svg +++ b/test/output/aaplMonthly.svg @@ -1,4 +1,17 @@ + 0 diff --git a/test/output/aaplVolume.svg b/test/output/aaplVolume.svg index 0c470308b0..78537e9c0a 100644 --- a/test/output/aaplVolume.svg +++ b/test/output/aaplVolume.svg @@ -1,4 +1,17 @@ + diff --git a/test/output/aaplVolumeRect.svg b/test/output/aaplVolumeRect.svg index 7711e78553..9f167deed3 100644 --- a/test/output/aaplVolumeRect.svg +++ b/test/output/aaplVolumeRect.svg @@ -1,4 +1,17 @@ + diff --git a/test/output/anscombeQuartet.svg b/test/output/anscombeQuartet.svg index 9f9165ca53..191519eccb 100644 --- a/test/output/anscombeQuartet.svg +++ b/test/output/anscombeQuartet.svg @@ -1,4 +1,17 @@ + 4 diff --git a/test/output/athletesHeightWeight.svg b/test/output/athletesHeightWeight.svg index 46b7b09614..e577e44c0f 100644 --- a/test/output/athletesHeightWeight.svg +++ b/test/output/athletesHeightWeight.svg @@ -1,4 +1,17 @@ + diff --git a/test/output/athletesHeightWeightBin.svg b/test/output/athletesHeightWeightBin.svg index b632fbaeb5..42eb3298c7 100644 --- a/test/output/athletesHeightWeightBin.svg +++ b/test/output/athletesHeightWeightBin.svg @@ -1,4 +1,17 @@ + diff --git a/test/output/athletesHeightWeightBinStroke.svg b/test/output/athletesHeightWeightBinStroke.svg index 004b7cda88..7e37d3c9d5 100644 --- a/test/output/athletesHeightWeightBinStroke.svg +++ b/test/output/athletesHeightWeightBinStroke.svg @@ -1,4 +1,17 @@ + diff --git a/test/output/athletesHeightWeightSex.svg b/test/output/athletesHeightWeightSex.svg index 2010357a55..862baa6590 100644 --- a/test/output/athletesHeightWeightSex.svg +++ b/test/output/athletesHeightWeightSex.svg @@ -1,4 +1,17 @@ + diff --git a/test/output/athletesHeightWeightSport.svg b/test/output/athletesHeightWeightSport.svg index dd66776512..1327fb6541 100644 --- a/test/output/athletesHeightWeightSport.svg +++ b/test/output/athletesHeightWeightSport.svg @@ -1,4 +1,17 @@ + diff --git a/test/output/athletesNationality.svg b/test/output/athletesNationality.svg index 56ca39634c..4ecf3452d7 100644 --- a/test/output/athletesNationality.svg +++ b/test/output/athletesNationality.svg @@ -1,4 +1,17 @@ + USA diff --git a/test/output/athletesSexWeight.svg b/test/output/athletesSexWeight.svg index 0a8da4d088..d944071332 100644 --- a/test/output/athletesSexWeight.svg +++ b/test/output/athletesSexWeight.svg @@ -1,4 +1,17 @@ + diff --git a/test/output/athletesSportSex.svg b/test/output/athletesSportSex.svg index f87436fcc6..66b1c13e33 100644 --- a/test/output/athletesSportSex.svg +++ b/test/output/athletesSportSex.svg @@ -1,4 +1,17 @@ + boxing diff --git a/test/output/athletesSportWeight.svg b/test/output/athletesSportWeight.svg index eae62b5af1..770f804103 100644 --- a/test/output/athletesSportWeight.svg +++ b/test/output/athletesSportWeight.svg @@ -1,4 +1,17 @@ + aquatics diff --git a/test/output/athletesWeight.svg b/test/output/athletesWeight.svg index fdcf68684d..d75a4bb0c0 100644 --- a/test/output/athletesWeight.svg +++ b/test/output/athletesWeight.svg @@ -1,4 +1,17 @@ + 0 diff --git a/test/output/athletesWeightCumulative.svg b/test/output/athletesWeightCumulative.svg index 9fd4ea2d55..c40273fca3 100644 --- a/test/output/athletesWeightCumulative.svg +++ b/test/output/athletesWeightCumulative.svg @@ -1,4 +1,17 @@ + 0 diff --git a/test/output/availability.svg b/test/output/availability.svg index ceb4f0facb..8e11d86d8d 100644 --- a/test/output/availability.svg +++ b/test/output/availability.svg @@ -1,4 +1,17 @@ + 0 diff --git a/test/output/ballotStatusRace.svg b/test/output/ballotStatusRace.svg index 7da2a10fb6..94a279cf18 100644 --- a/test/output/ballotStatusRace.svg +++ b/test/output/ballotStatusRace.svg @@ -1,4 +1,17 @@ + WHITE diff --git a/test/output/beckerBarley.svg b/test/output/beckerBarley.svg index 76f1a56b41..6951867160 100644 --- a/test/output/beckerBarley.svg +++ b/test/output/beckerBarley.svg @@ -1,4 +1,17 @@ + Waseca diff --git a/test/output/caltrain.svg b/test/output/caltrain.svg index 882c47d303..58ff79225a 100644 --- a/test/output/caltrain.svg +++ b/test/output/caltrain.svg @@ -1,4 +1,17 @@ + Northbound Southbound 5a8p9p10p11p8a9a5p6p10a11a12p1p2p3p4p6a7a7p12a diff --git a/test/output/carsMpg.svg b/test/output/carsMpg.svg index 55d9f7375e..7fb5f47489 100644 --- a/test/output/carsMpg.svg +++ b/test/output/carsMpg.svg @@ -1,4 +1,17 @@ + diff --git a/test/output/carsParcoords.svg b/test/output/carsParcoords.svg index b661e21c56..6f52ba0409 100644 --- a/test/output/carsParcoords.svg +++ b/test/output/carsParcoords.svg @@ -1,4 +1,17 @@ + economy (mpg) diff --git a/test/output/collapsedHistogram.svg b/test/output/collapsedHistogram.svg index 641c2157ae..9fe2ad72d9 100644 --- a/test/output/collapsedHistogram.svg +++ b/test/output/collapsedHistogram.svg @@ -1,4 +1,17 @@ + 0.0 diff --git a/test/output/covidIhmeProjectedDeaths.svg b/test/output/covidIhmeProjectedDeaths.svg index e4d4cc5dd7..b414abcca3 100644 --- a/test/output/covidIhmeProjectedDeaths.svg +++ b/test/output/covidIhmeProjectedDeaths.svg @@ -1,4 +1,17 @@ + diff --git a/test/output/crimeanWarOverlapped.svg b/test/output/crimeanWarOverlapped.svg index f3e66b6e28..764cdece51 100644 --- a/test/output/crimeanWarOverlapped.svg +++ b/test/output/crimeanWarOverlapped.svg @@ -1,4 +1,17 @@ + 0 diff --git a/test/output/crimeanWarStacked.svg b/test/output/crimeanWarStacked.svg index f4bc8b5aba..b91256af6e 100644 --- a/test/output/crimeanWarStacked.svg +++ b/test/output/crimeanWarStacked.svg @@ -1,4 +1,17 @@ + 0 diff --git a/test/output/d3Survey2015Comfort.svg b/test/output/d3Survey2015Comfort.svg index e216c02538..88c81512f1 100644 --- a/test/output/d3Survey2015Comfort.svg +++ b/test/output/d3Survey2015Comfort.svg @@ -1,4 +1,17 @@ + I looked at some examples! diff --git a/test/output/d3Survey2015Why.svg b/test/output/d3Survey2015Why.svg index 96058d5212..10f558410a 100644 --- a/test/output/d3Survey2015Why.svg +++ b/test/output/d3Survey2015Why.svg @@ -1,4 +1,17 @@ + For work diff --git a/test/output/diamondsCaratPrice.svg b/test/output/diamondsCaratPrice.svg index 3ba58c457a..180950344f 100644 --- a/test/output/diamondsCaratPrice.svg +++ b/test/output/diamondsCaratPrice.svg @@ -1,4 +1,17 @@ + 1,000 diff --git a/test/output/diamondsCaratPriceDots.svg b/test/output/diamondsCaratPriceDots.svg index 58c62f357d..39c784dc48 100644 --- a/test/output/diamondsCaratPriceDots.svg +++ b/test/output/diamondsCaratPriceDots.svg @@ -1,4 +1,17 @@ + diff --git a/test/output/empty.svg b/test/output/empty.svg index 8ed5b1638b..0d6fd22680 100644 --- a/test/output/empty.svg +++ b/test/output/empty.svg @@ -1,4 +1,17 @@ + diff --git a/test/output/emptyX.svg b/test/output/emptyX.svg index acbe6ad644..085a20038f 100644 --- a/test/output/emptyX.svg +++ b/test/output/emptyX.svg @@ -1,3 +1,16 @@ + \ No newline at end of file diff --git a/test/output/figcaption.html b/test/output/figcaption.html index 4c19f71249..5dd48dad7e 100644 --- a/test/output/figcaption.html +++ b/test/output/figcaption.html @@ -1,4 +1,17 @@
+ diff --git a/test/output/figcaptionHtml.html b/test/output/figcaptionHtml.html index 5e68b9ee6e..f544abf778 100644 --- a/test/output/figcaptionHtml.html +++ b/test/output/figcaptionHtml.html @@ -1,4 +1,17 @@
+ diff --git a/test/output/firstLadies.svg b/test/output/firstLadies.svg index 9a15ccdae8..19afb3fffb 100644 --- a/test/output/firstLadies.svg +++ b/test/output/firstLadies.svg @@ -1,4 +1,17 @@ + 1740 diff --git a/test/output/footballCoverage.svg b/test/output/footballCoverage.svg index 67bc6136aa..5532b73adf 100644 --- a/test/output/footballCoverage.svg +++ b/test/output/footballCoverage.svg @@ -1,4 +1,17 @@ + 0% diff --git a/test/output/fruitSales.svg b/test/output/fruitSales.svg index 48ca9c79e7..15d0bf57d5 100644 --- a/test/output/fruitSales.svg +++ b/test/output/fruitSales.svg @@ -1,4 +1,17 @@ + bananas diff --git a/test/output/fruitSalesDate.svg b/test/output/fruitSalesDate.svg index 3b85e23fa2..d0048187c7 100644 --- a/test/output/fruitSalesDate.svg +++ b/test/output/fruitSalesDate.svg @@ -1,4 +1,17 @@ + 0 diff --git a/test/output/gistempAnomaly.svg b/test/output/gistempAnomaly.svg index 1d9dc9fd54..990236a38a 100644 --- a/test/output/gistempAnomaly.svg +++ b/test/output/gistempAnomaly.svg @@ -1,4 +1,17 @@ + diff --git a/test/output/gistempAnomalyMoving.svg b/test/output/gistempAnomalyMoving.svg index 9ee64fd805..54a990b361 100644 --- a/test/output/gistempAnomalyMoving.svg +++ b/test/output/gistempAnomalyMoving.svg @@ -1,4 +1,17 @@ + diff --git a/test/output/gistempAnomalyTransform.svg b/test/output/gistempAnomalyTransform.svg index be850c64e0..b5504e3e44 100644 --- a/test/output/gistempAnomalyTransform.svg +++ b/test/output/gistempAnomalyTransform.svg @@ -1,4 +1,17 @@ + diff --git a/test/output/googleTrendsRidgeline.svg b/test/output/googleTrendsRidgeline.svg index e2c25f1899..6215c9597d 100644 --- a/test/output/googleTrendsRidgeline.svg +++ b/test/output/googleTrendsRidgeline.svg @@ -1,4 +1,17 @@ + Australian bushfires diff --git a/test/output/gridChoropleth.svg b/test/output/gridChoropleth.svg index d3809271c4..cb4540b360 100644 --- a/test/output/gridChoropleth.svg +++ b/test/output/gridChoropleth.svg @@ -1,4 +1,17 @@ + diff --git a/test/output/hadcrutWarmingStripes.svg b/test/output/hadcrutWarmingStripes.svg index ee988b479d..9186b35a3d 100644 --- a/test/output/hadcrutWarmingStripes.svg +++ b/test/output/hadcrutWarmingStripes.svg @@ -1,4 +1,17 @@ + 1860 diff --git a/test/output/highCardinalityOrdinal.svg b/test/output/highCardinalityOrdinal.svg index 8cebdb0168..c68e342ea2 100644 --- a/test/output/highCardinalityOrdinal.svg +++ b/test/output/highCardinalityOrdinal.svg @@ -1,4 +1,17 @@ + 0 diff --git a/test/output/identityScale.svg b/test/output/identityScale.svg index 1891c465ab..987c02218e 100644 --- a/test/output/identityScale.svg +++ b/test/output/identityScale.svg @@ -1,4 +1,17 @@ + 350 diff --git a/test/output/industryUnemployment.svg b/test/output/industryUnemployment.svg index 14d0623e5a..b022feb601 100644 --- a/test/output/industryUnemployment.svg +++ b/test/output/industryUnemployment.svg @@ -1,4 +1,17 @@ + diff --git a/test/output/industryUnemploymentShare.svg b/test/output/industryUnemploymentShare.svg index 81b045c00b..fc0c732a9d 100644 --- a/test/output/industryUnemploymentShare.svg +++ b/test/output/industryUnemploymentShare.svg @@ -1,4 +1,17 @@ + diff --git a/test/output/industryUnemploymentStream.svg b/test/output/industryUnemploymentStream.svg index 855a780500..dfb92fa9f0 100644 --- a/test/output/industryUnemploymentStream.svg +++ b/test/output/industryUnemploymentStream.svg @@ -1,4 +1,17 @@ + 0 diff --git a/test/output/learningPoverty.svg b/test/output/learningPoverty.svg index a922e09523..356f95b8ab 100644 --- a/test/output/learningPoverty.svg +++ b/test/output/learningPoverty.svg @@ -1,4 +1,17 @@ + Niger diff --git a/test/output/letterFrequencyBar.svg b/test/output/letterFrequencyBar.svg index 2c4e43bd83..22f9b9d58a 100644 --- a/test/output/letterFrequencyBar.svg +++ b/test/output/letterFrequencyBar.svg @@ -1,4 +1,17 @@ + Z diff --git a/test/output/letterFrequencyCloud.svg b/test/output/letterFrequencyCloud.svg index 3eddf3d0ff..54c27a461f 100644 --- a/test/output/letterFrequencyCloud.svg +++ b/test/output/letterFrequencyCloud.svg @@ -1,3 +1,16 @@ + ETAOINSHRDLCUMWFGYPBVKJXQZ \ No newline at end of file diff --git a/test/output/letterFrequencyColumn.svg b/test/output/letterFrequencyColumn.svg index fc0786ca23..b75992a23b 100644 --- a/test/output/letterFrequencyColumn.svg +++ b/test/output/letterFrequencyColumn.svg @@ -1,4 +1,17 @@ + diff --git a/test/output/letterFrequencyDot.svg b/test/output/letterFrequencyDot.svg index f6a746b2d0..a812015761 100644 --- a/test/output/letterFrequencyDot.svg +++ b/test/output/letterFrequencyDot.svg @@ -1,4 +1,17 @@ + A diff --git a/test/output/letterFrequencyLollipop.svg b/test/output/letterFrequencyLollipop.svg index 79f9a6aef8..e406465630 100644 --- a/test/output/letterFrequencyLollipop.svg +++ b/test/output/letterFrequencyLollipop.svg @@ -1,4 +1,17 @@ + diff --git a/test/output/logDegenerate.svg b/test/output/logDegenerate.svg index e5096fee8f..6f4318b7d0 100644 --- a/test/output/logDegenerate.svg +++ b/test/output/logDegenerate.svg @@ -1,4 +1,17 @@ + 100m diff --git a/test/output/metroInequality.svg b/test/output/metroInequality.svg index eb92f3d6f7..64cd65510c 100644 --- a/test/output/metroInequality.svg +++ b/test/output/metroInequality.svg @@ -1,4 +1,17 @@ + diff --git a/test/output/metroInequalityChange.svg b/test/output/metroInequalityChange.svg index e3defb339e..5887dcfb94 100644 --- a/test/output/metroInequalityChange.svg +++ b/test/output/metroInequalityChange.svg @@ -1,4 +1,17 @@ + diff --git a/test/output/metroUnemployment.svg b/test/output/metroUnemployment.svg index 9477e325e1..1f4c74d76f 100644 --- a/test/output/metroUnemployment.svg +++ b/test/output/metroUnemployment.svg @@ -1,4 +1,17 @@ + 0 diff --git a/test/output/metroUnemploymentHighlight.svg b/test/output/metroUnemploymentHighlight.svg index 30266d4301..93816e0867 100644 --- a/test/output/metroUnemploymentHighlight.svg +++ b/test/output/metroUnemploymentHighlight.svg @@ -1,4 +1,17 @@ + diff --git a/test/output/metroUnemploymentIndex.svg b/test/output/metroUnemploymentIndex.svg index b8898c5821..99d4812bd7 100644 --- a/test/output/metroUnemploymentIndex.svg +++ b/test/output/metroUnemploymentIndex.svg @@ -1,4 +1,17 @@ + 4 diff --git a/test/output/metroUnemploymentMoving.svg b/test/output/metroUnemploymentMoving.svg index b622437474..2089f6ec8c 100644 --- a/test/output/metroUnemploymentMoving.svg +++ b/test/output/metroUnemploymentMoving.svg @@ -1,4 +1,17 @@ + 0 diff --git a/test/output/metroUnemploymentNormalize.svg b/test/output/metroUnemploymentNormalize.svg index 6a1ed6773c..67ceeab607 100644 --- a/test/output/metroUnemploymentNormalize.svg +++ b/test/output/metroUnemploymentNormalize.svg @@ -1,4 +1,17 @@ + diff --git a/test/output/metroUnemploymentRidgeline.svg b/test/output/metroUnemploymentRidgeline.svg index 2d938f51ca..d6131acf22 100644 --- a/test/output/metroUnemploymentRidgeline.svg +++ b/test/output/metroUnemploymentRidgeline.svg @@ -1,4 +1,17 @@ + Detroit-Livonia-Dearborn, MI Met Div diff --git a/test/output/mobyDickFaceted.svg b/test/output/mobyDickFaceted.svg index 1e19fd21e5..aa5780bfe0 100644 --- a/test/output/mobyDickFaceted.svg +++ b/test/output/mobyDickFaceted.svg @@ -1,4 +1,17 @@ + lower diff --git a/test/output/mobyDickLetterFrequency.svg b/test/output/mobyDickLetterFrequency.svg index 4fce8141b1..8afd29c6a8 100644 --- a/test/output/mobyDickLetterFrequency.svg +++ b/test/output/mobyDickLetterFrequency.svg @@ -1,4 +1,17 @@ + diff --git a/test/output/mobyDickLetterPairs.svg b/test/output/mobyDickLetterPairs.svg index e3deba5338..bc24f7013e 100644 --- a/test/output/mobyDickLetterPairs.svg +++ b/test/output/mobyDickLetterPairs.svg @@ -1,4 +1,17 @@ + * diff --git a/test/output/mobyDickLetterPosition.svg b/test/output/mobyDickLetterPosition.svg index 9d04beba07..278b11a11e 100644 --- a/test/output/mobyDickLetterPosition.svg +++ b/test/output/mobyDickLetterPosition.svg @@ -1,4 +1,17 @@ + A diff --git a/test/output/mobyDickLetterRelativeFrequency.svg b/test/output/mobyDickLetterRelativeFrequency.svg index a8cb7c7f0d..b74550f03b 100644 --- a/test/output/mobyDickLetterRelativeFrequency.svg +++ b/test/output/mobyDickLetterRelativeFrequency.svg @@ -1,4 +1,17 @@ + diff --git a/test/output/morleyBoxplot.svg b/test/output/morleyBoxplot.svg index 7bec204fc3..9bc03f7b6a 100644 --- a/test/output/morleyBoxplot.svg +++ b/test/output/morleyBoxplot.svg @@ -1,4 +1,17 @@ + 1 diff --git a/test/output/moviesProfitByGenre.svg b/test/output/moviesProfitByGenre.svg index 57d282e5f8..4c5470692e 100644 --- a/test/output/moviesProfitByGenre.svg +++ b/test/output/moviesProfitByGenre.svg @@ -1,4 +1,17 @@ + Adventure diff --git a/test/output/musicRevenue.svg b/test/output/musicRevenue.svg index f2fb10b350..2f1ba05678 100644 --- a/test/output/musicRevenue.svg +++ b/test/output/musicRevenue.svg @@ -1,4 +1,17 @@ + diff --git a/test/output/ordinalBar.svg b/test/output/ordinalBar.svg index 3644911c5c..116701e7f2 100644 --- a/test/output/ordinalBar.svg +++ b/test/output/ordinalBar.svg @@ -1,4 +1,17 @@ + diff --git a/test/output/penguinCulmen.svg b/test/output/penguinCulmen.svg index 0ac4dec47c..a271a69343 100644 --- a/test/output/penguinCulmen.svg +++ b/test/output/penguinCulmen.svg @@ -1,4 +1,17 @@ + Adelie diff --git a/test/output/penguinCulmenArray.svg b/test/output/penguinCulmenArray.svg index b2a8019438..e88a3ae514 100644 --- a/test/output/penguinCulmenArray.svg +++ b/test/output/penguinCulmenArray.svg @@ -1,4 +1,17 @@ + Adelie diff --git a/test/output/penguinIslandUnknown.svg b/test/output/penguinIslandUnknown.svg index 2e8e9d7139..ab0169850f 100644 --- a/test/output/penguinIslandUnknown.svg +++ b/test/output/penguinIslandUnknown.svg @@ -1,4 +1,17 @@ + 0 diff --git a/test/output/penguinMass.svg b/test/output/penguinMass.svg index 301bdeddc7..74d5fa9c21 100644 --- a/test/output/penguinMass.svg +++ b/test/output/penguinMass.svg @@ -1,4 +1,17 @@ + diff --git a/test/output/penguinMassSex.svg b/test/output/penguinMassSex.svg index 4287f16ce3..6a37e0767e 100644 --- a/test/output/penguinMassSex.svg +++ b/test/output/penguinMassSex.svg @@ -1,4 +1,17 @@ + FEMALE diff --git a/test/output/penguinMassSexSpecies.svg b/test/output/penguinMassSexSpecies.svg index f6b030345a..e526ecc4c7 100644 --- a/test/output/penguinMassSexSpecies.svg +++ b/test/output/penguinMassSexSpecies.svg @@ -1,4 +1,17 @@ + Adelie diff --git a/test/output/penguinMassSpecies.svg b/test/output/penguinMassSpecies.svg index 2cce7451c4..27bbfe477f 100644 --- a/test/output/penguinMassSpecies.svg +++ b/test/output/penguinMassSpecies.svg @@ -1,4 +1,17 @@ + diff --git a/test/output/penguinSex.svg b/test/output/penguinSex.svg index 09bf5bba8f..6603cecba0 100644 --- a/test/output/penguinSex.svg +++ b/test/output/penguinSex.svg @@ -1,4 +1,17 @@ + 0 diff --git a/test/output/penguinSexMassCulmenSpecies.svg b/test/output/penguinSexMassCulmenSpecies.svg index c6da8b9d32..6a2393189f 100644 --- a/test/output/penguinSexMassCulmenSpecies.svg +++ b/test/output/penguinSexMassCulmenSpecies.svg @@ -1,4 +1,17 @@ + 34 diff --git a/test/output/penguinSpeciesGroup.svg b/test/output/penguinSpeciesGroup.svg index 7392e8a0b1..047d378d9e 100644 --- a/test/output/penguinSpeciesGroup.svg +++ b/test/output/penguinSpeciesGroup.svg @@ -1,4 +1,17 @@ + 0.0 diff --git a/test/output/penguinSpeciesIsland.svg b/test/output/penguinSpeciesIsland.svg index af2dc227cc..ac940b04c4 100644 --- a/test/output/penguinSpeciesIsland.svg +++ b/test/output/penguinSpeciesIsland.svg @@ -1,4 +1,17 @@ + diff --git a/test/output/penguinSpeciesIslandRelative.svg b/test/output/penguinSpeciesIslandRelative.svg index 36c24fc053..9040d016e7 100644 --- a/test/output/penguinSpeciesIslandRelative.svg +++ b/test/output/penguinSpeciesIslandRelative.svg @@ -1,4 +1,17 @@ + 0 diff --git a/test/output/penguinSpeciesIslandSex.svg b/test/output/penguinSpeciesIslandSex.svg index dad9acedd4..6397ed3552 100644 --- a/test/output/penguinSpeciesIslandSex.svg +++ b/test/output/penguinSpeciesIslandSex.svg @@ -1,4 +1,17 @@ + 0 diff --git a/test/output/policeDeaths.svg b/test/output/policeDeaths.svg index 74a177662b..6e050ce25f 100644 --- a/test/output/policeDeaths.svg +++ b/test/output/policeDeaths.svg @@ -1,4 +1,17 @@ + Share of deaths by police diff --git a/test/output/policeDeathsBar.svg b/test/output/policeDeathsBar.svg index f35b68baf7..1d78529b4b 100644 --- a/test/output/policeDeathsBar.svg +++ b/test/output/policeDeathsBar.svg @@ -1,4 +1,17 @@ + 0 diff --git a/test/output/polylinear.svg b/test/output/polylinear.svg index 41057b6aaa..8a2364bf49 100644 --- a/test/output/polylinear.svg +++ b/test/output/polylinear.svg @@ -1,4 +1,17 @@ + diff --git a/test/output/randomBins.svg b/test/output/randomBins.svg index f936b3c0a0..a6fb592c7e 100644 --- a/test/output/randomBins.svg +++ b/test/output/randomBins.svg @@ -1,4 +1,17 @@ + 0 diff --git a/test/output/randomBinsXY.svg b/test/output/randomBinsXY.svg index 9b55445c0d..6e5044b868 100644 --- a/test/output/randomBinsXY.svg +++ b/test/output/randomBinsXY.svg @@ -1,4 +1,17 @@ + 2 diff --git a/test/output/randomQuantile.svg b/test/output/randomQuantile.svg index abfcadd360..33acba311c 100644 --- a/test/output/randomQuantile.svg +++ b/test/output/randomQuantile.svg @@ -1,4 +1,17 @@ + 0.0 diff --git a/test/output/randomWalk.svg b/test/output/randomWalk.svg index 6525004a27..97c46a35ee 100644 --- a/test/output/randomWalk.svg +++ b/test/output/randomWalk.svg @@ -1,4 +1,17 @@ + −35 diff --git a/test/output/seattlePrecipitationRule.svg b/test/output/seattlePrecipitationRule.svg index cde4b11a5a..15a4fdea9a 100644 --- a/test/output/seattlePrecipitationRule.svg +++ b/test/output/seattlePrecipitationRule.svg @@ -1,4 +1,17 @@ + 2012 diff --git a/test/output/seattleTemperatureBand.svg b/test/output/seattleTemperatureBand.svg index 7a1ccd473e..a62b7010fb 100644 --- a/test/output/seattleTemperatureBand.svg +++ b/test/output/seattleTemperatureBand.svg @@ -1,4 +1,17 @@ + diff --git a/test/output/seattleTemperatureCell.svg b/test/output/seattleTemperatureCell.svg index 5dc9c5ca49..91530dac50 100644 --- a/test/output/seattleTemperatureCell.svg +++ b/test/output/seattleTemperatureCell.svg @@ -1,4 +1,17 @@ + J diff --git a/test/output/sfCovidDeaths.svg b/test/output/sfCovidDeaths.svg index 6c5859662a..8c6f9eb090 100644 --- a/test/output/sfCovidDeaths.svg +++ b/test/output/sfCovidDeaths.svg @@ -1,4 +1,17 @@ + 0 diff --git a/test/output/sfTemperatureBand.svg b/test/output/sfTemperatureBand.svg index 062a68190d..737eccde59 100644 --- a/test/output/sfTemperatureBand.svg +++ b/test/output/sfTemperatureBand.svg @@ -1,4 +1,17 @@ + diff --git a/test/output/sfTemperatureBandArea.svg b/test/output/sfTemperatureBandArea.svg index 60629665ea..ad02f0f327 100644 --- a/test/output/sfTemperatureBandArea.svg +++ b/test/output/sfTemperatureBandArea.svg @@ -1,4 +1,17 @@ + diff --git a/test/output/simpsonsRatings.svg b/test/output/simpsonsRatings.svg index ff8da80318..1f15883e28 100644 --- a/test/output/simpsonsRatings.svg +++ b/test/output/simpsonsRatings.svg @@ -1,4 +1,17 @@ + diff --git a/test/output/simpsonsRatingsDots.svg b/test/output/simpsonsRatingsDots.svg index 5119405eae..29cc022806 100644 --- a/test/output/simpsonsRatingsDots.svg +++ b/test/output/simpsonsRatingsDots.svg @@ -1,4 +1,17 @@ + 4.5 diff --git a/test/output/simpsonsViews.svg b/test/output/simpsonsViews.svg index 8299d765b2..21cfc1a1d9 100644 --- a/test/output/simpsonsViews.svg +++ b/test/output/simpsonsViews.svg @@ -1,4 +1,17 @@ + diff --git a/test/output/singleValueBar.svg b/test/output/singleValueBar.svg index 8c5904f59d..3e7b955735 100644 --- a/test/output/singleValueBar.svg +++ b/test/output/singleValueBar.svg @@ -1,4 +1,17 @@ + 0 diff --git a/test/output/singleValueBin.svg b/test/output/singleValueBin.svg index c28ffd4936..e4e1f47112 100644 --- a/test/output/singleValueBin.svg +++ b/test/output/singleValueBin.svg @@ -1,4 +1,17 @@ + 0.0 diff --git a/test/output/softwareVersions.svg b/test/output/softwareVersions.svg index d96ba58be4..630e8232fc 100644 --- a/test/output/softwareVersions.svg +++ b/test/output/softwareVersions.svg @@ -1,4 +1,17 @@ + 0 diff --git a/test/output/stackedBar.svg b/test/output/stackedBar.svg index dcbb87ffd6..57334060ec 100644 --- a/test/output/stackedBar.svg +++ b/test/output/stackedBar.svg @@ -1,4 +1,17 @@ + 0% diff --git a/test/output/stackedRect.svg b/test/output/stackedRect.svg index cd04d62062..469439acef 100644 --- a/test/output/stackedRect.svg +++ b/test/output/stackedRect.svg @@ -1,4 +1,17 @@ + 0% diff --git a/test/output/stargazers.svg b/test/output/stargazers.svg index 259d320e8e..59dbe25523 100644 --- a/test/output/stargazers.svg +++ b/test/output/stargazers.svg @@ -1,4 +1,17 @@ + diff --git a/test/output/stargazersBinned.svg b/test/output/stargazersBinned.svg index ebef0dfd2e..71e5ee2814 100644 --- a/test/output/stargazersBinned.svg +++ b/test/output/stargazersBinned.svg @@ -1,4 +1,17 @@ + diff --git a/test/output/stargazersHourly.svg b/test/output/stargazersHourly.svg index 60f8205728..8836356bd7 100644 --- a/test/output/stargazersHourly.svg +++ b/test/output/stargazersHourly.svg @@ -1,4 +1,17 @@ + diff --git a/test/output/stargazersHourlyGroup.svg b/test/output/stargazersHourlyGroup.svg index 0b8f4d2e83..73fa33f0b5 100644 --- a/test/output/stargazersHourlyGroup.svg +++ b/test/output/stargazersHourlyGroup.svg @@ -1,4 +1,17 @@ + diff --git a/test/output/stocksIndex.svg b/test/output/stocksIndex.svg index 651567bc42..dc86bdfa30 100644 --- a/test/output/stocksIndex.svg +++ b/test/output/stocksIndex.svg @@ -1,4 +1,17 @@ + diff --git a/test/output/travelersYearOverYear.svg b/test/output/travelersYearOverYear.svg index 2d9a6eea47..ec4147f763 100644 --- a/test/output/travelersYearOverYear.svg +++ b/test/output/travelersYearOverYear.svg @@ -1,4 +1,17 @@ + diff --git a/test/output/uniformRandomDifference.svg b/test/output/uniformRandomDifference.svg index e83971ba90..92e6ef9932 100644 --- a/test/output/uniformRandomDifference.svg +++ b/test/output/uniformRandomDifference.svg @@ -1,4 +1,17 @@ + diff --git a/test/output/untypedDateBin.svg b/test/output/untypedDateBin.svg index 8f98687f2f..019bdd7777 100644 --- a/test/output/untypedDateBin.svg +++ b/test/output/untypedDateBin.svg @@ -1,4 +1,17 @@ + 0 diff --git a/test/output/usCongressAge.svg b/test/output/usCongressAge.svg index 9a7f5fbc6c..9567c03ff0 100644 --- a/test/output/usCongressAge.svg +++ b/test/output/usCongressAge.svg @@ -1,4 +1,17 @@ + diff --git a/test/output/usCongressAgeGender.svg b/test/output/usCongressAgeGender.svg index 2292f46852..96238f3047 100644 --- a/test/output/usCongressAgeGender.svg +++ b/test/output/usCongressAgeGender.svg @@ -1,4 +1,17 @@ + diff --git a/test/output/usPopulationStateAge.svg b/test/output/usPopulationStateAge.svg index 5a76c5dd1e..0673c33a74 100644 --- a/test/output/usPopulationStateAge.svg +++ b/test/output/usPopulationStateAge.svg @@ -1,4 +1,17 @@ + diff --git a/test/output/usPopulationStateAgeDots.svg b/test/output/usPopulationStateAgeDots.svg index eb9aa4dae1..9c3721bf57 100644 --- a/test/output/usPopulationStateAgeDots.svg +++ b/test/output/usPopulationStateAgeDots.svg @@ -1,4 +1,17 @@ + diff --git a/test/output/usPresidentialElection2020.svg b/test/output/usPresidentialElection2020.svg index 185a1e9481..cf123b6d24 100644 --- a/test/output/usPresidentialElection2020.svg +++ b/test/output/usPresidentialElection2020.svg @@ -1,4 +1,17 @@ + diff --git a/test/output/usPresidentialForecast2016.svg b/test/output/usPresidentialForecast2016.svg index c9110163fa..ca72be40a8 100644 --- a/test/output/usPresidentialForecast2016.svg +++ b/test/output/usPresidentialForecast2016.svg @@ -1,4 +1,17 @@ + 0.0 diff --git a/test/output/usRetailSales.svg b/test/output/usRetailSales.svg index 611b71bb38..bdf4f3fe82 100644 --- a/test/output/usRetailSales.svg +++ b/test/output/usRetailSales.svg @@ -1,4 +1,17 @@ + diff --git a/test/output/usStatePopulationChange.svg b/test/output/usStatePopulationChange.svg index e797cec942..3905f9da22 100644 --- a/test/output/usStatePopulationChange.svg +++ b/test/output/usStatePopulationChange.svg @@ -1,4 +1,17 @@ + diff --git a/test/output/wordCloud.svg b/test/output/wordCloud.svg index f289e446b4..b8e771fb93 100644 --- a/test/output/wordCloud.svg +++ b/test/output/wordCloud.svg @@ -1,3 +1,16 @@ + a (69)about (7)account (2)ago (2)air (2)all (23)almost (3)aloft (2)always (2)am (4)among (2)an (4)and (73)any (2)are (5)as (26)at (5)be (9)because (4)been (2)before (3)begin (2)being (4)besides (2)better (2)between (2)broiled (3)but (15)by (8)can (6)cannot (2)captain (2)care (2)chief (2)city (2)come (3)commodore (2)content (2)cook (3)could (2)country (2)crowds (2)deck (2)deep (2)did (5)distant (2)do (8)does (2)down (6)each (2)else (2)ever (5)every (4)exactly (2)fates (2)find (2)first (4)fixed (2)for (16)forecastle (2)from (11)get (6)glory (2)go (12)going (4)grand (3)great (3)grow (2)hand (3)have (8)having (2)he (10)head (4)healthy (2)here (5)high (4)hill (2)him (3)himself (2)his (10)how (3)however (2)hunks (2)i (43)if (9)image (3)in (48)into (9)is (34)ishmael (2)it (33)its (2)just (2)land (6)lead (2)leaders (2)leaves (2)let (2)like (6)little (4)long (2)look (2)magic (2)make (2)man (3)mast (2)may (3)me (25)meadow (2)mean (2)meaning (2)men (4)metaphysical (2)miles (3)money (4)more (6)most (5)motives (2)much (4)must (4)my (14)myself (3)never (5)no (6)not (11)nothing (3)now (5)ocean (2)of (81)off (3)officer (2)old (6)on (12)once (2)one (10)or (10)order (2)other (5)others (2)ourselves (2)out (3)over (2)own (2)paid (2)part (7)particular (2)parts (3)passenger (4)passengers (3)pay (2)paying (3)perhaps (2)phantom (2)plunged (2)point (2)previous (2)purse (3)requires (2)respectfully (2)reveries (2)right (3)robust (2)round (2)sail (2)sailor (5)same (5)say (3)schoolmaster (2)scores (2)sea (13)seas (2)see (6)set (3)shepherds (2)ship (3)ships (3)should (3)sight (2)sleep (2)so (4)some (11)something (3)sort (3)soul (3)spar (2)stand (5)still (3)stream (2)streets (2)strong (2)such (5)take (6)tell (4)than (4)that (31)the (124)their (4)them (5)themselves (2)then (5)there (16)these (4)they (12)thing (2)things (4)think (2)thinks (2)this (17)those (4)though (7)thousand (2)thousands (2)thump (2)time (6)to (53)two (4)under (2)unless (2)up (4)upon (9)voyage (6)warehouses (2)was (8)water (8)way (6)we (3)well (2)were (7)whale (3)whaling (5)what (9)when (5)whenever (5)where (2)which (4)who (5)why (7)wild (2)will (6)winds (3)with (13)without (3)world (4)would (4)yet (4)yonder (2)you (23)your (6) \ No newline at end of file diff --git a/test/output/wordLengthMobyDick.svg b/test/output/wordLengthMobyDick.svg index 03d851c34a..3f6e77c180 100644 --- a/test/output/wordLengthMobyDick.svg +++ b/test/output/wordLengthMobyDick.svg @@ -1,4 +1,17 @@ + diff --git a/test/plot.js b/test/plot.js index 9a5dc33b82..f5b8716f58 100644 --- a/test/plot.js +++ b/test/plot.js @@ -9,8 +9,10 @@ for (const [name, plot] of Object.entries(plots)) { it(`plot ${name}`, async () => { const root = await plot(); const [ext, svg] = root.tagName === "svg" ? ["svg", root] : ["html", root.querySelector("svg")]; - svg.setAttribute("class", "plot"); // strip uid - svg.querySelector("style").remove(); // strip stylesheet (contains uid) + const uid = svg.getAttribute("class"); + svg.setAttribute("class", "plot"); + const style = svg.querySelector("style"); + style.textContent = style.textContent.replace(new RegExp(`[.]${uid}`, "g"), ".plot"); svg.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns", "http://www.w3.org/2000/svg"); svg.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns:xlink", "http://www.w3.org/1999/xlink"); const actual = beautify.html(root.outerHTML, {indent_size: 2});