@fundar/data-chart-telling 1.1.0 → 1.3.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 +45 -0
- package/README.md +8 -7
- package/dist/configuration/config.svelte.d.ts +1 -1
- package/dist/configuration/config.svelte.js +177 -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/facet/scope.d.ts +40 -0
- package/dist/layout/facet/scope.js +104 -0
- 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 +39 -15
- 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 +23 -8
- 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 +35 -8
- package/dist/layout/plot/Plot.svelte +22 -2
- 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 +93 -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.d.ts +6 -1
- package/dist/markers/delta/Delta.js +16 -1
- package/dist/markers/delta/DeltaMarker.svelte +9 -87
- package/dist/markers/delta/DeltaPoint.svelte +97 -0
- package/dist/markers/delta/DeltaPoint.svelte.d.ts +29 -0
- 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 +14 -5
- 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/facet/FacetPhase.d.ts +2 -1
- package/dist/phases/facet/FacetPhase.js +19 -4
- 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 +16 -3
- 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.d.ts +4 -1
- package/dist/plots/utils/segments.js +20 -7
- package/dist/types/configuration/styling.d.ts +284 -143
- package/dist/types/layout/coordinates.d.ts +5 -4
- package/dist/types/layout/facet.d.ts +18 -0
- package/dist/types/layout/legend.d.ts +23 -5
- package/dist/types/layout/plot.d.ts +46 -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/delta.d.ts +15 -2
- 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 +18 -2
- 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/facet/phase.d.ts +4 -0
- 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 +7 -4
- 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/types/plots/segments/config.d.ts +4 -2
- 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 +50 -3
- package/docs/getting-started.md +2 -2
- package/docs/legend.md +13 -11
- package/docs/markers.md +57 -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 +25 -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/FacetsScoped.svelte +26 -0
- 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 +27 -14
- package/llms.txt +33 -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
package/docs/development.md
CHANGED
|
@@ -53,7 +53,7 @@ Every option has a story under `stories/`, grouped as Plots, Markers, Transforms
|
|
|
53
53
|
|
|
54
54
|
## Documentation figures
|
|
55
55
|
|
|
56
|
-
Every screenshot in the docs is an example, rendered by Playwright to `docs/images/<name>.png` in kebab-case (`examples/LineByRegion.svelte` is `line-by-region.png`). The examples and the screenshots share
|
|
56
|
+
Every screenshot in the docs is an example, rendered by Playwright to `docs/images/<name>.png` in kebab-case (`examples/LineByRegion.svelte` is `line-by-region.png`). The examples and the screenshots share small real datasets, one file each in `examples/datasets/`, which name their source, and axes are set to English. `docs/images` is left out of the npm package. So are the map boundaries the stories draw: the GeoJSON files in `examples/geo/`, and the datasets in `examples/datasets/` that load them (provinces, countries, comunas, partidos), which are not in the `$datasets` barrel - import them as `$datasets/<name>`.
|
|
57
57
|
|
|
58
58
|
```bash
|
|
59
59
|
pnpm docs:images # regenerate docs/images/*.png
|
package/docs/facets.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 { REGION_VALUES } from './
|
|
10
|
+
import { REGION_VALUES } from './datasets';
|
|
11
11
|
</script>
|
|
12
12
|
|
|
13
13
|
<!-- One panel per region, three columns, sharing scales. A tooltip with `sync` shows in every panel on purpose. -->
|
|
@@ -52,7 +52,7 @@ The data phases (grouping, transforms, statistics, shared scales) run once for a
|
|
|
52
52
|
```svelte
|
|
53
53
|
<script lang="ts">
|
|
54
54
|
import { LinePlot } from '@fundar/data-chart-telling';
|
|
55
|
-
import { REGION_VALUES } from './
|
|
55
|
+
import { REGION_VALUES } from './datasets';
|
|
56
56
|
</script>
|
|
57
57
|
|
|
58
58
|
<!-- A carousel shows `visible` panels at a time, with navigation below. -->
|
|
@@ -79,7 +79,7 @@ The data phases (grouping, transforms, statistics, shared scales) run once for a
|
|
|
79
79
|
```svelte
|
|
80
80
|
<script lang="ts">
|
|
81
81
|
import { LinePlot } from '@fundar/data-chart-telling';
|
|
82
|
-
import { REGION_VALUES } from './
|
|
82
|
+
import { REGION_VALUES } from './datasets';
|
|
83
83
|
|
|
84
84
|
// Each region's value split into two sectors.
|
|
85
85
|
const SECTORS = [
|
|
@@ -106,6 +106,53 @@ The data phases (grouping, transforms, statistics, shared scales) run once for a
|
|
|
106
106
|
|
|
107
107
|

|
|
108
108
|
|
|
109
|
+
## Markers and segments in some panels
|
|
110
|
+
|
|
111
|
+
Every panel draws the plot's `markers` and `segments`. Add `facet` to one to limit it to the panels it names: the value of its `by` field, or a list of them. Without `facet` it applies to every panel, as before.
|
|
112
|
+
|
|
113
|
+
<!-- example: examples/FacetsScoped.svelte -->
|
|
114
|
+
|
|
115
|
+
```svelte
|
|
116
|
+
<script lang="ts">
|
|
117
|
+
import { LinePlot } from '@fundar/data-chart-telling';
|
|
118
|
+
import { REGION_VALUES } from './datasets';
|
|
119
|
+
|
|
120
|
+
// Each region's value split into two sectors.
|
|
121
|
+
const SECTORS = [
|
|
122
|
+
{ sector: 'Goods', share: 0.8 },
|
|
123
|
+
{ sector: 'Services', share: 1.4 }
|
|
124
|
+
];
|
|
125
|
+
const rows = REGION_VALUES.flatMap((row) =>
|
|
126
|
+
SECTORS.map(({ sector, share }) => ({ ...row, sector, value: row.value * share }))
|
|
127
|
+
);
|
|
128
|
+
</script>
|
|
129
|
+
|
|
130
|
+
<!-- One panel per region. `facet` on a marker or a segment limits it to the panels it names: the rule is drawn in GBA only, and Services is dashed in Cuyo only. -->
|
|
131
|
+
<LinePlot
|
|
132
|
+
width={900}
|
|
133
|
+
height={360}
|
|
134
|
+
data={rows}
|
|
135
|
+
x="date"
|
|
136
|
+
y="value"
|
|
137
|
+
color="sector"
|
|
138
|
+
facet={{ by: 'region', columns: 3 }}
|
|
139
|
+
markers={[{ type: 'rule', axis: 'y', value: 10, facet: 'GBA' }]}
|
|
140
|
+
segments={{ Services: [{ facet: 'Cuyo', styles: { stroke: { strokeDasharray: '4 4' } } }] }}
|
|
141
|
+
/>
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
<!-- /example -->
|
|
145
|
+
|
|
146
|
+

