@fundar/data-chart-telling 1.1.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +32 -0
- package/README.md +6 -6
- package/dist/configuration/config.svelte.d.ts +1 -1
- package/dist/configuration/config.svelte.js +165 -100
- package/dist/configuration/themes/index.d.ts +5 -1428
- package/dist/index.d.ts +23 -14
- package/dist/index.js +20 -11
- package/dist/layout/base/BasePlotLayout.svelte +115 -50
- package/dist/layout/base/BasePlotLayout.svelte.d.ts +1 -38
- package/dist/layout/coordinates/CoordinatesLayout.svelte +42 -40
- package/dist/layout/coordinates/CoordinatesLayout.svelte.d.ts +0 -2
- package/dist/layout/coordinates/ProjectionZoom.svelte +48 -0
- package/dist/layout/coordinates/ProjectionZoom.svelte.d.ts +10 -0
- package/dist/layout/coordinates/ZoomedProjection.d.ts +11 -0
- package/dist/layout/coordinates/ZoomedProjection.js +24 -0
- package/dist/layout/coordinates/camera.svelte.js +11 -8
- package/dist/layout/coordinates/projections/argentina.js +1 -1
- package/dist/layout/coordinates/projections/fit.d.ts +1 -1
- package/dist/layout/coordinates/projections/fit.js +1 -1
- package/dist/layout/coordinates/zoom.svelte.d.ts +4 -5
- package/dist/layout/coordinates/zoom.svelte.js +4 -5
- package/dist/layout/facet/FacetLayout.svelte +1 -1
- package/dist/layout/facet/config.js +1 -1
- package/dist/layout/figure/Figure.svelte +2 -0
- package/dist/layout/geometry/GeometryLayout.svelte +14 -9
- package/dist/layout/geometry/GeometryLayout.svelte.d.ts +0 -3
- package/dist/layout/geometry/MarkerOffset.svelte +28 -0
- package/dist/layout/geometry/MarkerOffset.svelte.d.ts +13 -0
- package/dist/layout/grid/GridCell.svelte +6 -8
- package/dist/layout/legend/ContinuousSection.svelte +44 -9
- package/dist/layout/legend/DiscreteBadgeItem.svelte +2 -2
- package/dist/layout/legend/DiscreteSection.svelte +2 -2
- package/dist/layout/legend/DiscreteSymbolIcon.svelte +1 -1
- package/dist/layout/legend/LegendChannels.js +36 -12
- package/dist/layout/legend/LegendLayout.svelte +9 -1
- package/dist/layout/legend/LegendState.svelte.d.ts +4 -0
- package/dist/layout/legend/LegendState.svelte.js +20 -3
- package/dist/layout/legend/SizeSection.svelte +1 -1
- package/dist/layout/margins/PlotMargins.svelte.d.ts +2 -5
- package/dist/layout/margins/PlotMargins.svelte.js +4 -8
- package/dist/layout/plot/Slice.d.ts +5 -1
- package/dist/layout/plot/Slice.js +14 -4
- package/dist/layout/scales/NiceTicks.d.ts +3 -0
- package/dist/layout/scales/NiceTicks.js +4 -0
- package/dist/layout/scales/ScalesLayout.svelte +72 -7
- package/dist/layout/scales/ScalesLayout.svelte.d.ts +5 -0
- package/dist/layout/scales/SveltePlotScale.d.ts +2 -2
- package/dist/layout/scales/SveltePlotScale.js +13 -6
- package/dist/layout/scales/TickLabels.d.ts +32 -0
- package/dist/layout/scales/TickLabels.js +55 -0
- package/dist/layout/styles/StylesLayout.svelte +2 -2
- package/dist/layout/styles/ValueLabels.d.ts +33 -5
- package/dist/layout/styles/ValueLabels.js +80 -21
- package/dist/layout/timeline/TimelineLayout.svelte +1 -1
- package/dist/layout/tooltip/Tooltip.svelte +4 -4
- package/dist/layout/tooltip/Tooltip.svelte.d.ts +4 -4
- package/dist/layout/tooltip/TooltipState.svelte.js +1 -1
- package/dist/markers/MarkerKinds.d.ts +5 -0
- package/dist/markers/MarkerKinds.js +1 -0
- package/dist/markers/area/AreaMarker.svelte +15 -63
- package/dist/markers/arrow/ArrowMarker.svelte +51 -9
- package/dist/markers/bar/BarMarker.svelte +8 -4
- package/dist/markers/bollinger/BollingerMarker.svelte +33 -18
- package/dist/markers/box/BoxMarker.svelte +40 -9
- package/dist/markers/delta/Delta.js +1 -1
- package/dist/markers/dot/DotMarker.svelte +24 -27
- package/dist/markers/image/ImageMarker.svelte +17 -12
- package/dist/markers/inset/InsetMarker.svelte +2 -2
- package/dist/markers/line/LineMarker.svelte +1 -0
- package/dist/markers/link/LinkMarker.svelte +174 -29
- package/dist/markers/regression/RegressionMarker.svelte +16 -33
- package/dist/markers/rule/RuleMarker.svelte +9 -3
- package/dist/markers/text/Declutter.d.ts +4 -0
- package/dist/markers/text/Declutter.js +26 -11
- package/dist/markers/text/TextMarker.svelte +91 -48
- package/dist/markers/tick/TickMarker.svelte +27 -25
- package/dist/markers/utils/MarkerChannels.d.ts +24 -0
- package/dist/markers/utils/MarkerChannels.js +42 -7
- package/dist/markers/utils/RowOffset.d.ts +23 -0
- package/dist/markers/utils/RowOffset.js +23 -0
- package/dist/markers/utils/RowOffsetMarks.svelte +30 -0
- package/dist/markers/utils/RowOffsetMarks.svelte.d.ts +33 -0
- package/dist/markers/utils/RowStroke.d.ts +31 -0
- package/dist/markers/utils/RowStroke.js +28 -0
- package/dist/markers/violin/ViolinMarker.svelte +75 -0
- package/dist/markers/violin/ViolinMarker.svelte.d.ts +7 -0
- package/dist/markers/violin/ViolinProfiles.d.ts +29 -0
- package/dist/markers/violin/ViolinProfiles.js +55 -0
- package/dist/markers/waffle/WaffleMarker.svelte +17 -37
- package/dist/phases/Pipeline.d.ts +5 -0
- package/dist/phases/Pipeline.js +5 -0
- package/dist/phases/data/DataPhase.js +3 -3
- package/dist/phases/data/PlotAxes.d.ts +10 -0
- package/dist/phases/data/PlotAxes.js +14 -1
- package/dist/phases/facet/FacetPanels.d.ts +1 -0
- package/dist/phases/facet/FacetPanels.js +1 -0
- package/dist/phases/mapping/MappingPhase.js +1 -1
- package/dist/phases/markers/MarkersPhase.js +2 -1
- package/dist/phases/scales/CategoryOrder.d.ts +23 -0
- package/dist/phases/scales/CategoryOrder.js +73 -0
- package/dist/phases/scales/ScalesPhase.js +21 -7
- package/dist/phases/sharedScales/SharedScalesPhase.d.ts +3 -2
- package/dist/phases/sharedScales/SharedScalesPhase.js +5 -2
- package/dist/phases/statistics/Statistics.d.ts +10 -6
- package/dist/phases/statistics/Statistics.js +20 -10
- package/dist/phases/statistics/StatisticsPhase.js +7 -2
- package/dist/phases/statistics/methods/BollingerStatistic.d.ts +1 -1
- package/dist/phases/statistics/methods/BollingerStatistic.js +13 -11
- package/dist/phases/statistics/methods/BoxStatistic.d.ts +1 -1
- package/dist/phases/statistics/methods/BoxStatistic.js +14 -12
- package/dist/phases/statistics/methods/Density2dStatistic.d.ts +1 -1
- package/dist/phases/statistics/methods/Density2dStatistic.js +13 -11
- package/dist/phases/statistics/methods/DensityStatistic.d.ts +1 -1
- package/dist/phases/statistics/methods/DensityStatistic.js +11 -9
- package/dist/phases/statistics/methods/DeviationStatistic.d.ts +8 -0
- package/dist/phases/statistics/methods/DeviationStatistic.js +111 -0
- package/dist/phases/statistics/methods/MovingAverageStatistic.d.ts +1 -1
- package/dist/phases/statistics/methods/MovingAverageStatistic.js +11 -9
- package/dist/phases/statistics/methods/RegressionStatistic.d.ts +1 -1
- package/dist/phases/statistics/methods/RegressionStatistic.js +16 -14
- package/dist/phases/transforms/ProcessedPositions.js +1 -1
- package/dist/phases/transforms/TransformsPhase.js +49 -3
- package/dist/phases/transforms/ValueSelection.d.ts +30 -0
- package/dist/phases/transforms/ValueSelection.js +53 -0
- package/dist/plots/{heatmap → correlation/heatmap}/Plot.svelte +5 -2
- package/dist/plots/{heatmap → correlation/heatmap}/Plot.svelte.d.ts +2 -2
- package/dist/plots/{heatmap → correlation/heatmap}/defaults.d.ts +2 -2
- package/dist/plots/{heatmap → correlation/heatmap}/defaults.js +5 -5
- package/dist/plots/{heatmap → correlation/heatmap}/markers.d.ts +4 -4
- package/dist/plots/{heatmap → correlation/heatmap}/markers.js +3 -3
- package/dist/plots/{scatter → correlation/scatter}/Plot.svelte +5 -2
- package/dist/plots/{scatter → correlation/scatter}/Plot.svelte.d.ts +2 -2
- package/dist/plots/{scatter → correlation/scatter}/defaults.d.ts +2 -2
- package/dist/plots/{scatter → correlation/scatter}/defaults.js +4 -4
- package/dist/plots/{scatter → correlation/scatter}/markers.d.ts +4 -4
- package/dist/plots/{scatter → correlation/scatter}/markers.js +3 -3
- package/dist/plots/{box → distribution/box}/BoxSummaries.d.ts +2 -2
- package/dist/plots/{box → distribution/box}/BoxSummaries.js +6 -6
- package/dist/plots/{box → distribution/box}/Plot.svelte +2 -2
- package/dist/plots/{box → distribution/box}/Plot.svelte.d.ts +2 -2
- package/dist/plots/{box → distribution/box}/defaults.d.ts +2 -2
- package/dist/plots/{box → distribution/box}/defaults.js +1 -1
- package/dist/plots/{box → distribution/box}/markers.d.ts +2 -2
- package/dist/plots/distribution/density/Plot.svelte +45 -0
- package/dist/plots/distribution/density/Plot.svelte.d.ts +26 -0
- package/dist/plots/distribution/density/defaults.d.ts +9 -0
- package/dist/plots/distribution/density/defaults.js +29 -0
- package/dist/plots/distribution/density/markers.d.ts +9 -0
- package/dist/plots/distribution/density/markers.js +42 -0
- package/dist/plots/{histogram → distribution/histogram}/Plot.svelte +2 -2
- package/dist/plots/{histogram → distribution/histogram}/Plot.svelte.d.ts +2 -2
- package/dist/plots/{histogram → distribution/histogram}/defaults.d.ts +2 -2
- package/dist/plots/{histogram → distribution/histogram}/defaults.js +3 -3
- package/dist/plots/{histogram → distribution/histogram}/markers.d.ts +3 -3
- package/dist/plots/{histogram → distribution/histogram}/markers.js +5 -5
- package/dist/plots/{pyramid → distribution/pyramid}/Plot.svelte +5 -2
- package/dist/plots/{pyramid → distribution/pyramid}/Plot.svelte.d.ts +2 -2
- package/dist/plots/{pyramid → distribution/pyramid}/defaults.d.ts +2 -2
- package/dist/plots/{pyramid → distribution/pyramid}/defaults.js +6 -6
- package/dist/plots/{pyramid → distribution/pyramid}/markers.d.ts +4 -4
- package/dist/plots/{pyramid → distribution/pyramid}/markers.js +6 -6
- package/dist/plots/distribution/violin/Plot.svelte +45 -0
- package/dist/plots/distribution/violin/Plot.svelte.d.ts +26 -0
- package/dist/plots/distribution/violin/defaults.d.ts +10 -0
- package/dist/plots/distribution/violin/defaults.js +58 -0
- package/dist/plots/distribution/violin/markers.d.ts +10 -0
- package/dist/plots/distribution/violin/markers.js +71 -0
- package/dist/plots/{area → evolution/area}/Plot.svelte +2 -2
- package/dist/plots/{area → evolution/area}/Plot.svelte.d.ts +2 -2
- package/dist/plots/{area → evolution/area}/defaults.d.ts +2 -2
- package/dist/plots/{area → evolution/area}/defaults.js +2 -0
- package/dist/plots/{area → evolution/area}/markers.d.ts +2 -2
- package/dist/plots/{area → evolution/area}/markers.js +1 -1
- package/dist/plots/{line → evolution/line}/Plot.svelte +2 -2
- package/dist/plots/{line → evolution/line}/Plot.svelte.d.ts +2 -2
- package/dist/plots/{line → evolution/line}/defaults.d.ts +2 -2
- package/dist/plots/{line → evolution/line}/defaults.js +2 -0
- package/dist/plots/{line → evolution/line}/markers.d.ts +11 -8
- package/dist/plots/{line → evolution/line}/markers.js +6 -4
- package/dist/plots/evolution/slope/Plot.svelte +42 -0
- package/dist/plots/evolution/slope/Plot.svelte.d.ts +26 -0
- package/dist/plots/evolution/slope/defaults.d.ts +8 -0
- package/dist/plots/evolution/slope/defaults.js +31 -0
- package/dist/plots/evolution/slope/markers.d.ts +16 -0
- package/dist/plots/evolution/slope/markers.js +79 -0
- package/dist/plots/evolution/sparkline/Plot.svelte +45 -0
- package/dist/plots/evolution/sparkline/Plot.svelte.d.ts +26 -0
- package/dist/plots/evolution/sparkline/defaults.d.ts +7 -0
- package/dist/plots/evolution/sparkline/defaults.js +23 -0
- package/dist/plots/evolution/sparkline/markers.d.ts +7 -0
- package/dist/plots/evolution/sparkline/markers.js +56 -0
- package/dist/plots/{geo → map/geo}/Core.svelte +11 -10
- package/dist/plots/{geo → map/geo}/Core.svelte.d.ts +1 -1
- package/dist/plots/map/geo/GeoFeatures.svelte.d.ts +9 -0
- package/dist/plots/map/geo/GeoFeatures.svelte.js +55 -0
- package/dist/plots/map/geo/GeoGeometry.d.ts +27 -0
- package/dist/plots/map/geo/GeoGeometry.js +142 -0
- package/dist/plots/map/geo/GeoSegments.d.ts +16 -0
- package/dist/plots/map/geo/GeoSegments.js +23 -0
- package/dist/plots/{geo → map/geo}/Plot.svelte +10 -10
- package/dist/plots/{geo → map/geo}/Plot.svelte.d.ts +2 -2
- package/dist/plots/{geo → map/geo}/defaults.d.ts +2 -2
- package/dist/plots/{geo → map/geo}/defaults.js +1 -1
- package/dist/plots/{geo → map/geo}/phases/data.d.ts +1 -1
- package/dist/plots/{geo → map/geo}/phases/data.js +7 -6
- package/dist/plots/{geo → map/geo}/phases/hover.d.ts +1 -1
- package/dist/plots/{geo → map/geo}/phases/hover.js +2 -2
- package/dist/plots/{geo → map/geo}/phases/markers.d.ts +1 -1
- package/dist/plots/{geo → map/geo}/phases/markers.js +6 -10
- package/dist/plots/{geo → map/geo}/phases/scales.d.ts +2 -2
- package/dist/plots/{geo → map/geo}/phases/scales.js +28 -12
- package/dist/plots/{geo → map/geo}/phases/tooltip.d.ts +1 -1
- package/dist/plots/map/geo/phases/tooltip.js +5 -0
- package/dist/plots/{geo → map/geo}/slices.d.ts +2 -2
- package/dist/plots/{geo → map/geo}/slices.js +2 -2
- package/dist/plots/{bar → ranking/bar}/Plot.svelte +2 -2
- package/dist/plots/{bar → ranking/bar}/Plot.svelte.d.ts +2 -2
- package/dist/plots/ranking/bar/defaults.d.ts +16 -0
- package/dist/plots/{bar → ranking/bar}/defaults.js +15 -9
- package/dist/plots/{bar → ranking/bar}/markers.d.ts +8 -8
- package/dist/plots/{bar → ranking/bar}/markers.js +8 -17
- package/dist/plots/ranking/bullet/Plot.svelte +42 -0
- package/dist/plots/ranking/bullet/Plot.svelte.d.ts +26 -0
- package/dist/plots/ranking/bullet/defaults.d.ts +8 -0
- package/dist/plots/ranking/bullet/defaults.js +24 -0
- package/dist/plots/ranking/bullet/markers.d.ts +10 -0
- package/dist/plots/ranking/bullet/markers.js +90 -0
- package/dist/plots/ranking/cleveland/ClevelandConnector.d.ts +48 -0
- package/dist/plots/ranking/cleveland/ClevelandConnector.js +140 -0
- package/dist/plots/ranking/cleveland/ClevelandMarkers.d.ts +33 -0
- package/dist/plots/ranking/cleveland/ClevelandMarkers.js +375 -0
- package/dist/plots/ranking/cleveland/ClevelandRanges.d.ts +31 -0
- package/dist/plots/ranking/cleveland/ClevelandRanges.js +116 -0
- package/dist/plots/ranking/cleveland/Plot.svelte +45 -0
- package/dist/plots/ranking/cleveland/Plot.svelte.d.ts +26 -0
- package/dist/plots/ranking/cleveland/defaults.d.ts +13 -0
- package/dist/plots/ranking/cleveland/defaults.js +66 -0
- package/dist/plots/ranking/dumbbell/Plot.svelte +45 -0
- package/dist/plots/ranking/dumbbell/Plot.svelte.d.ts +26 -0
- package/dist/plots/ranking/dumbbell/defaults.d.ts +9 -0
- package/dist/plots/ranking/dumbbell/defaults.js +19 -0
- package/dist/plots/ranking/forest/Plot.svelte +42 -0
- package/dist/plots/ranking/forest/Plot.svelte.d.ts +26 -0
- package/dist/plots/ranking/forest/defaults.d.ts +11 -0
- package/dist/plots/ranking/forest/defaults.js +20 -0
- package/dist/plots/ranking/lollipop/Plot.svelte +45 -0
- package/dist/plots/ranking/lollipop/Plot.svelte.d.ts +26 -0
- package/dist/plots/ranking/lollipop/defaults.d.ts +9 -0
- package/dist/plots/ranking/lollipop/defaults.js +18 -0
- package/dist/plots/utils/RowNumbers.d.ts +16 -0
- package/dist/plots/utils/RowNumbers.js +24 -0
- package/dist/plots/utils/gaps.js +1 -1
- package/dist/plots/utils/segments.js +1 -1
- package/dist/types/configuration/styling.d.ts +276 -143
- package/dist/types/layout/coordinates.d.ts +5 -4
- package/dist/types/layout/legend.d.ts +21 -5
- package/dist/types/layout/plot.d.ts +44 -1
- package/dist/types/layout/scales.d.ts +39 -7
- package/dist/types/layout/statistics/deviation.d.ts +40 -0
- package/dist/types/layout/statistics/index.d.ts +7 -2
- package/dist/types/layout/styles/base.d.ts +18 -0
- package/dist/types/layout/styles/bullet.d.ts +25 -0
- package/dist/types/layout/styles/connector.d.ts +98 -0
- package/dist/types/layout/styles/curve.d.ts +11 -0
- package/dist/types/layout/styles/frame.d.ts +17 -0
- package/dist/types/layout/styles/gaps.d.ts +12 -0
- package/dist/types/layout/styles/geo.d.ts +55 -0
- package/dist/types/layout/styles/index.d.ts +8 -0
- package/dist/types/layout/styles/index.js +8 -0
- package/dist/types/layout/styles/values.d.ts +47 -0
- package/dist/types/layout/timeline.d.ts +5 -2
- package/dist/types/layout/tooltip.d.ts +6 -2
- package/dist/types/markers/axis/area.d.ts +2 -2
- package/dist/types/markers/axis/arrow.d.ts +3 -0
- package/dist/types/markers/axis/axisBasedMarkersConfig.d.ts +2 -1
- package/dist/types/markers/axis/bar.d.ts +1 -1
- package/dist/types/markers/axis/box.d.ts +5 -0
- package/dist/types/markers/axis/difference.d.ts +2 -2
- package/dist/types/markers/axis/image.d.ts +3 -2
- package/dist/types/markers/axis/line.d.ts +2 -0
- package/dist/types/markers/axis/rule.d.ts +9 -0
- package/dist/types/markers/axis/trail.d.ts +2 -3
- package/dist/types/markers/axis/violin.d.ts +25 -0
- package/dist/types/markers/basic/dot.d.ts +3 -2
- package/dist/types/markers/basic/text.d.ts +13 -3
- package/dist/types/markers/channels/commonMarkerConfig.d.ts +7 -3
- package/dist/types/markers/channels/commonMarkerConfigWithRowOffset.d.ts +13 -0
- package/dist/types/markers/common.d.ts +1 -1
- package/dist/types/markers/common.js +1 -0
- package/dist/types/markers/geo/link.d.ts +5 -1
- package/dist/types/phases/index.d.ts +1 -1
- package/dist/types/phases/scales/phase.d.ts +5 -1
- package/dist/types/phases/state.d.ts +15 -2
- package/dist/types/phases/statistics/source.d.ts +3 -1
- package/dist/types/phases/transforms/phase.d.ts +22 -0
- package/dist/types/plots/{heatmap → correlation/heatmap}/props.d.ts +6 -6
- package/dist/types/plots/{heatmap → correlation/heatmap}/state.d.ts +4 -4
- package/dist/types/plots/{scatter → correlation/scatter}/props.d.ts +6 -6
- package/dist/types/plots/{scatter → correlation/scatter}/state.d.ts +2 -2
- package/dist/types/plots/{box → distribution/box}/props.d.ts +6 -6
- package/dist/types/plots/{box → distribution/box}/state.d.ts +3 -3
- package/dist/types/plots/distribution/density/props.d.ts +23 -0
- package/dist/types/plots/distribution/density/state.d.ts +6 -0
- package/dist/types/plots/{histogram → distribution/histogram}/props.d.ts +7 -7
- package/dist/types/plots/{histogram → distribution/histogram}/state.d.ts +2 -2
- package/dist/types/plots/distribution/histogram/state.js +1 -0
- package/dist/types/plots/{pyramid → distribution/pyramid}/props.d.ts +6 -6
- package/dist/types/plots/distribution/pyramid/props.js +1 -0
- package/dist/types/plots/{pyramid → distribution/pyramid}/state.d.ts +3 -3
- package/dist/types/plots/distribution/pyramid/state.js +1 -0
- package/dist/types/plots/distribution/violin/props.d.ts +23 -0
- package/dist/types/plots/distribution/violin/props.js +1 -0
- package/dist/types/plots/distribution/violin/state.d.ts +6 -0
- package/dist/types/plots/distribution/violin/state.js +1 -0
- package/dist/types/plots/{area → evolution/area}/props.d.ts +6 -6
- package/dist/types/plots/evolution/area/props.js +1 -0
- package/dist/types/plots/{area → evolution/area}/state.d.ts +2 -2
- package/dist/types/plots/evolution/area/state.js +1 -0
- package/dist/types/plots/evolution/line/props.d.ts +10 -0
- package/dist/types/plots/evolution/line/props.js +1 -0
- package/dist/types/plots/{line → evolution/line}/state.d.ts +3 -3
- package/dist/types/plots/evolution/line/state.js +1 -0
- package/dist/types/plots/evolution/slope/props.d.ts +5 -0
- package/dist/types/plots/evolution/slope/props.js +1 -0
- package/dist/types/plots/evolution/slope/state.d.ts +5 -0
- package/dist/types/plots/evolution/slope/state.js +1 -0
- package/dist/types/plots/evolution/sparkline/props.d.ts +5 -0
- package/dist/types/plots/evolution/sparkline/props.js +1 -0
- package/dist/types/plots/evolution/sparkline/state.d.ts +5 -0
- package/dist/types/plots/evolution/sparkline/state.js +1 -0
- package/dist/types/plots/{geo → map/geo}/props.d.ts +8 -8
- package/dist/types/plots/map/geo/props.js +1 -0
- package/dist/types/plots/{geo → map/geo}/state.d.ts +18 -11
- package/dist/types/plots/map/geo/state.js +1 -0
- package/dist/types/plots/props.d.ts +1 -1
- package/dist/types/plots/{bar → ranking/bar}/props.d.ts +6 -6
- package/dist/types/plots/ranking/bar/props.js +1 -0
- package/dist/types/plots/{bar → ranking/bar}/state.d.ts +2 -2
- package/dist/types/plots/ranking/bar/state.js +1 -0
- package/dist/types/plots/ranking/bullet/props.d.ts +22 -0
- package/dist/types/plots/ranking/bullet/props.js +1 -0
- package/dist/types/plots/ranking/bullet/state.d.ts +5 -0
- package/dist/types/plots/ranking/bullet/state.js +1 -0
- package/dist/types/plots/ranking/cleveland/props.d.ts +10 -0
- package/dist/types/plots/ranking/cleveland/props.js +1 -0
- package/dist/types/plots/ranking/cleveland/state.d.ts +49 -0
- package/dist/types/plots/ranking/cleveland/state.js +1 -0
- package/dist/types/plots/ranking/dumbbell/props.d.ts +10 -0
- package/dist/types/plots/ranking/dumbbell/props.js +1 -0
- package/dist/types/plots/ranking/dumbbell/state.d.ts +5 -0
- package/dist/types/plots/ranking/dumbbell/state.js +1 -0
- package/dist/types/plots/ranking/forest/props.d.ts +23 -0
- package/dist/types/plots/ranking/forest/props.js +1 -0
- package/dist/types/plots/ranking/forest/state.d.ts +5 -0
- package/dist/types/plots/ranking/forest/state.js +1 -0
- package/dist/types/plots/ranking/lollipop/props.d.ts +10 -0
- package/dist/types/plots/ranking/lollipop/props.js +1 -0
- package/dist/types/plots/ranking/lollipop/state.d.ts +5 -0
- package/dist/types/plots/ranking/lollipop/state.js +1 -0
- package/dist/types/plots/segments/common.d.ts +4 -1
- package/dist/utils/OpacityScale.d.ts +14 -0
- package/dist/utils/OpacityScale.js +43 -0
- package/dist/utils/{symbol.d.ts → SymbolPath.d.ts} +0 -12
- package/dist/utils/{symbol.js → SymbolPath.js} +0 -24
- package/dist/utils/SymbolScale.d.ts +18 -0
- package/dist/utils/SymbolScale.js +29 -0
- package/dist/utils/color/ColorRamp.d.ts +27 -0
- package/dist/utils/color/ColorRamp.js +120 -0
- package/dist/utils/color/CssColor.d.ts +19 -0
- package/dist/utils/color/CssColor.js +114 -0
- package/dist/utils/color/Palette.d.ts +21 -0
- package/dist/utils/color/Palette.js +52 -0
- package/dist/utils/color/index.d.ts +11 -3
- package/dist/utils/color/index.js +14 -3
- package/dist/utils/grouping.js +1 -1
- package/docs/architecture.md +1 -1
- package/docs/chrome.md +2 -2
- package/docs/composer.md +2 -2
- package/docs/concepts.md +1 -1
- package/docs/development.md +1 -1
- package/docs/facets.md +3 -3
- package/docs/getting-started.md +2 -2
- package/docs/legend.md +13 -11
- package/docs/markers.md +29 -27
- package/docs/plots/correlation/heatmap.md +26 -0
- package/docs/plots/correlation/scatter.md +35 -0
- package/docs/plots/distribution/box.md +28 -0
- package/docs/plots/distribution/density.md +26 -0
- package/docs/plots/distribution/histogram.md +33 -0
- package/docs/plots/distribution/pyramid.md +31 -0
- package/docs/plots/distribution/violin.md +35 -0
- package/docs/plots/evolution/area.md +32 -0
- package/docs/plots/evolution/line.md +93 -0
- package/docs/plots/evolution/slope.md +39 -0
- package/docs/plots/evolution/sparkline.md +34 -0
- package/docs/plots/ranking/bar.md +59 -0
- package/docs/plots/ranking/bullet.md +37 -0
- package/docs/plots/ranking/cleveland.md +54 -0
- package/docs/plots/ranking/dumbbell.md +39 -0
- package/docs/plots/ranking/forest.md +40 -0
- package/docs/plots/ranking/lollipop.md +39 -0
- package/docs/plots.md +22 -280
- package/docs/scales.md +30 -24
- package/docs/styles-and-segments.md +24 -21
- package/docs/theming.md +23 -20
- package/docs/timeline.md +3 -3
- package/docs/tooltip-and-hover.md +10 -10
- package/docs/transforms-and-statistics.md +13 -12
- package/examples/BarValues.svelte +1 -1
- package/examples/Box.svelte +1 -1
- package/examples/Bullet.svelte +17 -0
- package/examples/Chrome.svelte +1 -1
- package/examples/ChromeOrder.svelte +1 -1
- package/examples/Cleveland.svelte +15 -0
- package/examples/Composer.svelte +2 -2
- package/examples/CustomTooltip.svelte +1 -1
- package/examples/Density.svelte +7 -0
- package/examples/Dumbbell.svelte +16 -0
- package/examples/Facets.svelte +1 -1
- package/examples/FacetsCarousel.svelte +1 -1
- package/examples/FacetsRowsCols.svelte +1 -1
- package/examples/FirstPlot.svelte +1 -1
- package/examples/Forest.svelte +17 -0
- package/examples/Gaps.svelte +2 -2
- package/examples/GroupedBars.svelte +1 -1
- package/examples/Heatmap.svelte +3 -3
- package/examples/HeatmapSegments.svelte +8 -8
- package/examples/Histogram.svelte +1 -1
- package/examples/HorizontalBars.svelte +1 -1
- package/examples/LegendSections.svelte +1 -1
- package/examples/LegendToggle.svelte +1 -1
- package/examples/LineByRegion.svelte +1 -1
- package/examples/LineDates.svelte +1 -1
- package/examples/LineStep.svelte +16 -0
- package/examples/LineStepSegment.svelte +18 -0
- package/examples/Lollipop.svelte +17 -0
- package/examples/Markers.svelte +1 -1
- package/examples/MovingAverage.svelte +1 -1
- package/examples/Pyramid.svelte +9 -2
- package/examples/Regression.svelte +2 -2
- package/examples/ResponsiveLine.svelte +1 -1
- package/examples/Scales.svelte +1 -1
- package/examples/Scatter.svelte +2 -2
- package/examples/SegmentHighlight.svelte +1 -1
- package/examples/Segments.svelte +1 -1
- package/examples/SegmentsBySeries.svelte +1 -1
- package/examples/Slope.svelte +17 -0
- package/examples/Sparkline.svelte +14 -0
- package/examples/StackedArea.svelte +1 -1
- package/examples/StackedBars.svelte +1 -1
- package/examples/TimelinePlayer.svelte +1 -1
- package/examples/TimelineRule.svelte +1 -1
- package/examples/Tooltip.svelte +1 -1
- package/examples/ValueLabels.svelte +1 -1
- package/examples/Violin.svelte +14 -0
- package/examples/datasets/argentina-chile-trends.ts +34 -0
- package/examples/datasets/commodity-prices.ts +48 -0
- package/examples/datasets/countries-over-time.ts +368 -0
- package/examples/datasets/daily-temperature.ts +121 -0
- package/examples/datasets/earthquakes.ts +977 -0
- package/examples/datasets/flight-routes.ts +29 -0
- package/examples/datasets/height-density.ts +37 -0
- package/examples/datasets/heights.ts +370 -0
- package/examples/datasets/index.ts +24 -0
- package/examples/datasets/inflation-by-region.ts +44 -0
- package/examples/datasets/inflation-ranges.ts +34 -0
- package/examples/datasets/iris-flower.ts +207 -0
- package/examples/datasets/life-expectancy.ts +95 -0
- package/examples/datasets/napoleons-march.ts +182 -0
- package/examples/datasets/penguins.ts +54 -0
- package/examples/datasets/population-by-age-with-gaps.ts +23 -0
- package/examples/datasets/population-by-age.ts +890 -0
- package/examples/datasets/province-population.ts +521 -0
- package/examples/datasets/stock-prices.ts +63 -0
- package/examples/datasets/weather-stations-over-time.ts +31 -0
- package/examples/datasets/weather-stations.ts +22 -0
- package/examples/datasets/wind-vectors.ts +30 -0
- package/examples/datasets/world-temperature.ts +400 -0
- package/llms-full.txt +22 -11
- package/llms.txt +32 -4
- package/package.json +10 -1
- package/dist/plots/bar/defaults.d.ts +0 -9
- package/dist/plots/geo/features.svelte.d.ts +0 -5
- package/dist/plots/geo/features.svelte.js +0 -44
- package/dist/plots/geo/phases/tooltip.js +0 -5
- package/dist/plots/utils/geoAccessors.d.ts +0 -72
- package/dist/plots/utils/geoAccessors.js +0 -220
- package/dist/plots/utils/geoSegments.d.ts +0 -29
- package/dist/plots/utils/geoSegments.js +0 -37
- package/dist/types/layout/styles.d.ts +0 -122
- package/dist/types/markers/axis/curveName.d.ts +0 -2
- package/dist/types/plots/line/props.d.ts +0 -10
- package/dist/utils/color/contrast.d.ts +0 -9
- package/dist/utils/color/contrast.js +0 -40
- package/dist/utils/color/cssColor.d.ts +0 -4
- package/dist/utils/color/cssColor.js +0 -77
- package/dist/utils/color/ramp.d.ts +0 -17
- package/dist/utils/color/ramp.js +0 -110
- package/dist/utils/opacity.d.ts +0 -9
- package/dist/utils/opacity.js +0 -38
- package/examples/data.ts +0 -324
- /package/dist/plots/{box → distribution/box}/markers.js +0 -0
- /package/dist/types/layout/{styles.js → statistics/deviation.js} +0 -0
- /package/dist/types/{markers/axis/curveName.js → layout/styles/base.js} +0 -0
- /package/dist/types/{plots/area/props.js → layout/styles/bullet.js} +0 -0
- /package/dist/types/{plots/area/state.js → layout/styles/connector.js} +0 -0
- /package/dist/types/{plots/bar/props.js → layout/styles/curve.js} +0 -0
- /package/dist/types/{plots/bar/state.js → layout/styles/frame.js} +0 -0
- /package/dist/types/{plots/box/props.js → layout/styles/gaps.js} +0 -0
- /package/dist/types/{plots/box/state.js → layout/styles/geo.js} +0 -0
- /package/dist/types/{plots/geo/props.js → layout/styles/values.js} +0 -0
- /package/dist/types/{plots/geo/state.js → markers/axis/violin.js} +0 -0
- /package/dist/types/{plots/heatmap/props.js → markers/channels/commonMarkerConfigWithRowOffset.js} +0 -0
- /package/dist/types/plots/{histogram → correlation/heatmap}/props.js +0 -0
- /package/dist/types/plots/{heatmap → correlation/heatmap}/state.js +0 -0
- /package/dist/types/plots/{line → correlation/scatter}/props.js +0 -0
- /package/dist/types/plots/{histogram → correlation/scatter}/state.js +0 -0
- /package/dist/types/plots/{pyramid → distribution/box}/props.js +0 -0
- /package/dist/types/plots/{line → distribution/box}/state.js +0 -0
- /package/dist/types/plots/{scatter → distribution/density}/props.js +0 -0
- /package/dist/types/plots/{pyramid → distribution/density}/state.js +0 -0
- /package/dist/types/plots/{scatter/state.js → distribution/histogram/props.js} +0 -0
- /package/dist/{plots/utils → utils}/accessors.d.ts +0 -0
- /package/dist/{plots/utils → utils}/accessors.js +0 -0
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# ClevelandPlot
|
|
2
|
+
|
|
3
|
+
Part of [Plots](../../plots.md).
|
|
4
|
+
|
|
5
|
+
The general form of the family: per category, one dot for each series that has a value there, joined by a connector from the lowest to the highest. A [`LollipopPlot`](lollipop.md) is its one-series case and a [`DumbbellPlot`](dumbbell.md) its two-series case, which check their series and point here when they need more. Categories on `x` stand the rows upright; on `y` they lie sideways.
|
|
6
|
+
|
|
7
|
+
<!-- example: examples/Cleveland.svelte -->
|
|
8
|
+
|
|
9
|
+
```svelte
|
|
10
|
+
<script lang="ts">
|
|
11
|
+
import { ClevelandPlot } from '@fundar/data-chart-telling';
|
|
12
|
+
import { AGE_SHARES } from './datasets';
|
|
13
|
+
</script>
|
|
14
|
+
|
|
15
|
+
<!-- One dot per census year in each age group, joined from the lowest share to the highest. The years follow one another, so they take a sequential blues ramp. -->
|
|
16
|
+
<ClevelandPlot
|
|
17
|
+
width={720}
|
|
18
|
+
height={400}
|
|
19
|
+
data={AGE_SHARES}
|
|
20
|
+
x="share"
|
|
21
|
+
y="ageGroup"
|
|
22
|
+
grouping="year"
|
|
23
|
+
scales={{ color: { scheme: 'blues', schemeRange: [0.3, 1] } }}
|
|
24
|
+
/>
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
<!-- /example -->
|
|
28
|
+
|
|
29
|
+

|
|
30
|
+
|
|
31
|
+
- `grouping` (or `color`) gives one dot per group in each category. Numeric fields need `grouping` to split into series; `color` on a number draws a continuous ramp instead.
|
|
32
|
+
- `scales.color.scheme: 'blues'` colors the series on a sequential ramp, which reads better than the default palette when the series follow one another, such as years; `schemeRange: [0.3, 1]` skips the ramp's near-white start.
|
|
33
|
+
- The connector spans the lowest and the highest dot of each category, so a series the legend omits leaves the range.
|
|
34
|
+
- The value axis fits the values without reaching for zero; pin `scales.y.domain` to start it at zero.
|
|
35
|
+
- Its defaults come from `cleveland` in the [configuration](../../theming.md): the connector is a neutral gray, 5 px thick.
|
|
36
|
+
- `styles.values` writes each value: past the highest dot and the lowest of its category, and beside those between them. `select` (`'first'`, `'last'`, `'min'`, `'max'`, or a list) labels only those dots of each category, `series` only those series, and `color: 'series'` writes each label in its dot's series color. `format(value, seriesName, row)` also gets the row, so a label can name its category (see [Styles and segments](../../styles-and-segments.md#value-labels)).
|
|
37
|
+
- `segments` restyle the dots of chosen categories, as in [`DumbbellPlot`](dumbbell.md).
|
|
38
|
+
- The tooltip reads one category at a time, listing every series.
|
|
39
|
+
|
|
40
|
+
## Connectors
|
|
41
|
+
|
|
42
|
+
`styles.connector` styles the line each category draws between its dots, on `DumbbellPlot`, `ClevelandPlot` and `LollipopPlot`:
|
|
43
|
+
|
|
44
|
+
| Field | Meaning |
|
|
45
|
+
| ------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
46
|
+
| `from`, `to` | Where a difference runs between: `to` minus `from`. Each is a series name, `'first'` or `'last'` (the defaults), or `'min'` or `'max'` for the category's lowest and highest dot - `from: 'min', to: 'max'` makes the whole connector the stretch. On a lollipop, the value minus the baseline |
|
|
47
|
+
| `width` | Thickness in px, `'dots'` for a band as thick as the dots are wide, or a function of the connector |
|
|
48
|
+
| `color` | One color; `{ by: 'sign', positive, negative, zero }`; `{ by: 'difference' \| 'length', scheme, pivot, ... }` (a color scale, diverging around `pivot: 0` by default for a difference); or a function |
|
|
49
|
+
| `opacity` | 0-1, or a function of the connector |
|
|
50
|
+
| `arrow` | `true`, or `{ headLength, headAngle }`: draws the `from`-`to` stretch as an arrow pointing at the `to` dot, the way the value moved, instead of a line. It is as thick as `width` says, else `connector.arrow.width` in the configuration (2 px) |
|
|
51
|
+
| `outside` | How the part of a connector outside the `from`-`to` stretch looks, where the dots of the other series lie: a color, or `{ color, opacity }`. Default: the neutral connector color, faded |
|
|
52
|
+
| `label` | `true`, or `{ text, format, anchor, fontStyle }`: `text` is the `'difference'` (signed, the default), the `'length'`, or a function; `anchor` is `'outside'` (beside the connector) or `'middle'` (on it, for a thick one) |
|
|
53
|
+
|
|
54
|
+
With more than two series, the connector spans the lowest and the highest dot, but only the stretch between the `from` and `to` dots takes `color`, `opacity` and the label (centered on it); the rest is `outside`. A function gets the connector: `{ category, from, to, length, difference, span, series }`, `span` being that stretch. A lone dot's stem keeps its series' color unless `color` is set, and a segment's own `stroke` wins over both.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# DumbbellPlot
|
|
2
|
+
|
|
3
|
+
Part of [Plots](../../plots.md).
|
|
4
|
+
|
|
5
|
+
Two dots per category, one for each of two series, joined by a connector: the gap between them is what the eye reads, such as a before and an after, or two groups. Categories on `x` stand the rows upright; on `y` they lie sideways. A plot with any other number of series warns and points to [`LollipopPlot`](lollipop.md) (one) or [`ClevelandPlot`](cleveland.md) (any number).
|
|
6
|
+
|
|
7
|
+
<!-- example: examples/Dumbbell.svelte -->
|
|
8
|
+
|
|
9
|
+
```svelte
|
|
10
|
+
<script lang="ts">
|
|
11
|
+
import { DumbbellPlot } from '@fundar/data-chart-telling';
|
|
12
|
+
import { PROVINCE_VALUES } from './datasets';
|
|
13
|
+
</script>
|
|
14
|
+
|
|
15
|
+
<!-- Two dots per province, one per sex, joined by a connector: the gap in life expectancy at birth. -->
|
|
16
|
+
<DumbbellPlot
|
|
17
|
+
width={720}
|
|
18
|
+
height={400}
|
|
19
|
+
data={PROVINCE_VALUES}
|
|
20
|
+
x="value"
|
|
21
|
+
y="province"
|
|
22
|
+
color="sex"
|
|
23
|
+
scales={{ x: { domain: [70, 85] } }}
|
|
24
|
+
styles={{ values: { show: true } }}
|
|
25
|
+
/>
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
<!-- /example -->
|
|
29
|
+
|
|
30
|
+

