@fundar/data-chart-telling 1.0.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 +53 -0
- package/README.md +58 -19
- package/dist/configuration/config.svelte.d.ts +1 -1
- package/dist/configuration/config.svelte.js +172 -95
- package/dist/configuration/themes/index.d.ts +5 -1304
- package/dist/index.d.ts +24 -14
- package/dist/index.js +20 -10
- package/dist/layout/base/BasePlotLayout.svelte +129 -51
- 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/hover/HoverSettings.d.ts +20 -6
- package/dist/layout/hover/HoverSettings.js +29 -4
- 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 +9 -0
- package/dist/layout/legend/LegendState.svelte.js +24 -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/Plot.svelte +6 -3
- package/dist/layout/plot/PublicPlotContext.d.ts +5 -4
- package/dist/layout/plot/PublicPlotContext.js +7 -3
- package/dist/layout/plot/Slice.d.ts +5 -1
- package/dist/layout/plot/Slice.js +18 -6
- package/dist/layout/scales/EdgeTicks.d.ts +39 -0
- package/dist/layout/scales/EdgeTicks.js +82 -0
- package/dist/layout/scales/NiceTicks.d.ts +43 -0
- package/dist/layout/scales/NiceTicks.js +76 -0
- package/dist/layout/scales/ScalesLayout.svelte +133 -34
- package/dist/layout/scales/ScalesLayout.svelte.d.ts +10 -0
- package/dist/layout/scales/SveltePlotScale.d.ts +15 -0
- package/dist/layout/scales/SveltePlotScale.js +86 -0
- 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 +83 -23
- package/dist/layout/timeline/Timeline.svelte +5 -2
- package/dist/layout/timeline/Timeline.svelte.d.ts +2 -0
- package/dist/layout/timeline/TimelineLayout.svelte +39 -13
- package/dist/layout/timeline/TimelineLayout.svelte.d.ts +7 -5
- package/dist/layout/timeline/TimelineRule.svelte +1 -0
- package/dist/layout/timeline/TimelineState.svelte.d.ts +13 -5
- package/dist/layout/timeline/TimelineState.svelte.js +42 -8
- package/dist/layout/timeline/TimelineTime.d.ts +18 -0
- package/dist/layout/timeline/TimelineTime.js +117 -0
- package/dist/layout/tooltip/Tooltip.svelte +10 -7
- package/dist/layout/tooltip/Tooltip.svelte.d.ts +6 -4
- package/dist/layout/tooltip/TooltipState.svelte.d.ts +8 -2
- package/dist/layout/tooltip/TooltipState.svelte.js +23 -4
- 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/delta/DeltaMarker.svelte +9 -7
- 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 +8 -2
- package/dist/phases/data/DataPhase.d.ts +5 -11
- package/dist/phases/data/DataPhase.js +14 -11
- package/dist/phases/data/PlotAxes.d.ts +10 -0
- package/dist/phases/data/PlotAxes.js +14 -1
- package/dist/phases/facet/FacetPanels.d.ts +55 -0
- package/dist/phases/facet/FacetPanels.js +96 -0
- package/dist/phases/facet/FacetPhase.d.ts +1 -42
- package/dist/phases/facet/FacetPhase.js +1 -87
- package/dist/phases/hover/HoverPhase.d.ts +6 -43
- package/dist/phases/hover/HoverPhase.js +19 -54
- package/dist/phases/mapping/MappingPhase.d.ts +1 -1
- package/dist/phases/mapping/MappingPhase.js +3 -5
- 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.d.ts +1 -3
- package/dist/phases/scales/ScalesPhase.js +37 -27
- package/dist/phases/sharedScales/SharedScalesPhase.d.ts +6 -2
- package/dist/phases/sharedScales/SharedScalesPhase.js +14 -8
- package/dist/phases/statistics/Statistics.d.ts +10 -6
- package/dist/phases/statistics/Statistics.js +20 -10
- package/dist/phases/statistics/StatisticsPhase.js +10 -6
- 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/tooltip/TooltipPhase.d.ts +4 -2
- package/dist/phases/tooltip/TooltipPhase.js +10 -3
- package/dist/phases/transforms/ProcessedPositions.d.ts +30 -0
- package/dist/phases/transforms/ProcessedPositions.js +74 -0
- package/dist/phases/transforms/TransformsPhase.d.ts +5 -42
- package/dist/phases/transforms/TransformsPhase.js +67 -58
- 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 +4 -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 +6 -5
- package/dist/plots/{scatter → correlation/scatter}/markers.d.ts +4 -4
- package/dist/plots/{scatter → correlation/scatter}/markers.js +5 -4
- package/dist/plots/distribution/box/BoxSummaries.d.ts +19 -0
- package/dist/plots/distribution/box/BoxSummaries.js +101 -0
- package/dist/plots/distribution/box/Plot.svelte +42 -0
- package/dist/plots/distribution/box/Plot.svelte.d.ts +26 -0
- package/dist/plots/distribution/box/defaults.d.ts +12 -0
- package/dist/plots/distribution/box/defaults.js +34 -0
- package/dist/plots/distribution/box/markers.d.ts +12 -0
- package/dist/plots/distribution/box/markers.js +34 -0
- 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 +4 -4
- package/dist/plots/{histogram → distribution/histogram}/markers.d.ts +3 -3
- package/dist/plots/{histogram → distribution/histogram}/markers.js +7 -7
- 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 +7 -6
- package/dist/plots/{pyramid → distribution/pyramid}/markers.d.ts +4 -4
- package/dist/plots/{pyramid → distribution/pyramid}/markers.js +8 -11
- 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 +2 -3
- 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 +7 -6
- 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 +5 -5
- package/dist/plots/{geo → map/geo}/phases/markers.d.ts +1 -1
- package/dist/plots/{geo → map/geo}/phases/markers.js +8 -13
- 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 +7 -4
- 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 +17 -15
- package/dist/plots/{bar → ranking/bar}/markers.d.ts +8 -8
- package/dist/plots/{bar → ranking/bar}/markers.js +11 -19
- 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 +287 -132
- package/dist/types/layout/composer.d.ts +5 -2
- 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 +51 -3
- 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 +19 -7
- 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/hover/phase.d.ts +6 -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 +20 -4
- package/dist/types/phases/statistics/phase.d.ts +3 -1
- package/dist/types/phases/statistics/source.d.ts +3 -1
- package/dist/types/phases/transforms/phase.d.ts +32 -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/distribution/box/props.d.ts +10 -0
- package/dist/types/plots/distribution/box/state.d.ts +23 -0
- 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/distribution/density/state.js +1 -0
- package/dist/types/plots/{histogram → distribution/histogram}/props.d.ts +7 -7
- package/dist/types/plots/distribution/histogram/props.js +1 -0
- 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 +3 -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 +39 -8
- package/docs/composer.md +19 -3
- package/docs/concepts.md +1 -1
- package/docs/development.md +14 -5
- package/docs/facets.md +62 -8
- package/docs/getting-started.md +8 -9
- package/docs/legend.md +73 -24
- package/docs/markers.md +45 -32
- 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 -154
- package/docs/scales.md +50 -27
- package/docs/state.md +1 -1
- package/docs/styles-and-segments.md +96 -39
- package/docs/theming.md +33 -19
- package/docs/timeline.md +62 -28
- package/docs/tooltip-and-hover.md +72 -24
- package/docs/transforms-and-statistics.md +56 -25
- package/examples/BarValues.svelte +2 -2
- package/examples/Box.svelte +7 -0
- package/examples/Bullet.svelte +17 -0
- package/examples/Chrome.svelte +17 -0
- package/examples/ChromeOrder.svelte +18 -0
- package/examples/Cleveland.svelte +15 -0
- package/examples/Composer.svelte +23 -0
- package/examples/CustomTooltip.svelte +21 -14
- package/examples/Density.svelte +7 -0
- package/examples/Dumbbell.svelte +16 -0
- package/examples/Facets.svelte +3 -3
- package/examples/FacetsCarousel.svelte +14 -0
- package/examples/FacetsRowsCols.svelte +23 -0
- package/examples/FirstPlot.svelte +7 -0
- package/examples/Forest.svelte +17 -0
- package/examples/Gaps.svelte +21 -0
- package/examples/GroupedBars.svelte +15 -0
- package/examples/Heatmap.svelte +7 -0
- package/examples/HeatmapSegments.svelte +26 -0
- package/examples/Histogram.svelte +14 -0
- package/examples/HorizontalBars.svelte +15 -0
- package/examples/LegendSections.svelte +27 -0
- package/examples/LegendToggle.svelte +3 -3
- package/examples/LineByRegion.svelte +18 -0
- package/examples/LineDates.svelte +15 -0
- package/examples/LineStep.svelte +16 -0
- package/examples/LineStepSegment.svelte +18 -0
- package/examples/Lollipop.svelte +17 -0
- package/examples/Markers.svelte +27 -0
- package/examples/MovingAverage.svelte +15 -0
- package/examples/Pyramid.svelte +14 -0
- package/examples/Regression.svelte +14 -0
- package/examples/ResponsiveLine.svelte +7 -7
- package/examples/Scales.svelte +26 -0
- package/examples/Scatter.svelte +16 -0
- package/examples/SegmentHighlight.svelte +22 -0
- package/examples/Segments.svelte +11 -3
- package/examples/SegmentsBySeries.svelte +25 -0
- package/examples/Slope.svelte +17 -0
- package/examples/Sparkline.svelte +14 -0
- package/examples/StackedArea.svelte +16 -0
- package/examples/StackedBars.svelte +15 -0
- package/examples/TimelinePlayer.svelte +8 -7
- package/examples/TimelineRule.svelte +19 -0
- package/examples/Tooltip.svelte +3 -3
- package/examples/ValueLabels.svelte +21 -0
- 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 +51 -12
- package/llms.txt +60 -4
- package/package.json +12 -2
- package/dist/layout/scales/buildScale.d.ts +0 -8
- package/dist/layout/scales/buildScale.js +0 -67
- package/dist/layout/scales/niceDomain.d.ts +0 -23
- package/dist/layout/scales/niceDomain.js +0 -59
- 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 -12
- /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/geo/props.js → layout/styles/gaps.js} +0 -0
- /package/dist/types/{plots/geo/state.js → layout/styles/geo.js} +0 -0
- /package/dist/types/{plots/heatmap/props.js → layout/styles/values.js} +0 -0
- /package/dist/types/{plots/heatmap/state.js → markers/axis/violin.js} +0 -0
- /package/dist/types/{plots/histogram/props.js → markers/channels/commonMarkerConfigWithRowOffset.js} +0 -0
- /package/dist/types/plots/{line → correlation/heatmap}/props.js +0 -0
- /package/dist/types/plots/{histogram → correlation/heatmap}/state.js +0 -0
- /package/dist/types/plots/{pyramid → correlation/scatter}/props.js +0 -0
- /package/dist/types/plots/{line → correlation/scatter}/state.js +0 -0
- /package/dist/types/plots/{scatter → distribution/box}/props.js +0 -0
- /package/dist/types/plots/{pyramid → distribution/box}/state.js +0 -0
- /package/dist/types/plots/{scatter/state.js → distribution/density/props.js} +0 -0
- /package/dist/{plots/utils → utils}/accessors.d.ts +0 -0
- /package/dist/{plots/utils → utils}/accessors.js +0 -0
|
@@ -2,17 +2,19 @@ import { STATISTIC_FALLBACK_COLOR } from '../../../types/phases/statistics/sourc
|
|
|
2
2
|
/** 2D kernel density over the source's `x` and `y`, drawn as a `density` marker. */
|
|
3
3
|
export class Density2dStatistic {
|
|
4
4
|
static build(source, config) {
|
|
5
|
-
return
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
5
|
+
return [
|
|
6
|
+
{
|
|
7
|
+
type: 'density',
|
|
8
|
+
data: source.data,
|
|
9
|
+
x: source.x,
|
|
10
|
+
y: source.y,
|
|
11
|
+
bandwidth: config.bandwidth,
|
|
12
|
+
thresholds: config.thresholds,
|
|
13
|
+
styles: {
|
|
14
|
+
...config.styles,
|
|
15
|
+
stroke: config.styles?.stroke ?? source.color ?? STATISTIC_FALLBACK_COLOR
|
|
16
|
+
}
|
|
15
17
|
}
|
|
16
|
-
|
|
18
|
+
];
|
|
17
19
|
}
|
|
18
20
|
}
|
|
@@ -8,5 +8,5 @@ export declare class DensityStatistic {
|
|
|
8
8
|
* `x` is the value and `y` the density, so it draws on the plot's axes as-is.
|
|
9
9
|
* The output is one derived row per estimate point rather than one per input row.
|
|
10
10
|
*/
|
|
11
|
-
static build<T extends Record<string, unknown>>(source: StatisticSource<T>, config: DensityStatisticOptions): AreaMarkerConfig;
|
|
11
|
+
static build<T extends Record<string, unknown>>(source: StatisticSource<T>, config: DensityStatisticOptions): AreaMarkerConfig[];
|
|
12
12
|
}
|
|
@@ -15,15 +15,17 @@ export class DensityStatistic {
|
|
|
15
15
|
kernel: config.kernel,
|
|
16
16
|
bandwidth: config.bandwidth
|
|
17
17
|
});
|
|
18
|
-
return
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
18
|
+
return [
|
|
19
|
+
{
|
|
20
|
+
type: 'area',
|
|
21
|
+
data: result.data,
|
|
22
|
+
x: result.x,
|
|
23
|
+
y: result.y,
|
|
24
|
+
styles: {
|
|
25
|
+
...config.styles,
|
|
26
|
+
fill: config.styles?.fill ?? source.color ?? STATISTIC_FALLBACK_COLOR
|
|
27
|
+
}
|
|
26
28
|
}
|
|
27
|
-
|
|
29
|
+
];
|
|
28
30
|
}
|
|
29
31
|
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { DeviationStatisticOptions } from '../../../types/layout/statistics';
|
|
2
|
+
import type { AxisBasedMarkersConfig } from '../../../types/markers/common';
|
|
3
|
+
import { type StatisticSource } from '../../../types/phases/statistics/source';
|
|
4
|
+
/** An estimator of the source's values along the plot's value axis and a band around it, drawn as a `rect` and a `rule` marker, each optionally labelled by a `text` marker. */
|
|
5
|
+
export declare class DeviationStatistic {
|
|
6
|
+
#private;
|
|
7
|
+
static build<T extends Record<string, unknown>>(source: StatisticSource<T>, config: DeviationStatisticOptions): AxisBasedMarkersConfig[];
|
|
8
|
+
}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { deviation, extent, mean, median } from 'd3-array';
|
|
2
|
+
import { resolveAccessor } from '../../../utils/accessors';
|
|
3
|
+
import { STATISTIC_FALLBACK_COLOR } from '../../../types/phases/statistics/source';
|
|
4
|
+
/** Scales a median absolute deviation to the standard deviation of a normal distribution. */
|
|
5
|
+
const MAD_SCALE = 1.4826;
|
|
6
|
+
const DEFAULT_BAND_OPACITY = 0.15;
|
|
7
|
+
const LABEL_FONT_SIZE = 10;
|
|
8
|
+
/** Pixels between a label and the line it names, and between it and the plot's edge. */
|
|
9
|
+
const LABEL_GAP = 4;
|
|
10
|
+
/** An estimator of the source's values along the plot's value axis and a band around it, drawn as a `rect` and a `rule` marker, each optionally labelled by a `text` marker. */
|
|
11
|
+
export class DeviationStatistic {
|
|
12
|
+
static build(source, config) {
|
|
13
|
+
const axis = source.axis ?? 'y';
|
|
14
|
+
const read = resolveAccessor(source[axis]);
|
|
15
|
+
const values = source.data
|
|
16
|
+
.map((d) => {
|
|
17
|
+
const v = read(d);
|
|
18
|
+
return v instanceof Date ? v.getTime() : typeof v === 'number' ? v : NaN;
|
|
19
|
+
})
|
|
20
|
+
.filter(Number.isFinite);
|
|
21
|
+
if (!values.length)
|
|
22
|
+
return [];
|
|
23
|
+
const center = DeviationStatistic.#estimate(values, config.estimator ?? 'mean');
|
|
24
|
+
const spread = DeviationStatistic.#spread(values, config.spread ?? 'stdev');
|
|
25
|
+
const half = (config.k ?? 1) * spread;
|
|
26
|
+
const color = source.color ?? STATISTIC_FALLBACK_COLOR;
|
|
27
|
+
const markers = [];
|
|
28
|
+
if (config.band !== false) {
|
|
29
|
+
const { label, ...style } = config.band ?? {};
|
|
30
|
+
const [lo, hi] = [center - half, center + half];
|
|
31
|
+
markers.push({
|
|
32
|
+
type: 'rect',
|
|
33
|
+
data: [{ lo, hi }],
|
|
34
|
+
...(axis === 'x' ? { x1: 'lo', x2: 'hi' } : { y1: 'lo', y2: 'hi' }),
|
|
35
|
+
styles: { fillOpacity: DEFAULT_BAND_OPACITY, ...style, fill: style.fill ?? color }
|
|
36
|
+
});
|
|
37
|
+
if (label) {
|
|
38
|
+
const own = label === true ? {} : label;
|
|
39
|
+
const lower = own.edge === 'lower';
|
|
40
|
+
const outside = own.position === 'outside';
|
|
41
|
+
markers.push(DeviationStatistic.#label(axis, lower ? lo : hi, color, lower === outside, {
|
|
42
|
+
text: own.text ?? (config.spread === 'mad' ? 'MAD' : 'STDEV'),
|
|
43
|
+
styles: own.styles
|
|
44
|
+
}));
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
if (config.rule !== false) {
|
|
48
|
+
const { label, ...style } = config.rule ?? {};
|
|
49
|
+
markers.push({
|
|
50
|
+
type: 'rule',
|
|
51
|
+
axis,
|
|
52
|
+
value: center,
|
|
53
|
+
styles: { ...style, stroke: style.stroke ?? color }
|
|
54
|
+
});
|
|
55
|
+
if (label) {
|
|
56
|
+
const own = label === true ? {} : label;
|
|
57
|
+
markers.push(DeviationStatistic.#label(axis, center, color, axis === 'x', {
|
|
58
|
+
text: own.text ?? (config.estimator ?? 'mean').toUpperCase(),
|
|
59
|
+
styles: own.styles
|
|
60
|
+
}));
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return markers;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* A label beside the line at `position`, against the plot's start edge: a
|
|
67
|
+
* vertical line's reads down from the top, a horizontal line's ends at the
|
|
68
|
+
* right. `towardLower` puts its body on the side of lower values (left of a
|
|
69
|
+
* vertical line, below a horizontal one).
|
|
70
|
+
*/
|
|
71
|
+
static #label(axis, position, color, towardLower, label) {
|
|
72
|
+
const vertical = axis === 'x';
|
|
73
|
+
const fontSize = label.styles?.fontSize ?? LABEL_FONT_SIZE;
|
|
74
|
+
const sign = towardLower ? -1 : 1;
|
|
75
|
+
// A vertical line's text is centred on its own point, so its half-height plus the gap clears the line.
|
|
76
|
+
const gap = LABEL_GAP + (vertical ? fontSize / 2 : 0);
|
|
77
|
+
const [dx, dy] = vertical ? [sign * gap, LABEL_GAP] : [-LABEL_GAP, -sign * gap];
|
|
78
|
+
return {
|
|
79
|
+
type: 'text',
|
|
80
|
+
text: label.text,
|
|
81
|
+
...(vertical ? { x: position } : { y: position }),
|
|
82
|
+
frameAnchor: vertical ? 'top' : 'right',
|
|
83
|
+
styles: {
|
|
84
|
+
fill: color,
|
|
85
|
+
fontSize,
|
|
86
|
+
...(vertical
|
|
87
|
+
? { rotate: 90, textAnchor: 'start', lineAnchor: 'middle' }
|
|
88
|
+
: { textAnchor: 'end', lineAnchor: towardLower ? 'top' : 'bottom' }),
|
|
89
|
+
...label.styles,
|
|
90
|
+
dx: dx + (label.styles?.dx ?? 0),
|
|
91
|
+
dy: dy + (label.styles?.dy ?? 0)
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
static #estimate(values, estimator) {
|
|
96
|
+
if (estimator === 'median')
|
|
97
|
+
return median(values);
|
|
98
|
+
if (estimator === 'midrange') {
|
|
99
|
+
const [lo, hi] = extent(values);
|
|
100
|
+
return (lo + hi) / 2;
|
|
101
|
+
}
|
|
102
|
+
return mean(values);
|
|
103
|
+
}
|
|
104
|
+
static #spread(values, spread) {
|
|
105
|
+
if (spread === 'mad') {
|
|
106
|
+
const mid = median(values);
|
|
107
|
+
return MAD_SCALE * median(values.map((v) => Math.abs(v - mid)));
|
|
108
|
+
}
|
|
109
|
+
return deviation(values) ?? 0;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
@@ -8,5 +8,5 @@ export declare class MovingAverageStatistic {
|
|
|
8
8
|
* no dedicated mark for this (unlike `regression`/`bollinger`). `windowY`
|
|
9
9
|
* keeps one output row per input row, so `x` passes straight through.
|
|
10
10
|
*/
|
|
11
|
-
static build<T extends Record<string, unknown>>(source: StatisticSource<T>, config: MovingAverageStatisticOptions): LineMarkerConfig;
|
|
11
|
+
static build<T extends Record<string, unknown>>(source: StatisticSource<T>, config: MovingAverageStatisticOptions): LineMarkerConfig[];
|
|
12
12
|
}
|
|
@@ -16,15 +16,17 @@ export class MovingAverageStatistic {
|
|
|
16
16
|
k: config.k,
|
|
17
17
|
reduce: config.reduce ?? 'mean'
|
|
18
18
|
});
|
|
19
|
-
return
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
19
|
+
return [
|
|
20
|
+
{
|
|
21
|
+
type: 'line',
|
|
22
|
+
data: result.data,
|
|
23
|
+
x: result.x,
|
|
24
|
+
y: result.y,
|
|
25
|
+
styles: {
|
|
26
|
+
...config.styles,
|
|
27
|
+
stroke: config.styles?.stroke ?? source.color ?? STATISTIC_FALLBACK_COLOR
|
|
28
|
+
}
|
|
27
29
|
}
|
|
28
|
-
|
|
30
|
+
];
|
|
29
31
|
}
|
|
30
32
|
}
|
|
@@ -5,5 +5,5 @@ import { type StatisticSource } from '../../../types/phases/statistics/source';
|
|
|
5
5
|
export declare class RegressionStatistic {
|
|
6
6
|
static build<T extends Record<string, unknown>>(source: StatisticSource<T>, config: Extract<StatisticConfig, {
|
|
7
7
|
type: 'regression';
|
|
8
|
-
}>): RegressionMarkerConfig;
|
|
8
|
+
}>): RegressionMarkerConfig[];
|
|
9
9
|
}
|
|
@@ -2,20 +2,22 @@ import { STATISTIC_FALLBACK_COLOR } from '../../../types/phases/statistics/sourc
|
|
|
2
2
|
/** A regression curve over the source, drawn as a `regression` marker (svelteplot fits it at render time). */
|
|
3
3
|
export class RegressionStatistic {
|
|
4
4
|
static build(source, config) {
|
|
5
|
-
return
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
5
|
+
return [
|
|
6
|
+
{
|
|
7
|
+
type: 'regression',
|
|
8
|
+
data: source.data,
|
|
9
|
+
x: source.x,
|
|
10
|
+
y: source.y,
|
|
11
|
+
regressionType: config.regressionType,
|
|
12
|
+
order: config.order,
|
|
13
|
+
base: config.base,
|
|
14
|
+
span: config.span,
|
|
15
|
+
confidence: config.confidence,
|
|
16
|
+
styles: {
|
|
17
|
+
...config.styles,
|
|
18
|
+
stroke: config.styles?.stroke ?? source.color ?? STATISTIC_FALLBACK_COLOR
|
|
19
|
+
}
|
|
18
20
|
}
|
|
19
|
-
|
|
21
|
+
];
|
|
20
22
|
}
|
|
21
23
|
}
|
|
@@ -2,8 +2,10 @@ import type { AxisPlotState, PhaseStage } from '../../types/phases';
|
|
|
2
2
|
type AnyAxisState = AxisPlotState<any, any, any, any>;
|
|
3
3
|
/**
|
|
4
4
|
* The "tooltip" phase every axis-based plot shares: how a hovered row reads,
|
|
5
|
-
* as `tooltipFormat` - the same default on every plot, {@link TooltipState.default}
|
|
6
|
-
*
|
|
5
|
+
* as `tooltipFormat` - the same default on every plot, {@link TooltipState.default} -
|
|
6
|
+
* and the order its rows read in, as `tooltipSort`: highest value first, by
|
|
7
|
+
* each row's own value (a stacked row's share, not its running total). It
|
|
8
|
+
* runs after the scales, which say which axis holds categories.
|
|
7
9
|
*/
|
|
8
10
|
export declare class TooltipPhase<TState extends AnyAxisState> implements PhaseStage<TState> {
|
|
9
11
|
readonly phase: "tooltip";
|
|
@@ -1,10 +1,17 @@
|
|
|
1
1
|
import { TooltipState } from '../../layout/tooltip/TooltipState.svelte';
|
|
2
|
+
import { ValueLabels } from '../../layout/styles/ValueLabels';
|
|
2
3
|
/**
|
|
3
4
|
* The "tooltip" phase every axis-based plot shares: how a hovered row reads,
|
|
4
|
-
* as `tooltipFormat` - the same default on every plot, {@link TooltipState.default}
|
|
5
|
-
*
|
|
5
|
+
* as `tooltipFormat` - the same default on every plot, {@link TooltipState.default} -
|
|
6
|
+
* and the order its rows read in, as `tooltipSort`: highest value first, by
|
|
7
|
+
* each row's own value (a stacked row's share, not its running total). It
|
|
8
|
+
* runs after the scales, which say which axis holds categories.
|
|
6
9
|
*/
|
|
7
10
|
export class TooltipPhase {
|
|
8
11
|
phase = 'tooltip';
|
|
9
|
-
run = (state) => ({
|
|
12
|
+
run = (state) => ({
|
|
13
|
+
...state,
|
|
14
|
+
tooltipFormat: TooltipState.default(state),
|
|
15
|
+
tooltipSort: TooltipState.descending(ValueLabels.valueOf(state))
|
|
16
|
+
});
|
|
10
17
|
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { AxisChannelName } from '../../types/layout/mapping';
|
|
2
|
+
import type { ProcessedData, ProcessedRow } from '../../types/phases';
|
|
3
|
+
/**
|
|
4
|
+
* Where the "transforms" phase's processed rows sit, read off its output
|
|
5
|
+
* (`state.processedData`) - by whichever channels the transforms left: a
|
|
6
|
+
* row's own value, a stack's `1`-`2` span, a bin's edges. Every later phase
|
|
7
|
+
* reads positions through it instead of telling those channels apart itself.
|
|
8
|
+
*/
|
|
9
|
+
export declare class ProcessedPositions {
|
|
10
|
+
/**
|
|
11
|
+
* Where a processed row sits: the top of its value (`y2`, or `y` - `x2`/`x`
|
|
12
|
+
* when `valueAxis` is `x`) and, on the other axis, its own position (or the
|
|
13
|
+
* middle of its `1`-`2` span, a bin's centre).
|
|
14
|
+
*/
|
|
15
|
+
static of(processed: ProcessedData, valueAxis?: 'x' | 'y'): {
|
|
16
|
+
x: (row: ProcessedRow) => unknown;
|
|
17
|
+
y: (row: ProcessedRow) => unknown;
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* A processed row's span along `valueAxis`: from its `1` channel (a stack's
|
|
21
|
+
* bottom) or, with none, from `baseline`, to its top. `undefined` when the
|
|
22
|
+
* row has no value there. `stacked` tells a stack from plain values.
|
|
23
|
+
*/
|
|
24
|
+
static span(processed: ProcessedData, valueAxis: 'x' | 'y', baseline?: number): {
|
|
25
|
+
stacked: boolean;
|
|
26
|
+
of: (row: ProcessedRow) => [number, number] | undefined;
|
|
27
|
+
};
|
|
28
|
+
/** Every value the processed rows sit at on one axis, through each of its channels. */
|
|
29
|
+
static values(processed: ProcessedData | undefined, axis: AxisChannelName): unknown[];
|
|
30
|
+
}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { resolveAccessor } from '../../utils/accessors';
|
|
2
|
+
import { isGapValue } from '../../plots/utils/gaps';
|
|
3
|
+
const POSITION_CHANNELS = {
|
|
4
|
+
x: ['x', 'x1', 'x2'],
|
|
5
|
+
y: ['y', 'y1', 'y2']
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* Where the "transforms" phase's processed rows sit, read off its output
|
|
9
|
+
* (`state.processedData`) - by whichever channels the transforms left: a
|
|
10
|
+
* row's own value, a stack's `1`-`2` span, a bin's edges. Every later phase
|
|
11
|
+
* reads positions through it instead of telling those channels apart itself.
|
|
12
|
+
*/
|
|
13
|
+
export class ProcessedPositions {
|
|
14
|
+
/**
|
|
15
|
+
* Where a processed row sits: the top of its value (`y2`, or `y` - `x2`/`x`
|
|
16
|
+
* when `valueAxis` is `x`) and, on the other axis, its own position (or the
|
|
17
|
+
* middle of its `1`-`2` span, a bin's centre).
|
|
18
|
+
*/
|
|
19
|
+
static of(processed, valueAxis = 'y') {
|
|
20
|
+
const { channels } = processed;
|
|
21
|
+
const read = (channel) => resolveAccessor(channel);
|
|
22
|
+
const along = (axis) => {
|
|
23
|
+
const own = channels[axis];
|
|
24
|
+
const from = channels[`${axis}1`];
|
|
25
|
+
const to = channels[`${axis}2`];
|
|
26
|
+
if (axis === valueAxis) {
|
|
27
|
+
const top = to ?? own;
|
|
28
|
+
return top !== undefined ? read(top) : () => undefined;
|
|
29
|
+
}
|
|
30
|
+
if (own !== undefined)
|
|
31
|
+
return read(own);
|
|
32
|
+
if (from === undefined || to === undefined)
|
|
33
|
+
return () => undefined;
|
|
34
|
+
return (row) => (Number(read(from)(row)) + Number(read(to)(row))) / 2;
|
|
35
|
+
};
|
|
36
|
+
return { x: along('x'), y: along('y') };
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* A processed row's span along `valueAxis`: from its `1` channel (a stack's
|
|
40
|
+
* bottom) or, with none, from `baseline`, to its top. `undefined` when the
|
|
41
|
+
* row has no value there. `stacked` tells a stack from plain values.
|
|
42
|
+
*/
|
|
43
|
+
static span(processed, valueAxis, baseline = 0) {
|
|
44
|
+
const from = processed.channels[`${valueAxis}1`];
|
|
45
|
+
const stacked = from !== undefined && processed.channels[`${valueAxis}2`] !== undefined;
|
|
46
|
+
const top = ProcessedPositions.of(processed, valueAxis)[valueAxis];
|
|
47
|
+
const bottom = stacked
|
|
48
|
+
? resolveAccessor(from)
|
|
49
|
+
: () => baseline;
|
|
50
|
+
return {
|
|
51
|
+
stacked,
|
|
52
|
+
of: (row) => {
|
|
53
|
+
const end = top(row);
|
|
54
|
+
const start = bottom(row);
|
|
55
|
+
if (isGapValue(end) || isGapValue(start))
|
|
56
|
+
return undefined;
|
|
57
|
+
const span = [Number(start), Number(end)];
|
|
58
|
+
return Number.isFinite(span[0]) && Number.isFinite(span[1]) ? span : undefined;
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
/** Every value the processed rows sit at on one axis, through each of its channels. */
|
|
63
|
+
static values(processed, axis) {
|
|
64
|
+
if (!processed)
|
|
65
|
+
return [];
|
|
66
|
+
return POSITION_CHANNELS[axis].flatMap((name) => {
|
|
67
|
+
const channel = processed.channels[name];
|
|
68
|
+
if (channel === undefined)
|
|
69
|
+
return [];
|
|
70
|
+
const read = resolveAccessor(channel);
|
|
71
|
+
return processed.data.map((row) => read(row));
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
}
|
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type { SegmentsConfig } from '../../types/plots/props';
|
|
3
|
-
import type { VisualGroup } from '../../types/plots/segments/config';
|
|
4
|
-
import type { PhaseStage, ProcessedData, ProcessedRow, TransformsStageOptions, TransformsStageState } from '../../types/phases';
|
|
1
|
+
import type { PhaseStage, TransformsStageOptions, TransformsStageState } from '../../types/phases';
|
|
5
2
|
/** The field each processed row carries its series name under, for its color, legend and labels. */
|
|
6
3
|
export declare const SERIES_KEY = "__series";
|
|
7
4
|
/** The field each processed row carries its series id under - the transforms' `z`, so a stack or bin keeps series apart. */
|
|
@@ -14,7 +11,8 @@ export declare const GAP_KIND = "__gapKind";
|
|
|
14
11
|
* The "transforms" phase every axis-based plot shares: runs the plot-level
|
|
15
12
|
* transforms once over every visible series' rows together, so a stack sees
|
|
16
13
|
* every series and a bin keeps each series apart (both group by series), and
|
|
17
|
-
* leaves the result in `state.processedData` for the plot's own marks
|
|
14
|
+
* leaves the result in `state.processedData` for the plot's own marks - and
|
|
15
|
+
* in `state.processedGroups`, split back into the visual groups they draw. With
|
|
18
16
|
* facet panels, the transforms run once per panel's rows, so a stack never
|
|
19
17
|
* combines two panels, and every row they return keeps its panel. A gap that
|
|
20
18
|
* `styles.gaps` fills is read at its interpolated value, so it takes its place
|
|
@@ -23,42 +21,7 @@ export declare const GAP_KIND = "__gapKind";
|
|
|
23
21
|
export declare class TransformsPhase<TState extends TransformsStageState, TCtx = unknown> implements PhaseStage<TState, TCtx> {
|
|
24
22
|
#private;
|
|
25
23
|
readonly phase: "transforms";
|
|
26
|
-
|
|
24
|
+
/** `connect`: whether a series' visual segments bridge into each other, as the kind's "data" phase splits them. */
|
|
25
|
+
constructor(options?: TransformsStageOptions<TState, TCtx>, connect?: boolean);
|
|
27
26
|
run: (state: TState, ctx: TCtx) => TState;
|
|
28
|
-
/**
|
|
29
|
-
* The processed rows split back into one group per visible series, each cut
|
|
30
|
-
* into its styled visual segments by `segments`, matched on the processed `x`.
|
|
31
|
-
* Each series reads its rows through its value axis: a stack's top, a bin's start.
|
|
32
|
-
*/
|
|
33
|
-
static buildProcessedGroups<TStyle>(state: TransformsStageState & {
|
|
34
|
-
segments?: SegmentsConfig<TStyle>;
|
|
35
|
-
}, connect?: boolean): VisualGroup<Series<ProcessedRow>, TStyle>[];
|
|
36
|
-
/**
|
|
37
|
-
* The processed rows in their own order, split into runs of consecutive rows
|
|
38
|
-
* from the same visible series, each cut into its styled visual segments like
|
|
39
|
-
* {@link TransformsPhase.buildProcessedGroups}. Drawn in turn, the runs keep the rows' order
|
|
40
|
-
* across series, so a transform that reorders rows (`sort`, `reverse`,
|
|
41
|
-
* `shuffle`) decides which rows paint on top. Unreordered, each series is one run.
|
|
42
|
-
*/
|
|
43
|
-
static buildProcessedRuns<TStyle>(state: TransformsStageState & {
|
|
44
|
-
segments?: SegmentsConfig<TStyle>;
|
|
45
|
-
}): VisualGroup<Series<ProcessedRow>, TStyle>[];
|
|
46
|
-
/**
|
|
47
|
-
* Where a processed row sits: the top of its value (`y2`, or `y` - `x2`/`x`
|
|
48
|
-
* when `valueAxis` is `x`) and, on the other axis, its own position (or the
|
|
49
|
-
* middle of its `1`-`2` span, a bin's centre).
|
|
50
|
-
*/
|
|
51
|
-
static processedPosition(processed: ProcessedData, valueAxis?: 'x' | 'y'): {
|
|
52
|
-
x: (row: ProcessedRow) => unknown;
|
|
53
|
-
y: (row: ProcessedRow) => unknown;
|
|
54
|
-
};
|
|
55
|
-
/**
|
|
56
|
-
* A processed row's span along `valueAxis`: from its `1` channel (a stack's
|
|
57
|
-
* bottom) or, with none, from `baseline`, to its top. `undefined` when the
|
|
58
|
-
* row has no value there. `stacked` tells a stack from plain values.
|
|
59
|
-
*/
|
|
60
|
-
static processedSpan(processed: ProcessedData, valueAxis: 'x' | 'y', baseline?: number): {
|
|
61
|
-
stacked: boolean;
|
|
62
|
-
of: (row: ProcessedRow) => [number, number] | undefined;
|
|
63
|
-
};
|
|
64
27
|
}
|