|
|
147
|
+
|
|
148
|
+
| `facet` | Applies to |
|
|
149
|
+
| ------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
150
|
+
| _not set_ | Every panel, and a plot with no facet |
|
|
151
|
+
| `'GBA'` or `['GBA', 'Cuyo']` | The panels with that `by` value (numbers and booleans match the text they print as) |
|
|
152
|
+
| `{ row: 'GBA' }`, `{ col: 'Goods' }` | In a `rows`/`cols` grid, the panels with that row or column value; `{ row, col }` takes both, and a side left out matches every value of it |
|
|
153
|
+
|
|
154
|
+
A marker or a segment that names a facet is not drawn by a plot that has none. It works on every plot kind: a `GeoPlot` map takes it the same way, on top of slicing its marker rows by the facet field.
|
|
155
|
+
|
|
109
156
|
## Alignment
|
|
110
157
|
|
|
111
158
|
Panels line up: each plot reports the margins it settled on, and once all have, every column and row pins its widest ones, so the plot areas align whatever their tick labels need.
|
package/docs/getting-started.md
CHANGED
|
@@ -18,7 +18,7 @@ pnpm add @fundar/data-chart-telling svelte svelteplot
|
|
|
18
18
|
```svelte
|
|
19
19
|
<script lang="ts">
|
|
20
20
|
import { LinePlot } from '@fundar/data-chart-telling';
|
|
21
|
-
import { REGION_VALUES } from './
|
|
21
|
+
import { REGION_VALUES } from './datasets';
|
|
22
22
|
</script>
|
|
23
23
|
|
|
24
24
|
<!-- The smallest useful plot: rows, the fields to map and a pixel size. -->
|
|
@@ -29,7 +29,7 @@ pnpm add @fundar/data-chart-telling svelte svelteplot
|
|
|
29
29
|
|
|
30
30
|

|
|
31
31
|
|
|
32
|
-
- `data` is an array of flat rows, here `{ date, region, value }` from [examples/
|
|
32
|
+
- `data` is an array of flat rows, here `{ date, region, value }` from [examples/datasets/inflation-by-region.ts](../examples/datasets/inflation-by-region.ts); `x` and `y` name the fields that position each row.
|
|
33
33
|
- `color="region"` splits the rows into one series per region and gives each its own color.
|
|
34
34
|
- `width` and `height` are pixels.
|
|
35
35
|
|
package/docs/legend.md
CHANGED
|
@@ -6,13 +6,13 @@ A plot builds its legend from what it draws: its series, the scales its channels
|
|
|
6
6
|
|
|
7
7
|
`legend` is unset or `true` for the automatic legend, `false` for none. The automatic legend can have these sections:
|
|
8
8
|
|
|
9
|
-
| Section | Appears when | Content
|
|
10
|
-
| ------------------ | ------------------------------- |
|
|
11
|
-
| series (discrete) | the plot has several series | one item per series, in its color and mark
|
|
12
|
-
| color (continuous) | `color` is a continuous value | a ramp with its min and max
|
|
13
|
-
| opacity | `opacity` is a continuous value | a
|
|
14
|
-
| size | `r` is mapped | a few dots at representative values
|
|
15
|
-
| symbol | `symbol` is mapped | each category next to its shape
|
|
9
|
+
| Section | Appears when | Content |
|
|
10
|
+
| ------------------ | ------------------------------- | ---------------------------------------------------------- |
|
|
11
|
+
| series (discrete) | the plot has several series | one item per series, in its color and mark |
|
|
12
|
+
| color (continuous) | `color` is a continuous value | a ramp with its min and max |
|
|
13
|
+
| opacity | `opacity` is a continuous value | a bar fading across the opacity range, over a checkerboard |
|
|
14
|
+
| size | `r` is mapped | a few dots at representative values |
|
|
15
|
+
| symbol | `symbol` is mapped | each category next to its shape |
|
|
16
16
|
|
|
17
17
|
Segments and markers join the series section when they carry a `legend` label:
|
|
18
18
|
|
|
@@ -42,7 +42,7 @@ Items become clickable with `interactive` on the series section. `disabled` says
|
|
|
42
42
|
```svelte
|
|
43
43
|
<script lang="ts">
|
|
44
44
|
import { LinePlot } from '@fundar/data-chart-telling';
|
|
45
|
-
import { REGION_VALUES } from './
|
|
45
|
+
import { REGION_VALUES } from './datasets';
|
|
46
46
|
import LegendReader from './LegendReader.svelte';
|
|
47
47
|
</script>
|
|
48
48
|
|
|
@@ -94,12 +94,12 @@ legend={{
|
|
|
94
94
|
series: { title: 'Division', layout: { type: 'flex' } },
|
|
95
95
|
color: { title: 'Temperature', interactive: { enabled: true } },
|
|
96
96
|
opacity: { title: 'Confidence' },
|
|
97
|
-
|
|
97
|
+
r: { title: 'Population' },
|
|
98
98
|
symbol: { title: 'Income group' }
|
|
99
99
|
}}
|
|
100
100
|
```
|
|
101
101
|
|
|
102
|
-
Each channel
|
|
102
|
+
Each key is the name of the channel (the plot's own prop: `r` for the size section) and adjusts the section that channel draws: any section field except what the plots compute (items, ranges, domains). An entry with `match` adjusts only the section whose title matches; a list of entries adjusts several.
|
|
103
103
|
|
|
104
104
|
## Explicit sections
|
|
105
105
|
|
|
@@ -110,7 +110,7 @@ A list replaces the automatic legend with exactly those sections:
|
|
|
110
110
|
```svelte
|
|
111
111
|
<script lang="ts">
|
|
112
112
|
import { LinePlot } from '@fundar/data-chart-telling';
|
|
113
|
-
import { REGION_VALUES } from './
|
|
113
|
+
import { REGION_VALUES } from './datasets';
|
|
114
114
|
</script>
|
|
115
115
|
|
|
116
116
|
<!-- An explicit legend: a discrete section of toggles and a continuous ramp. -->
|
|
@@ -150,4 +150,6 @@ Section types:
|
|
|
150
150
|
|
|
151
151
|
## Placement and look
|
|
152
152
|
|
|
153
|
+
An opacity section draws its bar as one color fading over a checkerboard, so it reads as transparency and not as a color ramp; the color is the marker's own when it has one, else `legend.continuous.opacity.color` (black by default), and `legend.continuous.opacity.checker` sets the squares.
|
|
154
|
+
|
|
153
155
|
The legend is a chrome block: `order` places it (`'legend'`, or in a row with the plot). Its fonts, gaps, swatch size and the continuous bar's geometry are `legend.*` in the [configuration](theming.md). A paginated section's prev/next arrows are replaceable with a `navButton` snippet.
|
package/docs/markers.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 { LIFE } from './
|
|
10
|
+
import { LIFE } from './datasets';
|
|
11
11
|
</script>
|
|
12
12
|
|
|
13
13
|
<!-- Markers add marks to a plot: a hover highlight, a reference rule and a delta between two series. -->
|
|
@@ -45,43 +45,73 @@ Markers draw in array order. Type a markers array with `satisfies AxisBasedMarke
|
|
|
45
45
|
| Field | Meaning |
|
|
46
46
|
| -------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
47
47
|
| `data` | The marker's own rows. Unset, it draws the plot's rows |
|
|
48
|
-
| `x`, `y`, `grouping` | Accessors, when the marker reads other fields than the plot
|
|
48
|
+
| `x`, `y`, `grouping` | Accessors, when the marker reads other fields than the plot (a `bollinger` marker takes the plot's own `x` and `y` when it sets none) |
|
|
49
49
|
| `series` | Draw over one series only (by name) |
|
|
50
50
|
| `scope` | With `series`: `'series'` (default) draws once over the whole series; `'segment'` draws once per [segment](styles-and-segments.md), in its color - a `selectMaxY` marks each segment's own peak |
|
|
51
51
|
| `scales` | The marker's own `color`/`opacity`/`symbol` scales, independent of the plot's |
|
|
52
52
|
| `transforms`, `statistics` | Derive rows for this marker ([Transforms](transforms-and-statistics.md)) |
|
|
53
53
|
| `clip` | Clip to the plot's frame |
|
|
54
|
+
| `dx`, `dy` | Move the marker this many pixels right and down, on a map too. A `dot`, `text` or `image` marker also takes a function of the row, to move each row on its own: `dy: (row) => row.side * 15` |
|
|
54
55
|
| `legend` | Name the marker on the automatic [legend](legend.md) |
|
|
55
56
|
|
|
56
57
|
Many markers also take channel fields (`color`, `fill`, `opacity`, `r`, `symbol`, `weight`, `x1`/`x2`/`y1`/`y2`) and a `styles` object (`StrokeStyle`, `AreaStyle`, `DotStyle` or `FontStyle` depending on the mark).
|
|
57
58
|
|
|
58
59
|
## Catalog for axis-based plots
|
|
59
60
|
|
|
60
|
-
| `type` | Draws
|
|
61
|
-
| -------------------------------------------------------- |
|
|
62
|
-
| `dot` | A point per row; `r`, `color`, `symbol`, `styles` (`DotStyle`)
|
|
63
|
-
| `text` | A label per row; `text` (string or function), `styles` (`FontStyle`), `declutter`, `edgeAware`, `fitMargins`
|
|
64
|
-
| `line` | A line through the rows
|
|
65
|
-
| `rule` | A reference line: `axis: 'x' \| 'y'`, `value` (or a function with `data`), `styles`
|
|
66
|
-
| `tick` | A short tick per row along one axis
|
|
67
|
-
| `bar` | A bar; `rect`, `cell`: rectangles and heatmap cells
|
|
68
|
-
| `rect` | A rectangle from `x1`/`x2`/`y1`/`y2`; `interval` turns `x`/`y` into ranges
|
|
69
|
-
| `area` | A filled area under a curve, or between `y1` and `y2`; `curve`
|
|
70
|
-
| `difference` | The area between two series, colored by which one is on top
|
|
71
|
-
| `arrow` | An arrow from `x1,y1` to `x2,y2`; `bend`, `headAngle`, `headLength`
|
|
72
|
-
| `trail` | A variable-width ribbon along a path, its width set by `r`
|
|
73
|
-
| `delta` | The distance between two series (or a series and a fixed value) at a position, as a line and a label
|
|
74
|
-
| `hull` | The convex hull around a cluster of points
|
|
75
|
-
| `density` | 2D density contour bands
|
|
76
|
-
| `box` | A box plot; sub-marks styled through `bar`, `rule`, `dot`, `tickMedian`, `tickMinMax`
|
|
77
|
-
| `
|
|
78
|
-
| `
|
|
79
|
-
| `
|
|
80
|
-
| `
|
|
81
|
-
| `
|
|
82
|
-
| `
|
|
83
|
-
| `
|
|
84
|
-
| `
|
|
61
|
+
| `type` | Draws |
|
|
62
|
+
| -------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
63
|
+
| `dot` | A point per row; `r`, `color`, `symbol`, `styles` (`DotStyle`) |
|
|
64
|
+
| `text` | A label per row; `text` (string or function), `styles` (`FontStyle`), `declutter`, `edgeAware`, `fitMargins` |
|
|
65
|
+
| `line` | A line through the rows |
|
|
66
|
+
| `rule` | A reference line: `axis: 'x' \| 'y'`, `value` (a list draws a line at each, or a function with `data`), `styles`; with `data`, `stroke`, `strokeWidth` and `strokeOpacity` also take a field or function per row |
|
|
67
|
+
| `tick` | A short tick per row along one axis |
|
|
68
|
+
| `bar` | A bar; `rect`, `cell`: rectangles and heatmap cells |
|
|
69
|
+
| `rect` | A rectangle from `x1`/`x2`/`y1`/`y2`; `interval` turns `x`/`y` into ranges |
|
|
70
|
+
| `area` | A filled area under a curve, or between `y1` and `y2`; `curve` |
|
|
71
|
+
| `difference` | The area between two series, colored by which one is on top |
|
|
72
|
+
| `arrow` | An arrow from `x1,y1` to `x2,y2`; `bend`, `headAngle`, `headLength`; with `data`, `stroke`, `strokeWidth` and `strokeOpacity` also take a field or function per row |
|
|
73
|
+
| `trail` | A variable-width ribbon along a path, its width set by `r` |
|
|
74
|
+
| `delta` | The distance between two series (or a series and a fixed value) at a position - or at each of a list of them, `at: [1980, 2000]` - as a line and a label |
|
|
75
|
+
| `hull` | The convex hull around a cluster of points |
|
|
76
|
+
| `density` | 2D density contour bands |
|
|
77
|
+
| `box` | A box plot; sub-marks styled through `bar`, `rule`, `dot`, `tickMedian`, `tickMinMax`; `thickness` sets its width in pixels, `slot` its share of a band |
|
|
78
|
+
| `violin` | A violin per category of its rows: the mirrored density of `y` (or `x`), `kernel`, `bandwidth`, `trim`, `peak`, `slot`; add a narrow `box` over the same rows for the box inside |
|
|
79
|
+
| `regression`, `bollinger` | A fitted curve, a moving-average band |
|
|
80
|
+
| `waffle` | The value as a grid of unit squares; `unit`, `multiple`, `gap` |
|
|
81
|
+
| `voronoi`, `voronoiMesh`, `delaunayLink`, `delaunayMesh` | Voronoi cells and Delaunay triangulation |
|
|
82
|
+
| `image` | An image per row; `src`, `width`, `height` |
|
|
83
|
+
| `raster` | A field sampled over a rectangle, drawn to a canvas |
|
|
84
|
+
| `brush` | A drag-to-select rectangle with `onbrushstart`, `onbrush`, `onbrushend` |
|
|
85
|
+
| `hover` | The in-plot hover highlight (see below) |
|
|
86
|
+
| `component` | Your own Svelte component (see below) |
|
|
87
|
+
|
|
88
|
+
## Markers in some facets
|
|
89
|
+
|
|
90
|
+
On a plot with a [`facet`](facets.md#markers-and-segments-in-some-panels), every marker is drawn in every panel. A marker takes `facet`, a panel's value or a list of them, to be drawn only in the panels it names.
|
|
91
|
+
|
|
92
|
+
## Several positions at once
|
|
93
|
+
|
|
94
|
+
A `rule` takes a list as its `value`, and a `delta` a list as its `at`. One marker then draws one line, or one delta, at each position, all with the same style and the same ends - instead of one marker for each.
|
|
95
|
+
|
|
96
|
+
```ts
|
|
97
|
+
markers={[
|
|
98
|
+
// A rule at each of the three years.
|
|
99
|
+
{ type: 'rule', axis: 'x', value: [1991, 2001, 2010], styles: { strokeDasharray: '4 4' } },
|
|
100
|
+
// The gap between the two series at each of the three.
|
|
101
|
+
{ type: 'delta', axis: 'x', at: [1991, 2001, 2010], from: { type: 'series', series: 'female' }, to: { type: 'series', series: 'male' } }
|
|
102
|
+
]}
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
A delta's `line`, `text` and `dot` can be functions of the position, to style each one on its own - a label to the left of the last one, say, so it stays inside the plot:
|
|
106
|
+
|
|
107
|
+
```ts
|
|
108
|
+
{
|
|
109
|
+
type: 'delta', axis: 'x', at: [1991, 2001, 2022], from: { type: 'series', series: 'female' }, to: { type: 'series', series: 'male' },
|
|
110
|
+
text: (at) => (at === 2022 ? { dx: -20, textAnchor: 'end' } : { dx: 20 })
|
|
111
|
+
}
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
Every other marker draws from `data` rows, one mark per row, so it already takes many positions.
|
|
85
115
|
|
|
86
116
|
## Hover highlight
|
|
87
117
|
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# HeatmapPlot
|
|
2
|
+
|
|
3
|
+
Part of [Plots](../../plots.md).
|
|
4
|
+
|
|
5
|
+
A grid of cells, `x` and `y` being the categories of the columns and rows and `color` the value that colors each cell.
|
|
6
|
+
|
|
7
|
+
<!-- example: examples/Heatmap.svelte -->
|
|
8
|
+
|
|
9
|
+
```svelte
|
|
10
|
+
<script lang="ts">
|
|
11
|
+
import { HeatmapPlot } from '@fundar/data-chart-telling';
|
|
12
|
+
import { PENGUIN_COUNTS } from './datasets';
|
|
13
|
+
</script>
|
|
14
|
+
|
|
15
|
+
<!-- One cell per island and species, colored by the number of penguins. -->
|
|
16
|
+
<HeatmapPlot width={560} height={360} data={PENGUIN_COUNTS} x="island" y="species" color="count" />
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
<!-- /example -->
|
|
20
|
+
|
|
21
|
+