|
|
31
|
+
|
|
32
|
+
- `grouping` (or `color`) names the two series; the legend toggles them like any other.
|
|
33
|
+
- The value axis fits the values without reaching for zero; pin `scales.y.domain` to start it at zero.
|
|
34
|
+
- Categories keep the order the data gives them; `scales.x.domain` (or `y`) orders them, and `scales.x.sort` orders them by what they hold: `{ by: 'range' }` by the gap between their dots, `{ by: 'value', series }` by one series' value (see [Scales](../../scales.md)).
|
|
35
|
+
- `r` sizes the dots by a field (`r="population"`; area follows the value, and the legend gets a size section) or fixes their radius in pixels (`r={8}`).
|
|
36
|
+
- The connector is a neutral gray as thick as the dots are wide (`stemWidth: 'dots'`), a band; its default color and width, the dot radius and the padding come from `dumbbell` in the [configuration](../../theming.md). `styles.connector` restyles it per category (see [Connectors](cleveland.md#connectors)). `styles.connector.arrow` draws it as an arrow from one series to the other, pointing the way the value moved.
|
|
37
|
+
- `styles.values` writes each value past its dot, away from the other one. A label past the lowest dot can reach the axis labels when that dot sits at the edge of the axis; pin `scales.y.domain` (or `x`) wide enough to leave it room.
|
|
38
|
+
- `segments` restyle the dots of chosen categories (`styles: { dots: { dotRadius: 9 } }`, `areas: [{ x: { from: 'Salta', to: 'Salta' } }]`).
|
|
39
|
+
- The tooltip reads one category at a time, listing its two values.
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# ForestPlot
|
|
2
|
+
|
|
3
|
+
Part of [Plots](../../plots.md).
|
|
4
|
+
|
|
5
|
+
Per row, a dot - an estimate - on a stem that spans its interval: a mean with its range, a coefficient with its confidence interval. Each row gives its interval as `lower` and `upper` fields, or as an `error` that reaches that far either side of its value. Categories on `y` lie sideways, the usual way of a forest plot; on `x` they stand upright. It is a mode of [`ClevelandPlot`](cleveland.md): one row per category, and a plot with several warns and points to [`facet`](../../concepts.md) or `ClevelandPlot`.
|
|
6
|
+
|
|
7
|
+
<!-- example: examples/Forest.svelte -->
|
|
8
|
+
|
|
9
|
+
```svelte
|
|
10
|
+
<script lang="ts">
|
|
11
|
+
import { ForestPlot } from '@fundar/data-chart-telling';
|
|
12
|
+
import { INFLATION_RANGES } from './datasets';
|
|
13
|
+
</script>
|
|
14
|
+
|
|
15
|
+
<!-- One row per region and year: the mean monthly inflation as a dot, on a stem from its lowest to its highest month. -->
|
|
16
|
+
<ForestPlot
|
|
17
|
+
width={720}
|
|
18
|
+
height={480}
|
|
19
|
+
data={INFLATION_RANGES}
|
|
20
|
+
x="mean"
|
|
21
|
+
y="period"
|
|
22
|
+
lower="min"
|
|
23
|
+
upper="max"
|
|
24
|
+
color="region"
|
|
25
|
+
scales={{ x: { label: 'Monthly inflation (%)' } }}
|
|
26
|
+
/>
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
<!-- /example -->
|
|
30
|
+
|
|
31
|
+

|
|
32
|
+
|
|
33
|
+
- `lower` and `upper` name the fields of the interval's ends, `error` the half-width of an interval centered on the value. When both are given, `lower` and `upper` win; a row without an interval draws its dot alone, and an interval is widened to hold its value.
|
|
34
|
+
- The value axis fits the intervals, not the estimates alone, without reaching for zero; pin `scales.x.domain` (or `y`) to start it at zero.
|
|
35
|
+
- Rows keep the order the data gives them; `scales.y.sort` orders them: `{ by: 'value' }` by their estimate, `{ by: 'range' }` by the width of their interval, each across all rows or, with `grouped: true`, within each region (see [Scales](../../scales.md)).
|
|
36
|
+
- The stem and its caps - a short tick across each end, on by default - come from `forest` and `connector` in the [configuration](../../theming.md). `styles.connector` restyles them (see [Connectors](cleveland.md#connectors)); `styles.connector.caps` is `false` to leave the stems open, or `{ length }` in pixels.
|
|
37
|
+
- A reference line, such as the line of no effect, is a `rule` marker: `markers={[{ type: 'rule', axis: 'x', value: 0 }]}`.
|
|
38
|
+
- `styles.values` writes each estimate beside its dot.
|
|
39
|
+
- `segments` restyle the stems and dots of chosen rows.
|
|
40
|
+
- The tooltip reads the hovered row.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# LollipopPlot
|
|
2
|
+
|
|
3
|
+
Part of [Plots](../../plots.md).
|
|
4
|
+
|
|
5
|
+
One value per category, drawn as a dot on a thin stem that rises from the baseline: a lighter alternative to bars when there are many categories. String values on `x` stand the lollipops upright; on `y` they lie sideways.
|
|
6
|
+
|
|
7
|
+
<!-- example: examples/Lollipop.svelte -->
|
|
8
|
+
|
|
9
|
+
```svelte
|
|
10
|
+
<script lang="ts">
|
|
11
|
+
import { LollipopPlot } from '@fundar/data-chart-telling';
|
|
12
|
+
import { PROVINCE_VALUES } from './datasets';
|
|
13
|
+
|
|
14
|
+
const female = PROVINCE_VALUES.filter((row) => row.sex === 'female');
|
|
15
|
+
</script>
|
|
16
|
+
|
|
17
|
+
<!-- One dot on a stem per province: female life expectancy at birth, with its value beside it. -->
|
|
18
|
+
<LollipopPlot
|
|
19
|
+
width={720}
|
|
20
|
+
height={400}
|
|
21
|
+
data={female}
|
|
22
|
+
x="value"
|
|
23
|
+
y="province"
|
|
24
|
+
scales={{ x: { domain: [70, 85] } }}
|
|
25
|
+
styles={{ values: { show: true } }}
|
|
26
|
+
/>
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
<!-- /example -->
|
|
30
|
+
|
|
31
|
+

|
|
32
|
+
|
|
33
|
+
- `grouping` (or `color`) draws one set of lollipops per group, as long as each category has a value in only one of them - coloring by the category field itself is the usual case. A category with values in several groups warns: that is a [`DumbbellPlot`](dumbbell.md) (two) or a [`ClevelandPlot`](cleveland.md) (any number).
|
|
34
|
+
- Categories keep the order the data gives them; `scales.x.domain` (or `y`) orders them, and `scales.x.sort` orders them by what they hold: `{ by: 'range' }` by the gap between their dots, `{ by: 'value', series }` by one series' value (see [Scales](../../scales.md)).
|
|
35
|
+
- The value axis reaches zero, where the stems start; pinning `scales.y.domain` moves the baseline to the nearest end of it, and a negative value hangs below zero.
|
|
36
|
+
- `scales.x.paddingInner` / `paddingOuter` set the room around each lollipop; the defaults, with the dot radius and the stem width (a thin 2 px line), come from `lollipop` in the [configuration](../../theming.md).
|
|
37
|
+
- `styles.values` writes each value just past its dot.
|
|
38
|
+
- `segments` restyle whole categories: `styles: { stroke: {...}, dots: {...} }` restyle their stems and dots (`areas: [{ x: { from: 'Salta', to: 'Salta' } }]`).
|
|
39
|
+
- The tooltip reads one lollipop at a time, along the category axis.
|
package/docs/plots.md
CHANGED
|
@@ -1,284 +1,26 @@
|
|
|
1
1
|
# Plots
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
| Plot
|
|
6
|
-
|
|
|
7
|
-
| [
|
|
8
|
-
| [
|
|
9
|
-
| [
|
|
10
|
-
| [
|
|
11
|
-
| [
|
|
12
|
-
| [
|
|
13
|
-
| [
|
|
14
|
-
| [
|
|
15
|
-
| [
|
|
3
|
+
Every plot kind shares one set of props (see [Concepts](concepts.md)). They differ in what they draw, which channels they need and how they hover.
|
|
4
|
+
|
|
5
|
+
| Category | Plot | Draws | Needs |
|
|
6
|
+
| ------------ | ------------------------------------------------ | -------------------------------------------------------------- | ------------------------------------------------------- |
|
|
7
|
+
| Distribution | [DensityPlot](plots/distribution/density.md) | A smoothed distribution of a numeric field | `x` or `y` |
|
|
8
|
+
| Distribution | [HistogramPlot](plots/distribution/histogram.md) | Counts of a numeric field in bins | `x` or `y` |
|
|
9
|
+
| Distribution | [BoxPlot](plots/distribution/box.md) | The distribution of values per category | a category channel and a value channel |
|
|
10
|
+
| Distribution | [ViolinPlot](plots/distribution/violin.md) | The mirrored density of values per category, with a box inside | a category channel and a value channel |
|
|
11
|
+
| Distribution | [PyramidPlot](plots/distribution/pyramid.md) | Two series mirrored around zero | a category channel, a value channel, two series |
|
|
12
|
+
| Correlation | [HeatmapPlot](plots/correlation/heatmap.md) | A grid of colored cells | `x`, `y`, `color` |
|
|
13
|
+
| Correlation | [ScatterPlot](plots/correlation/scatter.md) | A point per row | `x`, `y` |
|
|
14
|
+
| Ranking | [BarPlot](plots/ranking/bar.md) | Bars, grouped, stacked or horizontal | a category channel and a value channel |
|
|
15
|
+
| Ranking | [BulletPlot](plots/ranking/bullet.md) | A bar against a target, over graded ranges | a category channel, a value channel, `target`, `ranges` |
|
|
16
|
+
| Ranking | [LollipopPlot](plots/ranking/lollipop.md) | One dot on a stem per category | a category channel and a value channel |
|
|
17
|
+
| Ranking | [DumbbellPlot](plots/ranking/dumbbell.md) | Two dots per category, joined | a category channel, a value channel, two series |
|
|
18
|
+
| Ranking | [ClevelandPlot](plots/ranking/cleveland.md) | Any number of dots per category, joined | a category channel, a value channel, a series per dot |
|
|
19
|
+
| Ranking | [ForestPlot](plots/ranking/forest.md) | One dot on an interval per row | a category channel, a value channel, `lower`/`upper` |
|
|
20
|
+
| Evolution | [LinePlot](plots/evolution/line.md) | A line per series | `x`, `y` |
|
|
21
|
+
| Evolution | [AreaPlot](plots/evolution/area.md) | A filled area per series | `x`, `y` |
|
|
22
|
+
| Evolution | [SparklinePlot](plots/evolution/sparkline.md) | A small line with its last value, no axes | `x`, `y` |
|
|
23
|
+
| Evolution | [SlopePlot](plots/evolution/slope.md) | A line per series between two positions | a category channel with two values, a value channel |
|
|
24
|
+
| Map | [GeoPlot](geo.md) | A map from GeoJSON or TopoJSON | `data` (see [Maps](geo.md)) |
|
|
16
25
|
|
|
17
26
|
All of them accept `data` with `grouping`/`color`, or pre-built `series`.
|
|
18
|
-
|
|
19
|
-
## LinePlot
|
|
20
|
-
|
|
21
|
-
One line per series. Rows with a missing value (`null`, `undefined`, `NaN`) break the line; `styles.gaps` can [bridge the break](styles-and-segments.md#gaps).
|
|
22
|
-
|
|
23
|
-
<!-- example: examples/LineDates.svelte -->
|
|
24
|
-
|
|
25
|
-
```svelte
|
|
26
|
-
<script lang="ts">
|
|
27
|
-
import { LinePlot } from '@fundar/data-chart-telling';
|
|
28
|
-
import { PRICES } from './data';
|
|
29
|
-
</script>
|
|
30
|
-
|
|
31
|
-
<!-- A line per commodity over a date axis, with end-of-line labels. -->
|
|
32
|
-
<LinePlot
|
|
33
|
-
width={720}
|
|
34
|
-
height={400}
|
|
35
|
-
data={PRICES}
|
|
36
|
-
x="date"
|
|
37
|
-
y="index"
|
|
38
|
-
color="commodity"
|
|
39
|
-
styles={{ values: { show: true, format: (v, name) => `${name}: ${v}` } }}
|
|
40
|
-
/>
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
<!-- /example -->
|
|
44
|
-
|
|
45
|
-

|
|
46
|
-
|
|
47
|
-
- `styles.values.show` writes a label at the end of each series, with the series name and value. Overlapping labels spread apart automatically and the margin grows to fit them.
|
|
48
|
-
- Hover finds the points sharing the hovered `x`.
|
|
49
|
-
- With a [`timeline`](timeline.md), the line reveals itself up to the current step and interpolates `y` between steps.
|
|
50
|
-
- `segments` style ranges of a line; `markers` add `delta`, `rule`, `text` and the rest (see [Markers](markers.md)).
|
|
51
|
-
|
|
52
|
-
## AreaPlot
|
|
53
|
-
|
|
54
|
-
One filled area per series, under the line from `y` to the baseline. Default fill opacity comes from `area.fillOpacity` in the configuration.
|
|
55
|
-
|
|
56
|
-
<!-- example: examples/StackedArea.svelte -->
|
|
57
|
-
|
|
58
|
-
```svelte
|
|
59
|
-
<script lang="ts">
|
|
60
|
-
import { AreaPlot } from '@fundar/data-chart-telling';
|
|
61
|
-
import { AGE_SHARES } from './data';
|
|
62
|
-
</script>
|
|
63
|
-
|
|
64
|
-
<!-- Each age group's share of the population, stacked with `stackY` so the bands add up to 100%. -->
|
|
65
|
-
<AreaPlot
|
|
66
|
-
width={720}
|
|
67
|
-
height={400}
|
|
68
|
-
data={AGE_SHARES}
|
|
69
|
-
x="year"
|
|
70
|
-
y="share"
|
|
71
|
-
color="ageGroup"
|
|
72
|
-
scales={{ x: { ticks: [1991, 2001, 2010, 2022] } }}
|
|
73
|
-
transforms={[{ type: 'stackY' }]}
|
|
74
|
-
/>
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
<!-- /example -->
|
|
78
|
-
|
|
79
|
-

|
|
80
|
-
|
|
81
|
-
`transforms={[{ type: 'stackY' }]}` stacks the series.
|
|
82
|
-
|
|
83
|
-
## BarPlot
|
|
84
|
-
|
|
85
|
-
Bars where one axis holds the categories and the other the values. Categories on `x` give vertical bars; categories on `y` give horizontal bars.
|
|
86
|
-
|
|
87
|
-
<!-- example: examples/GroupedBars.svelte -->
|
|
88
|
-
|
|
89
|
-
```svelte
|
|
90
|
-
<script lang="ts">
|
|
91
|
-
import { BarPlot } from '@fundar/data-chart-telling';
|
|
92
|
-
import { PROVINCE_VALUES } from './data';
|
|
93
|
-
</script>
|
|
94
|
-
|
|
95
|
-
<!-- Vertical bars, grouped by `color`. -->
|
|
96
|
-
<BarPlot
|
|
97
|
-
width={720}
|
|
98
|
-
height={400}
|
|
99
|
-
data={PROVINCE_VALUES}
|
|
100
|
-
x="province"
|
|
101
|
-
y="value"
|
|
102
|
-
color="sex"
|
|
103
|
-
scales={{ y: { domain: [70, 85] } }}
|
|
104
|
-
/>
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
<!-- /example -->
|
|
108
|
-
|
|
109
|
-

|
|
110
|
-
|
|
111
|
-
<!-- example: examples/HorizontalBars.svelte -->
|
|
112
|
-
|
|
113
|
-
```svelte
|
|
114
|
-
<script lang="ts">
|
|
115
|
-
import { BarPlot } from '@fundar/data-chart-telling';
|
|
116
|
-
import { PROVINCE_VALUES } from './data';
|
|
117
|
-
</script>
|
|
118
|
-
|
|
119
|
-
<!-- Horizontal bars: the categories go on `y`, the values on `x`. -->
|
|
120
|
-
<BarPlot
|
|
121
|
-
width={720}
|
|
122
|
-
height={400}
|
|
123
|
-
data={PROVINCE_VALUES}
|
|
124
|
-
x="value"
|
|
125
|
-
y="province"
|
|
126
|
-
color="sex"
|
|
127
|
-
scales={{ x: { domain: [70, 85] } }}
|
|
128
|
-
/>
|
|
129
|
-
```
|
|
130
|
-
|
|
131
|
-
<!-- /example -->
|
|
132
|
-
|
|
133
|
-

|
|
134
|
-
|
|
135
|
-
- Several series sharing a category sit side by side, each in its slice of the category band. The gap between them is `bar.seriesPadding` in the configuration.
|
|
136
|
-
- `transforms={[{ type: 'stackY' }]}` stacks the series instead. Stacking is always `stackY`, also for horizontal bars, because the value channel is the one stacked.
|
|
137
|
-
- `scales.x.paddingInner` / `paddingOuter` set the spacing between category bands.
|
|
138
|
-
- `styles.values.show` labels each bar; `styles.values.anchor` places the label (`'outside'`, `'start'`, `'middle'`, `'end'`).
|
|
139
|
-
- The tooltip triggers anywhere over a bar's whole band, not just over the visible bar.
|
|
140
|
-
|
|
141
|
-
## HistogramPlot
|
|
142
|
-
|
|
143
|
-
Bins the rows of each series along one axis and draws the count per bin. Give `x` alone for vertical bars or `y` alone for horizontal bars.
|
|
144
|
-
|
|
145
|
-
<!-- example: examples/Histogram.svelte -->
|
|
146
|
-
|
|
147
|
-
```svelte
|
|
148
|
-
<script lang="ts">
|
|
149
|
-
import { HistogramPlot } from '@fundar/data-chart-telling';
|
|
150
|
-
import { HEIGHTS } from './data';
|
|
151
|
-
</script>
|
|
152
|
-
|
|
153
|
-
<!-- Two overlapping distributions, one per `grouping` value. -->
|
|
154
|
-
<HistogramPlot
|
|
155
|
-
width={720}
|
|
156
|
-
height={400}
|
|
157
|
-
data={HEIGHTS}
|
|
158
|
-
x="height"
|
|
159
|
-
grouping="group"
|
|
160
|
-
segments={{ default: [{ styles: { fillOpacity: 0.7 } }] }}
|
|
161
|
-
/>
|
|
162
|
-
```
|
|
163
|
-
|
|
164
|
-
<!-- /example -->
|
|
165
|
-
|
|
166
|
-

|
|
167
|
-
|
|
168
|
-
- `grouping` (or `color`) draws one histogram per group.
|
|
169
|
-
- Override the default binning with a `binX` (or `binY`) transform: `transforms={[{ type: 'binX', thresholds: 20 }]}`. A transform given here is merged over the default one.
|
|
170
|
-
- `transforms={[{ type: 'stackY' }]}` stacks groups in each bin.
|
|
171
|
-
- `segments={{ default: [{ styles: { fillOpacity: 0.7 } }] }}` makes overlapping groups translucent.
|
|
172
|
-
|
|
173
|
-
## BoxPlot
|
|
174
|
-
|
|
175
|
-
Summarizes the values of each series per category as a box: it spans the middle half of the values (25th to 75th percentile), the line across it is the median, the whiskers reach the farthest values within 1.5 times the box's height, and dots mark the values past them. String values on `x` stand the boxes upright; on `y` they lie sideways.
|
|
176
|
-
|
|
177
|
-
<!-- example: examples/Box.svelte -->
|
|
178
|
-
|
|
179
|
-
```svelte
|
|
180
|
-
<script lang="ts">
|
|
181
|
-
import { BoxPlot } from '@fundar/data-chart-telling';
|
|
182
|
-
import { HEIGHTS } from './data';
|
|
183
|
-
</script>
|
|
184
|
-
|
|
185
|
-
<!-- One box per group: quartiles, median, whiskers and outliers of each height distribution. -->
|
|
186
|
-
<BoxPlot width={720} height={400} data={HEIGHTS} x="group" y="height" color="group" />
|
|
187
|
-
```
|
|
188
|
-
|
|
189
|
-
<!-- /example -->
|
|
190
|
-
|
|
191
|
-

|
|
192
|
-
|
|
193
|
-
- `grouping` (or `color`) draws one box per group and category. Groups that share categories draw their boxes on top of each other, so split them with `facet` instead, or color by the category field itself.
|
|
194
|
-
- Categories keep the order the data gives them; `scales.x.domain` (or `y`) orders them.
|
|
195
|
-
- The value axis fits the values without reaching for zero; pin `scales.y.domain` to start it at zero.
|
|
196
|
-
- `scales.x.paddingInner` / `paddingOuter` set how wide the boxes are; the defaults come from `box` in the [configuration](theming.md).
|
|
197
|
-
- The tooltip reads one box at a time, not every value inside it: the hovered row carries `category`, `min`, `p25`, `median`, `p75`, `max`, `count` and `outliers`.
|
|
198
|
-
- `segments` restyle whole categories (`areas: [{ x: { from: 'Bus', to: 'Bus' } }]`). A segment that splits one category's values draws two boxes.
|
|
199
|
-
|
|
200
|
-
## HeatmapPlot
|
|
201
|
-
|
|
202
|
-
A grid of cells, `x` and `y` being the categories of the columns and rows and `color` the value that colors each cell.
|
|
203
|
-
|
|
204
|
-
<!-- example: examples/Heatmap.svelte -->
|
|
205
|
-
|
|
206
|
-
```svelte
|
|
207
|
-
<script lang="ts">
|
|
208
|
-
import { HeatmapPlot } from '@fundar/data-chart-telling';
|
|
209
|
-
import { HOUSEHOLDS } from './data';
|
|
210
|
-
</script>
|
|
211
|
-
|
|
212
|
-
<!-- One cell per number of rooms and of people, colored by the share of households. -->
|
|
213
|
-
<HeatmapPlot width={560} height={360} data={HOUSEHOLDS} x="rooms" y="people" color="share" />
|
|
214
|
-
```
|
|
215
|
-
|
|
216
|
-
<!-- /example -->
|
|
217
|
-
|
|
218
|
-

|
|
219
|
-
|
|
220
|
-
- The color domain spans the whole dataset, so it stays comparable across [facets](facets.md).
|
|
221
|
-
- Cell value labels are on by default (`styles.values.show` turns them off).
|
|
222
|
-
- `segments` restyle chosen columns, rows or single cells (see [Styles and segments](styles-and-segments.md)).
|
|
223
|
-
- Hover matches one cell at a time.
|
|
224
|
-
|
|
225
|
-
## PyramidPlot
|
|
226
|
-
|
|
227
|
-
Two series mirrored around a shared zero baseline, such as a population pyramid. Categories on `y` give horizontal bars; categories on `x` give vertical ones.
|
|
228
|
-
|
|
229
|
-
<!-- example: examples/Pyramid.svelte -->
|
|
230
|
-
|
|
231
|
-
```svelte
|
|
232
|
-
<script lang="ts">
|
|
233
|
-
import { PyramidPlot } from '@fundar/data-chart-telling';
|
|
234
|
-
import { AGES } from './data';
|
|
235
|
-
</script>
|
|
236
|
-
|
|
237
|
-
<!-- A population pyramid: one side per `color` value. -->
|
|
238
|
-
<PyramidPlot width={720} height={400} data={AGES} x="share" y="ageGroup" color="sex" />
|
|
239
|
-
```
|
|
240
|
-
|
|
241
|
-
<!-- /example -->
|
|
242
|
-
|
|
243
|
-

|
|
244
|
-
|
|
245
|
-
- `scales.grouping.reverse` swaps which series sits on which side.
|
|
246
|
-
- Hover finds the points sharing the hovered category.
|
|
247
|
-
|
|
248
|
-
## ScatterPlot
|
|
249
|
-
|
|
250
|
-
A dot per row.
|
|
251
|
-
|
|
252
|
-
<!-- example: examples/Scatter.svelte -->
|
|
253
|
-
|
|
254
|
-
```svelte
|
|
255
|
-
<script lang="ts">
|
|
256
|
-
import { ScatterPlot } from '@fundar/data-chart-telling';
|
|
257
|
-
import { COUNTRIES } from './data';
|
|
258
|
-
</script>
|
|
259
|
-
|
|
260
|
-
<!-- Points sized by `r`, colored by `color` and shaped by `symbol`. -->
|
|
261
|
-
<ScatterPlot
|
|
262
|
-
width={720}
|
|
263
|
-
height={420}
|
|
264
|
-
data={COUNTRIES}
|
|
265
|
-
x="gdp"
|
|
266
|
-
y="life"
|
|
267
|
-
r="population"
|
|
268
|
-
color="continent"
|
|
269
|
-
symbol="income"
|
|
270
|
-
/>
|
|
271
|
-
```
|
|
272
|
-
|
|
273
|
-
<!-- /example -->
|
|
274
|
-
|
|
275
|
-

|
|
276
|
-
|
|
277
|
-
- `r` sizes the dots (area follows the value; configure with `scales.r`). The legend gets a size section.
|
|
278
|
-
- `symbol` varies the dot shape by category (`scales.symbol`), `opacity` varies transparency, `color` colors by category or by a continuous ramp.
|
|
279
|
-
- A literal number for `r` is a fixed radius in pixels.
|
|
280
|
-
- `dotRadius` defaults come from `scatter.dotRadius` in the configuration.
|
|
281
|
-
|
|
282
|
-
## GeoPlot
|
|
283
|
-
|
|
284
|
-
Draws GeoJSON or TopoJSON as a map: base features, a choropleth through `color`, per-feature `segments`, projections, camera and map-specific markers. It has its own page: [Maps](geo.md).
|
package/docs/scales.md
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
```svelte
|
|
8
8
|
<script lang="ts">
|
|
9
9
|
import { LinePlot } from '@fundar/data-chart-telling';
|
|
10
|
-
import { PRICES } from './
|
|
10
|
+
import { PRICES } from './datasets';
|
|
11
11
|
</script>
|
|
12
12
|
|
|
13
13
|
<!-- Axis labels, a fixed domain with gridlines and a color per series. -->
|
|
@@ -41,21 +41,26 @@
|
|
|
41
41
|
|
|
42
42
|
Each axis takes an `AxisScale`.
|
|
43
43
|
|
|
44
|
-
| Field | Meaning
|
|
45
|
-
| ---------------------------------------------------------------------------- |
|
|
46
|
-
| `type` | `'auto'` (default), `'linear'`, `'pow'`, `'sqrt'`, `'log'`, `'symlog'`, `'time'`, `'utc'`, `'band'`, `'point'`, `'ordinal'`, `'categorical'` and the color-oriented types (`'sequential'`, `'diverging'`, `'threshold'`, ...)
|
|
47
|
-
| `domain`, `range` | Explicit input and output extent
|
|
48
|
-
| `reverse`, `
|
|
49
|
-
| `
|
|
50
|
-
| `edgeTicks` | Ticks at the data's first and last values beside the nice ones. `false` turns them off, `true` on, `{ collision: 'drop-nice' \| 'drop-edge' \| 'extend' }` picks what happens when one crowds a nice tick. Defaults to `axis.edgeTicks.x` / `.y` in the [configuration](theming.md#edge-ticks) (on for x, off for y); ignored when the axis sets `ticks`, `tickSpacing`, `interval` or `domain`
|
|
51
|
-
| `label`, `labelAnchor`, `labelOrientation`, `labelPosition`, `titleFontSize` | The axis title (`label: false` hides it)
|
|
52
|
-
| `ticks`, `tickSpacing`, `tickSize`, `tickPadding`, `tickRotate` | Tick placement and size
|
|
53
|
-
| `tickFormat` | `false`, an `Intl.NumberFormatOptions` / `Intl.DateTimeFormatOptions` object, or `(d, index, ticks) => string`
|
|
54
|
-
| `grid` | `true` or a stroke style for gridlines
|
|
55
|
-
| `axisDisplay` | `'visible'` (default), `'hidden'` (keeps the space, so aligned panels stay aligned) or `'none'`
|
|
56
|
-
| `padding`, `paddingInner`, `paddingOuter`, `align` | Band and point spacing
|
|
57
|
-
| `insetLeft`, `insetRight`, `insetTop`, `insetBottom` | Pixels kept free at each end
|
|
58
|
-
| `interval`, `base`, `constant
|
|
44
|
+
| Field | Meaning |
|
|
45
|
+
| ---------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
46
|
+
| `type` | `'auto'` (default), `'linear'`, `'pow'`, `'sqrt'`, `'log'`, `'symlog'`, `'time'`, `'utc'`, `'band'`, `'point'`, `'ordinal'`, `'categorical'` and the color-oriented types (`'sequential'`, `'diverging'`, `'threshold'`, ...) |
|
|
47
|
+
| `domain`, `range` | Explicit input and output extent |
|
|
48
|
+
| `reverse`, `zero`, `clamp`, `round`, `percent` | Direction, rounding and baseline behaviour |
|
|
49
|
+
| `nice` | `true` or `false` to round the domain out to round numbers or not, or `{ tolerance }`: how far past a tick, as a share of the step, a domain the plot nices itself still ends on it (default `0.05`), so parts adding up to `100.2` stay at `100`. Applies to stacked and ranged axes, axes grown to cover markers or a transform's output, a bar plot's value axis and shared facet/timeline domains; `tolerance: 0` rounds like d3 |
|
|
50
|
+
| `edgeTicks` | Ticks at the data's first and last values beside the nice ones. `false` turns them off, `true` on, `{ collision: 'drop-nice' \| 'drop-edge' \| 'extend' }` picks what happens when one crowds a nice tick. Defaults to `axis.edgeTicks.x` / `.y` in the [configuration](theming.md#edge-ticks) (on for x, off for y); ignored when the axis sets `ticks`, `tickSpacing`, `interval` or `domain` |
|
|
51
|
+
| `label`, `labelAnchor`, `labelOrientation`, `labelPosition`, `titleFontSize` | The axis title (`label: false` hides it) |
|
|
52
|
+
| `ticks`, `tickSpacing`, `tickSize`, `tickPadding`, `tickRotate` | Tick placement and size |
|
|
53
|
+
| `tickFormat` | `false`, an `Intl.NumberFormatOptions` / `Intl.DateTimeFormatOptions` object, or `(d, index, ticks) => string` |
|
|
54
|
+
| `grid` | `true` or a stroke style for gridlines |
|
|
55
|
+
| `axisDisplay` | `'visible'` (default), `'hidden'` (keeps the space, so aligned panels stay aligned) or `'none'` |
|
|
56
|
+
| `padding`, `paddingInner`, `paddingOuter`, `align` | Band and point spacing |
|
|
57
|
+
| `insetLeft`, `insetRight`, `insetTop`, `insetBottom` | Pixels kept free at each end |
|
|
58
|
+
| `interval`, `base`, `constant` | Time/discrete intervals, log base, symlog constant |
|
|
59
|
+
| `sort` | Category order: a comparator of two rows, or by what the categories hold (below) |
|
|
60
|
+
|
|
61
|
+
A category axis whose labels do not fit side by side turns them by itself: to 45 degrees, else to 90, and when even that is not enough it writes only every few labels (and a vertical category axis, such as the one of horizontal bars, does the same). The margin grows to fit the turned labels. An axis with a `tickRotate` of its own - 0 included, which keeps the labels flat - is left as the author set it, and `axis.autoRotate: false` in the [configuration](theming.md) turns this off for every plot.
|
|
62
|
+
|
|
63
|
+
A category axis can be ordered by what its categories hold, without writing a comparator: `sort: { by: 'value', series?, order? }` orders them by their value in one `series` (or, without it, by the sum of their values) and `sort: { by: 'range', order? }` by the spread between their lowest and their highest value; `order` is `'ascending'` (default) or `'descending'`. `grouped: true` orders within each series instead of across all of them: the series stay together, in the order they first appear. On a plot with intervals (`lower`/`upper`) the range counts the interval's ends. A category with nothing to order by goes last. An explicit `domain` wins. With [facets](facets.md) the order is read off every panel's rows, so the panels share it.
|
|
59
64
|
|
|
60
65
|
Number and date text defaults follow `axis.locale` and `axis.compactDisplay` in the [configuration](theming.md#locale).
|
|
61
66
|
|
|
@@ -63,20 +68,21 @@ Number and date text defaults follow `axis.locale` and `axis.compactDisplay` in
|
|
|
63
68
|
|
|
64
69
|
`scales.color` configures the `color` channel (and a choropleth on a map).
|
|
65
70
|
|
|
66
|
-
| Field
|
|
67
|
-
|
|
|
68
|
-
| `domain`
|
|
69
|
-
| `scheme`
|
|
70
|
-
| `
|
|
71
|
-
| `
|
|
71
|
+
| Field | Meaning |
|
|
72
|
+
| ------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
73
|
+
| `domain` | `[min, max]` for a continuous value, or the list of categories |
|
|
74
|
+
| `scheme` | A named [d3-scale-chromatic](https://d3js.org/d3-scale-chromatic) ramp (`'turbo'`, `'blues'`, `'rdylbu'`, case-insensitive), two or more colors to interpolate, or a `Record<category, color>` |
|
|
75
|
+
| `schemeRange` | The part of a named `scheme` to use, as `[from, to]` fractions of it (default `[0, 1]`): `[0.3, 1]` skips the near-white start of a ramp like `'blues'` |
|
|
76
|
+
| `pivot` | Splits an array `scheme` into two halves meeting at this value (a diverging ramp) |
|
|
77
|
+
| `unknown` | Color of a value outside the mapping (default `#ccc`) |
|
|
72
78
|
|
|
73
|
-
A continuous ramp is set with `scheme: [colorA, colorB]`. Categorical colors come from the configuration's `palette` unless `scheme` is a category-to-color record.
|
|
79
|
+
A continuous ramp is set with `scheme: [colorA, colorB]`. Categorical colors come from the configuration's `palette` unless `scheme` is a category-to-color record. Series that follow one another (years, say) read better on a named sequential ramp, which is sampled across the series in order: `scheme: 'blues', schemeRange: [0.3, 1]`.
|
|
74
80
|
|
|
75
81
|
A marker can carry its own `scales.color`, independent of the plot's, so two ramps can coexist in one plot.
|
|
76
82
|
|
|
77
83
|
## Grouping
|
|
78
84
|
|
|
79
|
-
`scales.grouping.reverse` flips which group sorts first, such as which side of a [pyramid](plots.md
|
|
85
|
+
`scales.grouping.reverse` flips which group sorts first, such as which side of a [pyramid](plots/distribution/pyramid.md) a series sits on.
|
|
80
86
|
|
|
81
87
|
## Opacity
|
|
82
88
|
|