|
|
22
|
+
|
|
23
|
+
- The color domain spans the whole dataset, so it stays comparable across [facets](../../facets.md).
|
|
24
|
+
- Cell value labels are on by default (`styles.values.show` turns them off).
|
|
25
|
+
- `segments` restyle chosen columns, rows or single cells (see [Styles and segments](../../styles-and-segments.md)).
|
|
26
|
+
- Hover matches one cell at a time.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# ScatterPlot
|
|
2
|
+
|
|
3
|
+
Part of [Plots](../../plots.md).
|
|
4
|
+
|
|
5
|
+
A dot per row.
|
|
6
|
+
|
|
7
|
+
<!-- example: examples/Scatter.svelte -->
|
|
8
|
+
|
|
9
|
+
```svelte
|
|
10
|
+
<script lang="ts">
|
|
11
|
+
import { ScatterPlot } from '@fundar/data-chart-telling';
|
|
12
|
+
import { COUNTRIES_AT_2007 } from './datasets';
|
|
13
|
+
</script>
|
|
14
|
+
|
|
15
|
+
<!-- Points sized by `r`, colored by `color` and shaped by `symbol`. -->
|
|
16
|
+
<ScatterPlot
|
|
17
|
+
width={720}
|
|
18
|
+
height={420}
|
|
19
|
+
data={COUNTRIES_AT_2007}
|
|
20
|
+
x="gdp"
|
|
21
|
+
y="life"
|
|
22
|
+
r="population"
|
|
23
|
+
color="continent"
|
|
24
|
+
symbol="income"
|
|
25
|
+
/>
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
<!-- /example -->
|
|
29
|
+
|
|
30
|
+

|
|
31
|
+
|
|
32
|
+
- `r` sizes the dots (area follows the value; configure with `scales.r`). The legend gets a size section.
|
|
33
|
+
- `symbol` varies the dot shape by category (`scales.symbol`), `opacity` varies transparency, `color` colors by category or by a continuous ramp.
|
|
34
|
+
- A literal number for `r` is a fixed radius in pixels.
|
|
35
|
+
- `dotRadius` defaults come from `scatter.dotRadius` in the configuration.
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# BoxPlot
|
|
2
|
+
|
|
3
|
+
Part of [Plots](../../plots.md).
|
|
4
|
+
|
|
5
|
+
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.
|
|
6
|
+
|
|
7
|
+
<!-- example: examples/Box.svelte -->
|
|
8
|
+
|
|
9
|
+
```svelte
|
|
10
|
+
<script lang="ts">
|
|
11
|
+
import { BoxPlot } from '@fundar/data-chart-telling';
|
|
12
|
+
import { HEIGHTS } from './datasets';
|
|
13
|
+
</script>
|
|
14
|
+
|
|
15
|
+
<!-- One box per group: quartiles, median, whiskers and outliers of each height distribution. -->
|
|
16
|
+
<BoxPlot width={720} height={400} data={HEIGHTS} x="group" y="height" color="group" />
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
<!-- /example -->
|
|
20
|
+
|
|
21
|
+

|
|
22
|
+
|
|
23
|
+
- `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.
|
|
24
|
+
- Categories keep the order the data gives them; `scales.x.domain` (or `y`) orders them.
|
|
25
|
+
- The value axis fits the values without reaching for zero; pin `scales.y.domain` to start it at zero.
|
|
26
|
+
- `scales.x.paddingInner` / `paddingOuter` set how wide the boxes are; the defaults come from `box` in the [configuration](../../theming.md).
|
|
27
|
+
- 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`.
|
|
28
|
+
- `segments` restyle whole categories (`areas: [{ x: { from: 'Bus', to: 'Bus' } }]`). A segment that splits one category's values draws two boxes.
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# DensityPlot
|
|
2
|
+
|
|
3
|
+
Part of [Plots](../../plots.md).
|
|
4
|
+
|
|
5
|
+
Smooths the rows of each series along one axis into a kernel density estimate, the continuous pair of [HistogramPlot](histogram.md). Give `x` alone for a vertical curve or `y` alone for a horizontal one.
|
|
6
|
+
|
|
7
|
+
<!-- example: examples/Density.svelte -->
|
|
8
|
+
|
|
9
|
+
```svelte
|
|
10
|
+
<script lang="ts">
|
|
11
|
+
import { DensityPlot } from '@fundar/data-chart-telling';
|
|
12
|
+
import { HEIGHTS } from './datasets';
|
|
13
|
+
</script>
|
|
14
|
+
|
|
15
|
+
<!-- A smoothed distribution per `grouping` value, the continuous pair of a histogram. -->
|
|
16
|
+
<DensityPlot width={720} height={400} data={HEIGHTS} x="height" grouping="group" />
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
<!-- /example -->
|
|
20
|
+
|
|
21
|
+

|
|
22
|
+
|
|
23
|
+
- `grouping` (or `color`) draws one curve per group.
|
|
24
|
+
- `styles={{ mark: 'line' }}` draws lines instead of filled areas; `styles.curve` sets how a curve joins its points.
|
|
25
|
+
- Override the estimate with a `densityX` (or `densityY`) transform: `transforms={[{ type: 'densityX', bandwidth: 2 }]}`. A transform given here is merged over the default one; see [Transforms and statistics](../../transforms-and-statistics.md) for its options.
|
|
26
|
+
- `segments={{ default: [{ styles: { fillOpacity: 0.3 } }] }}` restyles the areas.
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# HistogramPlot
|
|
2
|
+
|
|
3
|
+
Part of [Plots](../../plots.md).
|
|
4
|
+
|
|
5
|
+
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.
|
|
6
|
+
|
|
7
|
+
<!-- example: examples/Histogram.svelte -->
|
|
8
|
+
|
|
9
|
+
```svelte
|
|
10
|
+
<script lang="ts">
|
|
11
|
+
import { HistogramPlot } from '@fundar/data-chart-telling';
|
|
12
|
+
import { HEIGHTS } from './datasets';
|
|
13
|
+
</script>
|
|
14
|
+
|
|
15
|
+
<!-- Two overlapping distributions, one per `grouping` value. -->
|
|
16
|
+
<HistogramPlot
|
|
17
|
+
width={720}
|
|
18
|
+
height={400}
|
|
19
|
+
data={HEIGHTS}
|
|
20
|
+
x="height"
|
|
21
|
+
grouping="group"
|
|
22
|
+
segments={{ default: [{ styles: { fillOpacity: 0.7 } }] }}
|
|
23
|
+
/>
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
<!-- /example -->
|
|
27
|
+
|
|
28
|
+

|
|
29
|
+
|
|
30
|
+
- `grouping` (or `color`) draws one histogram per group.
|
|
31
|
+
- 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.
|
|
32
|
+
- `transforms={[{ type: 'stackY' }]}` stacks groups in each bin.
|
|
33
|
+
- `segments={{ default: [{ styles: { fillOpacity: 0.7 } }] }}` makes overlapping groups translucent.
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# PyramidPlot
|
|
2
|
+
|
|
3
|
+
Part of [Plots](../../plots.md).
|
|
4
|
+
|
|
5
|
+
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.
|
|
6
|
+
|
|
7
|
+
<!-- example: examples/Pyramid.svelte -->
|
|
8
|
+
|
|
9
|
+
```svelte
|
|
10
|
+
<script lang="ts">
|
|
11
|
+
import { PyramidPlot } from '@fundar/data-chart-telling';
|
|
12
|
+
import { POPULATION_BY_AGE_AT_2022 } from './datasets';
|
|
13
|
+
</script>
|
|
14
|
+
|
|
15
|
+
<!-- A population pyramid: one side per `color` value. -->
|
|
16
|
+
<PyramidPlot
|
|
17
|
+
width={720}
|
|
18
|
+
height={400}
|
|
19
|
+
data={POPULATION_BY_AGE_AT_2022}
|
|
20
|
+
x="share"
|
|
21
|
+
y="ageGroup"
|
|
22
|
+
color="sex"
|
|
23
|
+
/>
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
<!-- /example -->
|
|
27
|
+
|
|
28
|
+

|
|
29
|
+
|
|
30
|
+
- `scales.grouping.reverse` swaps which series sits on which side.
|
|
31
|
+
- Hover finds the points sharing the hovered category.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# ViolinPlot
|
|
2
|
+
|
|
3
|
+
Part of [Plots](../../plots.md).
|
|
4
|
+
|
|
5
|
+
Draws, for each category, the density estimate of its values mirrored around the middle of its band, with a box inside: the shape of the distribution that [BoxPlot](box.md) summarizes. Give the category on `x` and the values on `y`, or swap them for horizontal violins.
|
|
6
|
+
|
|
7
|
+
<!-- example: examples/Violin.svelte -->
|
|
8
|
+
|
|
9
|
+
```svelte
|
|
10
|
+
<script lang="ts">
|
|
11
|
+
import { ViolinPlot } from '@fundar/data-chart-telling';
|
|
12
|
+
import { IRIS } from './datasets';
|
|
13
|
+
</script>
|
|
14
|
+
|
|
15
|
+
<!-- The sepal length of the flowers of each species: its density, mirrored, with a box inside. -->
|
|
16
|
+
<ViolinPlot
|
|
17
|
+
width={720}
|
|
18
|
+
height={400}
|
|
19
|
+
data={IRIS}
|
|
20
|
+
x="species"
|
|
21
|
+
y="sepalLength"
|
|
22
|
+
scales={{ y: { label: 'Sepal length (cm)' } }}
|
|
23
|
+
/>
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
<!-- /example -->
|
|
27
|
+
|
|
28
|
+

|
|
29
|
+
|
|
30
|
+
- `grouping` (or `color`) draws one violin per group inside each category's band, side by side. A category with fewer than two values in a group draws no violin.
|
|
31
|
+
- `styles.kernel` and `styles.bandwidth` set the estimate; Silverman's rule picks each violin's bandwidth when unset.
|
|
32
|
+
- `styles.trim` (default `true`) cuts each violin at its values' own extent. With `false` the tails fade out past it, beyond what the value axis reaches.
|
|
33
|
+
- `styles.scale: 'shared'` draws every violin on one density scale, so their areas compare; the default gives each the same full width.
|
|
34
|
+
- `styles.box: false` leaves the inner box out, and a number sets its width in pixels.
|
|
35
|
+
- Hovering a violin reads the same summary as a box plot: quartiles, whisker ends and the values past them.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# AreaPlot
|
|
2
|
+
|
|
3
|
+
Part of [Plots](../../plots.md).
|
|
4
|
+
|
|
5
|
+
One filled area per series, under the line from `y` to the baseline. Default fill opacity comes from `area.fillOpacity` in the configuration.
|
|
6
|
+
|
|
7
|
+
<!-- example: examples/StackedArea.svelte -->
|
|
8
|
+
|
|
9
|
+
```svelte
|
|
10
|
+
<script lang="ts">
|
|
11
|
+
import { AreaPlot } from '@fundar/data-chart-telling';
|
|
12
|
+
import { AGE_SHARES } from './datasets';
|
|
13
|
+
</script>
|
|
14
|
+
|
|
15
|
+
<!-- Each age group's share of the population, stacked with `stackY` so the bands add up to 100%. -->
|
|
16
|
+
<AreaPlot
|
|
17
|
+
width={720}
|
|
18
|
+
height={400}
|
|
19
|
+
data={AGE_SHARES}
|
|
20
|
+
x="year"
|
|
21
|
+
y="share"
|
|
22
|
+
color="ageGroup"
|
|
23
|
+
scales={{ x: { ticks: [1991, 2001, 2010, 2022] } }}
|
|
24
|
+
transforms={[{ type: 'stackY' }]}
|
|
25
|
+
/>
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
<!-- /example -->
|
|
29
|
+
|
|
30
|
+

|
|
31
|
+
|
|
32
|
+
`transforms={[{ type: 'stackY' }]}` stacks the series.
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
# LinePlot
|
|
2
|
+
|
|
3
|
+
Part of [Plots](../../plots.md).
|
|
4
|
+
|
|
5
|
+
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).
|
|
6
|
+
|
|
7
|
+
<!-- example: examples/LineDates.svelte -->
|
|
8
|
+
|
|
9
|
+
```svelte
|
|
10
|
+
<script lang="ts">
|
|
11
|
+
import { LinePlot } from '@fundar/data-chart-telling';
|
|
12
|
+
import { PRICES } from './datasets';
|
|
13
|
+
</script>
|
|
14
|
+
|
|
15
|
+
<!-- A line per commodity over a date axis, with end-of-line labels. -->
|
|
16
|
+
<LinePlot
|
|
17
|
+
width={720}
|
|
18
|
+
height={400}
|
|
19
|
+
data={PRICES}
|
|
20
|
+
x="date"
|
|
21
|
+
y="index"
|
|
22
|
+
color="commodity"
|
|
23
|
+
styles={{ values: { show: true, format: (v, name) => `${name}: ${v}` } }}
|
|
24
|
+
/>
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
<!-- /example -->
|
|
28
|
+
|
|
29
|
+

|
|
30
|
+
|
|
31
|
+
- `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. `styles.values.select` labels another point instead - or besides: `'first'`, `'min'`, `'max'`, or a list such as `['first', 'last']`.
|
|
32
|
+
- Hover finds the points sharing the hovered `x`.
|
|
33
|
+
- With a [`timeline`](../../timeline.md), the line reveals itself up to the current step and interpolates `y` between steps.
|
|
34
|
+
- `styles.curve` joins the points with another curve than the straight one: `'step'`, `'step-after'` and `'step-before'` draw stairs (a step plot), `'monotone-x'`, `'basis'` and `'catmull-rom'` smooth the line. The default is `'auto'` (straight segments), which `line.curve` in the [configuration](../../theming.md) sets for every line. There is no separate step plot: it is this one.
|
|
35
|
+
- `segments` style ranges of a line; `markers` add `delta`, `rule`, `text` and the rest (see [Markers](../../markers.md)).
|
|
36
|
+
|
|
37
|
+
## Step lines
|
|
38
|
+
|
|
39
|
+
A step plot suits a value that holds until something changes it (a rate, a price list, a life table). `styles.curve` takes any svelteplot curve; `'step-after'` holds each value until the next point, `'step-before'` reaches it at the previous one and `'step'` changes halfway.
|
|
40
|
+
|
|
41
|
+
<!-- example: examples/LineStep.svelte -->
|
|
42
|
+
|
|
43
|
+
```svelte
|
|
44
|
+
<script lang="ts">
|
|
45
|
+
import { LinePlot } from '@fundar/data-chart-telling';
|
|
46
|
+
import { LIFE } from './datasets';
|
|
47
|
+
</script>
|
|
48
|
+
|
|
49
|
+
<!-- A step plot is a line plot with a step curve: each life table holds its value until the next one. -->
|
|
50
|
+
<LinePlot
|
|
51
|
+
width={720}
|
|
52
|
+
height={380}
|
|
53
|
+
data={LIFE}
|
|
54
|
+
x="year"
|
|
55
|
+
y="value"
|
|
56
|
+
color="sex"
|
|
57
|
+
scales={{ x: { edgeTicks: true } }}
|
|
58
|
+
styles={{ curve: 'step-after' }}
|
|
59
|
+
/>
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
<!-- /example -->
|
|
63
|
+
|
|
64
|
+

|
|
65
|
+
|
|
66
|
+
A segment's own `curve` wins over `styles.curve`, so one stretch of a line can step while the rest stays straight.
|
|
67
|
+
|
|
68
|
+
<!-- example: examples/LineStepSegment.svelte -->
|
|
69
|
+
|
|
70
|
+
```svelte
|
|
71
|
+
<script lang="ts">
|
|
72
|
+
import { LinePlot } from '@fundar/data-chart-telling';
|
|
73
|
+
import { LIFE } from './datasets';
|
|
74
|
+
</script>
|
|
75
|
+
|
|
76
|
+
<!-- A segment sets its own curve: the female line is straight until 1980 and steps from then on. -->
|
|
77
|
+
<LinePlot
|
|
78
|
+
width={720}
|
|
79
|
+
height={380}
|
|
80
|
+
data={LIFE}
|
|
81
|
+
x="year"
|
|
82
|
+
y="value"
|
|
83
|
+
color="sex"
|
|
84
|
+
scales={{ x: { edgeTicks: true } }}
|
|
85
|
+
segments={{
|
|
86
|
+
female: [{ areas: [{ x: { from: 1980 } }], styles: { curve: 'step-after' } }]
|
|
87
|
+
}}
|
|
88
|
+
/>
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
<!-- /example -->
|
|
92
|
+
|
|
93
|
+

|