@milaboratories/miplots4 1.0.129 → 1.0.131
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/dist/DataFrame.d.ts +15 -9
- package/dist/DataFrame.d.ts.map +1 -1
- package/dist/DataFrame.js +105 -81
- package/dist/DataFrame.js.map +1 -1
- package/dist/bubble/ChartRenderer.d.ts +6 -5
- package/dist/bubble/ChartRenderer.d.ts.map +1 -1
- package/dist/bubble/ChartRenderer.js +123 -121
- package/dist/bubble/ChartRenderer.js.map +1 -1
- package/dist/bubble/components/Chart.d.ts +3 -2
- package/dist/bubble/components/Chart.d.ts.map +1 -1
- package/dist/bubble/components/Chart.js +78 -97
- package/dist/bubble/components/Chart.js.map +1 -1
- package/dist/bubble/components/ChartsGroup.d.ts +6 -5
- package/dist/bubble/components/ChartsGroup.d.ts.map +1 -1
- package/dist/bubble/components/ChartsGroup.js +39 -37
- package/dist/bubble/components/ChartsGroup.js.map +1 -1
- package/dist/bubble/getCellTooltip.d.ts +5 -0
- package/dist/bubble/getCellTooltip.d.ts.map +1 -0
- package/dist/bubble/getCellTooltip.js +28 -0
- package/dist/bubble/getCellTooltip.js.map +1 -0
- package/dist/bubble/{getCells.d.ts → getGroupedCellsData.d.ts} +4 -4
- package/dist/bubble/getGroupedCellsData.d.ts.map +1 -0
- package/dist/bubble/getGroupedCellsData.js +94 -0
- package/dist/bubble/getGroupedCellsData.js.map +1 -0
- package/dist/bubble/index.d.ts +4 -4
- package/dist/bubble/index.d.ts.map +1 -1
- package/dist/bubble/index.js +47 -42
- package/dist/bubble/index.js.map +1 -1
- package/dist/bubble/utils/calculateCaptionTails.d.ts +2 -2
- package/dist/bubble/utils/calculateCaptionTails.d.ts.map +1 -1
- package/dist/bubble/utils/calculateCaptionTails.js.map +1 -1
- package/dist/common/Legend.d.ts.map +1 -1
- package/dist/common/Legend.js.map +1 -1
- package/dist/common/Tooltip.js +1 -1
- package/dist/common/Tooltip.js.map +1 -1
- package/dist/common/types.d.ts +1 -1
- package/dist/common/types.d.ts.map +1 -1
- package/dist/common/useDataFrame.d.ts +11 -0
- package/dist/common/useDataFrame.d.ts.map +1 -0
- package/dist/common/useDataFrame.js +20 -0
- package/dist/common/useDataFrame.js.map +1 -0
- package/dist/dendro/ChartRenderer.d.ts +9 -8
- package/dist/dendro/ChartRenderer.d.ts.map +1 -1
- package/dist/dendro/ChartRenderer.js +187 -187
- package/dist/dendro/ChartRenderer.js.map +1 -1
- package/dist/dendro/components/Chart.d.ts +8 -8
- package/dist/dendro/components/Chart.d.ts.map +1 -1
- package/dist/dendro/components/Chart.js +35 -35
- package/dist/dendro/components/Chart.js.map +1 -1
- package/dist/dendro/components/Heatmap.d.ts +3 -3
- package/dist/dendro/components/Heatmap.d.ts.map +1 -1
- package/dist/dendro/components/Heatmap.js +23 -23
- package/dist/dendro/components/Heatmap.js.map +1 -1
- package/dist/dendro/components/Legend.d.ts.map +1 -1
- package/dist/dendro/components/Legend.js.map +1 -1
- package/dist/dendro/components/LinksGroup.d.ts +6 -6
- package/dist/dendro/components/LinksGroup.d.ts.map +1 -1
- package/dist/dendro/components/LinksGroup.js +17 -17
- package/dist/dendro/components/LinksGroup.js.map +1 -1
- package/dist/dendro/components/NodesGroup.d.ts +7 -7
- package/dist/dendro/components/NodesGroup.d.ts.map +1 -1
- package/dist/dendro/components/NodesGroup.js +29 -29
- package/dist/dendro/components/NodesGroup.js.map +1 -1
- package/dist/dendro/components/types.d.ts +2 -2
- package/dist/dendro/components/types.d.ts.map +1 -1
- package/dist/dendro/getHeatmapData.d.ts +2 -2
- package/dist/dendro/getHeatmapData.d.ts.map +1 -1
- package/dist/dendro/getHeatmapData.js +48 -44
- package/dist/dendro/getHeatmapData.js.map +1 -1
- package/dist/dendro/getHierarchyData.d.ts +3 -3
- package/dist/dendro/getHierarchyData.d.ts.map +1 -1
- package/dist/dendro/getHierarchyData.js +31 -31
- package/dist/dendro/getHierarchyData.js.map +1 -1
- package/dist/dendro/index.d.ts +5 -5
- package/dist/dendro/index.d.ts.map +1 -1
- package/dist/dendro/index.js +86 -89
- package/dist/dendro/index.js.map +1 -1
- package/dist/discrete/ChartRenderer.d.ts +6 -6
- package/dist/discrete/ChartRenderer.d.ts.map +1 -1
- package/dist/discrete/ChartRenderer.js +197 -196
- package/dist/discrete/ChartRenderer.js.map +1 -1
- package/dist/discrete/DiscreteSettingsImpl.d.ts +3 -3
- package/dist/discrete/DiscreteSettingsImpl.d.ts.map +1 -1
- package/dist/discrete/DiscreteSettingsImpl.js +8 -8
- package/dist/discrete/DiscreteSettingsImpl.js.map +1 -1
- package/dist/discrete/components/layers/BoxElement.js.map +1 -1
- package/dist/discrete/index.d.ts +1 -1
- package/dist/discrete/index.d.ts.map +1 -1
- package/dist/discrete/index.js +109 -106
- package/dist/discrete/index.js.map +1 -1
- package/dist/discrete/layers/bar.d.ts +2 -2
- package/dist/discrete/layers/bar.d.ts.map +1 -1
- package/dist/discrete/layers/bar.js +32 -37
- package/dist/discrete/layers/bar.js.map +1 -1
- package/dist/discrete/layers/binnedDots.d.ts +3 -3
- package/dist/discrete/layers/binnedDots.d.ts.map +1 -1
- package/dist/discrete/layers/binnedDots.js +66 -78
- package/dist/discrete/layers/binnedDots.js.map +1 -1
- package/dist/discrete/layers/boxes.d.ts +3 -4
- package/dist/discrete/layers/boxes.d.ts.map +1 -1
- package/dist/discrete/layers/boxes.js +59 -60
- package/dist/discrete/layers/boxes.js.map +1 -1
- package/dist/discrete/layers/dots.d.ts +2 -3
- package/dist/discrete/layers/dots.d.ts.map +1 -1
- package/dist/discrete/layers/dots.js +30 -30
- package/dist/discrete/layers/dots.js.map +1 -1
- package/dist/discrete/layers/lines.js +11 -10
- package/dist/discrete/layers/lines.js.map +1 -1
- package/dist/discrete/layers/logo.d.ts +2 -2
- package/dist/discrete/layers/logo.d.ts.map +1 -1
- package/dist/discrete/layers/logo.js +21 -21
- package/dist/discrete/layers/logo.js.map +1 -1
- package/dist/discrete/layers/pairedPoints.d.ts +2 -2
- package/dist/discrete/layers/pairedPoints.d.ts.map +1 -1
- package/dist/discrete/layers/pairedPoints.js +62 -62
- package/dist/discrete/layers/pairedPoints.js.map +1 -1
- package/dist/discrete/layers/sina.d.ts +3 -4
- package/dist/discrete/layers/sina.d.ts.map +1 -1
- package/dist/discrete/layers/sina.js +67 -71
- package/dist/discrete/layers/sina.js.map +1 -1
- package/dist/discrete/layers/stackedBar.d.ts +1 -1
- package/dist/discrete/layers/stackedBar.d.ts.map +1 -1
- package/dist/discrete/layers/stackedBar.js +25 -25
- package/dist/discrete/layers/stackedBar.js.map +1 -1
- package/dist/discrete/layers/violins.js +13 -13
- package/dist/discrete/utils/getOutliersBounds.d.ts +1 -1
- package/dist/discrete/utils/getOutliersBounds.d.ts.map +1 -1
- package/dist/discrete/utils/getOutliersBounds.js +5 -5
- package/dist/discrete/utils/getOutliersBounds.js.map +1 -1
- package/dist/discrete/utils/splitTextByWidth.js +1 -1
- package/dist/discrete/utils/splitTextByWidth.js.map +1 -1
- package/dist/heatmap/ChartRenderer.d.ts +7 -6
- package/dist/heatmap/ChartRenderer.d.ts.map +1 -1
- package/dist/heatmap/ChartRenderer.js +232 -230
- package/dist/heatmap/ChartRenderer.js.map +1 -1
- package/dist/heatmap/HeatmapSettingsImpl.d.ts +2 -2
- package/dist/heatmap/HeatmapSettingsImpl.d.ts.map +1 -1
- package/dist/heatmap/HeatmapSettingsImpl.js +1 -1
- package/dist/heatmap/HeatmapSettingsImpl.js.map +1 -1
- package/dist/heatmap/components/Annotations/Annotation.d.ts.map +1 -1
- package/dist/heatmap/components/Annotations/Annotation.js +40 -39
- package/dist/heatmap/components/Annotations/Annotation.js.map +1 -1
- package/dist/heatmap/components/Chart.d.ts.map +1 -1
- package/dist/heatmap/components/Chart.js +90 -89
- package/dist/heatmap/components/Chart.js.map +1 -1
- package/dist/heatmap/components/ChartsGroup.d.ts +2 -2
- package/dist/heatmap/components/ChartsGroup.d.ts.map +1 -1
- package/dist/heatmap/components/ChartsGroup.js +14 -14
- package/dist/heatmap/components/ChartsGroup.js.map +1 -1
- package/dist/heatmap/components/types.d.ts +3 -2
- package/dist/heatmap/components/types.d.ts.map +1 -1
- package/dist/heatmap/getCells.d.ts +3 -2
- package/dist/heatmap/getCells.d.ts.map +1 -1
- package/dist/heatmap/getCells.js +97 -93
- package/dist/heatmap/getCells.js.map +1 -1
- package/dist/heatmap/index.d.ts +3 -3
- package/dist/heatmap/index.d.ts.map +1 -1
- package/dist/heatmap/index.js +13 -12
- package/dist/heatmap/index.js.map +1 -1
- package/dist/heatmap/utils/calculateAnnotationTitleSizes.d.ts.map +1 -1
- package/dist/heatmap/utils/calculateAnnotationTitleSizes.js +1 -1
- package/dist/heatmap/utils/calculateAnnotationTitleSizes.js.map +1 -1
- package/dist/heatmap/utils/calculateCaptionTails.d.ts +1 -1
- package/dist/heatmap/utils/calculateCaptionTails.d.ts.map +1 -1
- package/dist/heatmap/utils/calculateCaptionTails.js.map +1 -1
- package/dist/histogram/ChartRenderer.d.ts +6 -5
- package/dist/histogram/ChartRenderer.d.ts.map +1 -1
- package/dist/histogram/ChartRenderer.js +154 -153
- package/dist/histogram/ChartRenderer.js.map +1 -1
- package/dist/histogram/HistogramSettingsImpl.d.ts +2 -2
- package/dist/histogram/HistogramSettingsImpl.d.ts.map +1 -1
- package/dist/histogram/HistogramSettingsImpl.js.map +1 -1
- package/dist/histogram/components/Chart.js +48 -48
- package/dist/histogram/components/Chart.js.map +1 -1
- package/dist/histogram/components/types.d.ts +4 -3
- package/dist/histogram/components/types.d.ts.map +1 -1
- package/dist/histogram/getHistogramData.d.ts +7 -7
- package/dist/histogram/getHistogramData.d.ts.map +1 -1
- package/dist/histogram/getHistogramData.js +52 -53
- package/dist/histogram/getHistogramData.js.map +1 -1
- package/dist/histogram/index.d.ts +3 -3
- package/dist/histogram/index.d.ts.map +1 -1
- package/dist/histogram/index.js +49 -45
- package/dist/histogram/index.js.map +1 -1
- package/dist/node_modules/@d3fc/d3fc-axis/src/axisBase.js +10 -10
- package/dist/node_modules/d3-array/src/min.js +5 -11
- package/dist/node_modules/d3-array/src/min.js.map +1 -1
- package/dist/node_modules/d3-shape/src/area.js +30 -30
- package/dist/node_modules/d3-shape/src/line.js +6 -6
- package/dist/node_modules/d3-shape/src/line.js.map +1 -1
- package/dist/node_modules/kdbush/index.js +148 -0
- package/dist/node_modules/kdbush/index.js.map +1 -0
- package/dist/scatterplot/ChartRenderer.d.ts +7 -6
- package/dist/scatterplot/ChartRenderer.d.ts.map +1 -1
- package/dist/scatterplot/ChartRenderer.js +213 -209
- package/dist/scatterplot/ChartRenderer.js.map +1 -1
- package/dist/scatterplot/ScatterplotSettingsImpl.d.ts +2 -2
- package/dist/scatterplot/ScatterplotSettingsImpl.d.ts.map +1 -1
- package/dist/scatterplot/ScatterplotSettingsImpl.js +28 -28
- package/dist/scatterplot/ScatterplotSettingsImpl.js.map +1 -1
- package/dist/scatterplot/components/ChartAxisTitles.d.ts.map +1 -1
- package/dist/scatterplot/components/ChartAxisTitles.js +31 -30
- package/dist/scatterplot/components/ChartAxisTitles.js.map +1 -1
- package/dist/scatterplot/components/ChartLayersData.d.ts.map +1 -1
- package/dist/scatterplot/components/ChartLayersData.js +138 -156
- package/dist/scatterplot/components/ChartLayersData.js.map +1 -1
- package/dist/scatterplot/components/ChartTooltip.d.ts.map +1 -1
- package/dist/scatterplot/components/ChartTooltip.js +41 -38
- package/dist/scatterplot/components/ChartTooltip.js.map +1 -1
- package/dist/scatterplot/components/ChartTrendsData.js +21 -21
- package/dist/scatterplot/components/ChartTrendsData.js.map +1 -1
- package/dist/scatterplot/components/types.d.ts +7 -7
- package/dist/scatterplot/components/types.d.ts.map +1 -1
- package/dist/scatterplot/constants.d.ts +1 -1
- package/dist/scatterplot/constants.d.ts.map +1 -1
- package/dist/scatterplot/constants.js.map +1 -1
- package/dist/scatterplot/dots.d.ts +2 -2
- package/dist/scatterplot/dots.d.ts.map +1 -1
- package/dist/scatterplot/dots.js +27 -25
- package/dist/scatterplot/dots.js.map +1 -1
- package/dist/scatterplot/getLayersData.d.ts +3 -3
- package/dist/scatterplot/getLayersData.d.ts.map +1 -1
- package/dist/scatterplot/getLayersData.js +12 -15
- package/dist/scatterplot/getLayersData.js.map +1 -1
- package/dist/scatterplot/index.d.ts +4 -4
- package/dist/scatterplot/index.d.ts.map +1 -1
- package/dist/scatterplot/index.js +71 -72
- package/dist/scatterplot/index.js.map +1 -1
- package/dist/scatterplot/linearRegression.d.ts +5 -4
- package/dist/scatterplot/linearRegression.d.ts.map +1 -1
- package/dist/scatterplot/linearRegression.js +88 -86
- package/dist/scatterplot/linearRegression.js.map +1 -1
- package/dist/scatterplot/utils/createAesGetter.d.ts +3 -2
- package/dist/scatterplot/utils/createAesGetter.d.ts.map +1 -1
- package/dist/scatterplot/utils/createAesGetter.js +21 -21
- package/dist/scatterplot/utils/createAesGetter.js.map +1 -1
- package/dist/scatterplot/utils/createLegendInfo.d.ts +2 -10
- package/dist/scatterplot/utils/createLegendInfo.d.ts.map +1 -1
- package/dist/scatterplot/utils/createLegendInfo.js +44 -37
- package/dist/scatterplot/utils/createLegendInfo.js.map +1 -1
- package/dist/scatterplot/utils/formatColumnValue.d.ts +5 -0
- package/dist/scatterplot/utils/formatColumnValue.d.ts.map +1 -0
- package/dist/scatterplot/utils/formatColumnValue.js +11 -0
- package/dist/scatterplot/utils/formatColumnValue.js.map +1 -0
- package/dist/scatterplot/utils/getVisibleLabels.d.ts +6 -9
- package/dist/scatterplot/utils/getVisibleLabels.d.ts.map +1 -1
- package/dist/scatterplot/utils/getVisibleLabels.js +46 -56
- package/dist/scatterplot/utils/getVisibleLabels.js.map +1 -1
- package/dist/scatterplot-umap/ChartRenderer.d.ts +18 -15
- package/dist/scatterplot-umap/ChartRenderer.d.ts.map +1 -1
- package/dist/scatterplot-umap/ChartRenderer.js +231 -214
- package/dist/scatterplot-umap/ChartRenderer.js.map +1 -1
- package/dist/scatterplot-umap/SettingsImpl.d.ts +2 -2
- package/dist/scatterplot-umap/SettingsImpl.d.ts.map +1 -1
- package/dist/scatterplot-umap/SettingsImpl.js +25 -25
- package/dist/scatterplot-umap/SettingsImpl.js.map +1 -1
- package/dist/scatterplot-umap/colors.d.ts +6 -0
- package/dist/scatterplot-umap/colors.d.ts.map +1 -0
- package/dist/scatterplot-umap/colors.js +42 -0
- package/dist/scatterplot-umap/colors.js.map +1 -0
- package/dist/scatterplot-umap/components/LowerSVG.d.ts +2 -2
- package/dist/scatterplot-umap/components/LowerSVG.d.ts.map +1 -1
- package/dist/scatterplot-umap/components/LowerSVG.js +97 -94
- package/dist/scatterplot-umap/components/LowerSVG.js.map +1 -1
- package/dist/scatterplot-umap/components/UpperSVG.d.ts.map +1 -1
- package/dist/scatterplot-umap/components/UpperSVG.js +20 -19
- package/dist/scatterplot-umap/components/UpperSVG.js.map +1 -1
- package/dist/scatterplot-umap/index.d.ts +0 -2
- package/dist/scatterplot-umap/index.d.ts.map +1 -1
- package/dist/scatterplot-umap/index.js +77 -102
- package/dist/scatterplot-umap/index.js.map +1 -1
- package/dist/scatterplot-umap/types.d.ts +7 -10
- package/dist/scatterplot-umap/types.d.ts.map +1 -1
- package/dist/types/bubble.d.ts +44 -12
- package/dist/types/bubble.d.ts.map +1 -1
- package/dist/types/common.d.ts +22 -3
- package/dist/types/common.d.ts.map +1 -1
- package/dist/types/common.js +3 -1
- package/dist/types/common.js.map +1 -1
- package/dist/types/dendro.d.ts +113 -10
- package/dist/types/dendro.d.ts.map +1 -1
- package/dist/types/dendro.js +1 -1
- package/dist/types/dendro.js.map +1 -1
- package/dist/types/discrete.d.ts +99 -22
- package/dist/types/discrete.d.ts.map +1 -1
- package/dist/types/discrete.js +3 -3
- package/dist/types/discrete.js.map +1 -1
- package/dist/types/heatmap.d.ts +187 -28
- package/dist/types/heatmap.d.ts.map +1 -1
- package/dist/types/heatmap.js +1 -1
- package/dist/types/heatmap.js.map +1 -1
- package/dist/types/histogram.d.ts +30 -8
- package/dist/types/histogram.d.ts.map +1 -1
- package/dist/types/histogram.js +1 -1
- package/dist/types/histogram.js.map +1 -1
- package/dist/types/scatterplot-umap.d.ts +149 -15
- package/dist/types/scatterplot-umap.d.ts.map +1 -1
- package/dist/types/scatterplot-umap.js +9 -9
- package/dist/types/scatterplot-umap.js.map +1 -1
- package/dist/types/scatterplot.d.ts +164 -12
- package/dist/types/scatterplot.d.ts.map +1 -1
- package/dist/types/scatterplot.js +1 -1
- package/dist/types/scatterplot.js.map +1 -1
- package/dist/utils/TextMeasurer/TextMeasurer.d.ts +7 -0
- package/dist/utils/TextMeasurer/TextMeasurer.d.ts.map +1 -0
- package/dist/utils/TextMeasurer/TextMeasurer.js +42 -0
- package/dist/utils/TextMeasurer/TextMeasurer.js.map +1 -0
- package/dist/utils/TextMeasurer/charToWidth.json.js +155 -0
- package/dist/utils/TextMeasurer/charToWidth.json.js.map +1 -0
- package/dist/utils/arrangeLegendParts.js +1 -1
- package/dist/utils/arrangeLegendParts.js.map +1 -1
- package/dist/utils/getChartEdgeSides.d.ts +1 -1
- package/dist/utils/getLegendWidth.d.ts.map +1 -1
- package/dist/utils/getLegendWidth.js +1 -1
- package/dist/utils/getLegendWidth.js.map +1 -1
- package/package.json +5 -3
- package/dist/bubble/getCells.d.ts.map +0 -1
- package/dist/bubble/getCells.js +0 -91
- package/dist/bubble/getCells.js.map +0 -1
- package/dist/node_modules/d3-quadtree/src/add.js +0 -30
- package/dist/node_modules/d3-quadtree/src/add.js.map +0 -1
- package/dist/node_modules/d3-quadtree/src/cover.js +0 -29
- package/dist/node_modules/d3-quadtree/src/cover.js.map +0 -1
- package/dist/node_modules/d3-quadtree/src/data.js +0 -12
- package/dist/node_modules/d3-quadtree/src/data.js.map +0 -1
- package/dist/node_modules/d3-quadtree/src/extent.js +0 -7
- package/dist/node_modules/d3-quadtree/src/extent.js.map +0 -1
- package/dist/node_modules/d3-quadtree/src/find.js +0 -26
- package/dist/node_modules/d3-quadtree/src/find.js.map +0 -1
- package/dist/node_modules/d3-quadtree/src/quad.js +0 -7
- package/dist/node_modules/d3-quadtree/src/quad.js.map +0 -1
- package/dist/node_modules/d3-quadtree/src/quadtree.js +0 -51
- package/dist/node_modules/d3-quadtree/src/quadtree.js.map +0 -1
- package/dist/node_modules/d3-quadtree/src/remove.js +0 -21
- package/dist/node_modules/d3-quadtree/src/remove.js.map +0 -1
- package/dist/node_modules/d3-quadtree/src/root.js +0 -7
- package/dist/node_modules/d3-quadtree/src/root.js.map +0 -1
- package/dist/node_modules/d3-quadtree/src/size.js +0 -12
- package/dist/node_modules/d3-quadtree/src/size.js.map +0 -1
- package/dist/node_modules/d3-quadtree/src/visit.js +0 -14
- package/dist/node_modules/d3-quadtree/src/visit.js.map +0 -1
- package/dist/node_modules/d3-quadtree/src/visitAfter.js +0 -19
- package/dist/node_modules/d3-quadtree/src/visitAfter.js.map +0 -1
- package/dist/node_modules/d3-quadtree/src/x.js +0 -11
- package/dist/node_modules/d3-quadtree/src/x.js.map +0 -1
- package/dist/node_modules/d3-quadtree/src/y.js +0 -11
- package/dist/node_modules/d3-quadtree/src/y.js.map +0 -1
- package/dist/utils/TextMeasurer.d.ts +0 -8
- package/dist/utils/TextMeasurer.d.ts.map +0 -1
- package/dist/utils/TextMeasurer.js +0 -27
- package/dist/utils/TextMeasurer.js.map +0 -1
|
@@ -1,23 +1,23 @@
|
|
|
1
1
|
import { j as n } from "../../node_modules/react/jsx-runtime.js";
|
|
2
|
-
import $ from "../../node_modules/lodash/lodash.js";
|
|
2
|
+
import { l as $ } from "../../node_modules/lodash/lodash.js";
|
|
3
3
|
import { r as g } from "../../_virtual/index.js";
|
|
4
4
|
import { numberFormat as i } from "../../utils/numberFormat.js";
|
|
5
5
|
const b = g.memo(({
|
|
6
6
|
width: r,
|
|
7
|
-
scales:
|
|
8
|
-
trendsData:
|
|
7
|
+
scales: t,
|
|
8
|
+
trendsData: e,
|
|
9
9
|
aesGetters: o
|
|
10
|
-
}) =>
|
|
11
|
-
const [
|
|
12
|
-
if (isNaN(
|
|
10
|
+
}) => e && e.map(({ idx: f, predict: x, getArea: d, bounded: h, xBounds: j, stats: y }, c) => {
|
|
11
|
+
const [l, p] = h ? j : t.x.domain(), u = (p - l) / 15, m = x(l), a = x(p);
|
|
12
|
+
if (isNaN(m) || isNaN(a))
|
|
13
13
|
return null;
|
|
14
|
-
const s = o.trendColor(
|
|
14
|
+
const s = o.trendColor(f);
|
|
15
15
|
return /* @__PURE__ */ n.jsxs("g", { children: [
|
|
16
16
|
/* @__PURE__ */ n.jsx("text", { y: c * 20 + 20, fill: s, x: r - 8, textAnchor: "end", children: F(y) }),
|
|
17
17
|
/* @__PURE__ */ n.jsx(
|
|
18
18
|
"path",
|
|
19
19
|
{
|
|
20
|
-
d:
|
|
20
|
+
d: d(t.x, t.y, $.range(l, p + u / 2, u)),
|
|
21
21
|
fill: s,
|
|
22
22
|
opacity: 0.2
|
|
23
23
|
}
|
|
@@ -25,38 +25,38 @@ const b = g.memo(({
|
|
|
25
25
|
/* @__PURE__ */ n.jsx(
|
|
26
26
|
"line",
|
|
27
27
|
{
|
|
28
|
-
x1:
|
|
29
|
-
x2:
|
|
30
|
-
y1:
|
|
31
|
-
y2:
|
|
28
|
+
x1: t.x(l),
|
|
29
|
+
x2: t.x(p),
|
|
30
|
+
y1: t.y(m),
|
|
31
|
+
y2: t.y(a),
|
|
32
32
|
stroke: s
|
|
33
33
|
}
|
|
34
34
|
)
|
|
35
35
|
] }, c);
|
|
36
36
|
}));
|
|
37
|
-
function
|
|
37
|
+
function E(r) {
|
|
38
38
|
return typeof r.r2 > "u" ? null : /* @__PURE__ */ n.jsxs(n.Fragment, { children: [
|
|
39
39
|
/* @__PURE__ */ n.jsx("tspan", { children: "R" }),
|
|
40
40
|
/* @__PURE__ */ n.jsx("tspan", { fontSize: "10px", dy: "-8", children: "2" }),
|
|
41
41
|
/* @__PURE__ */ n.jsx("tspan", { dy: "8", children: ` = ${i(r.r2)}` })
|
|
42
42
|
] });
|
|
43
43
|
}
|
|
44
|
-
function
|
|
44
|
+
function C(r) {
|
|
45
45
|
return typeof r.pValue > "u" ? null : /* @__PURE__ */ n.jsx("tspan", { children: `p-value = ${i(r.pValue)}` });
|
|
46
46
|
}
|
|
47
47
|
function N(r) {
|
|
48
48
|
if (typeof r.coefficients > "u")
|
|
49
49
|
return null;
|
|
50
|
-
const { slope:
|
|
51
|
-
return /* @__PURE__ */ n.jsx("tspan", { children: /* @__PURE__ */ n.jsx("tspan", { children: `slope = ${i(
|
|
50
|
+
const { slope: t, slopeError: e, intercept: o, interceptError: f } = r.coefficients;
|
|
51
|
+
return /* @__PURE__ */ n.jsx("tspan", { children: /* @__PURE__ */ n.jsx("tspan", { children: `slope = ${i(t)} ± ${i(e)}, intercept = ${i(o)} ± ${i(f)}` }) });
|
|
52
52
|
}
|
|
53
53
|
function F(r) {
|
|
54
|
-
const
|
|
55
|
-
(
|
|
54
|
+
const t = [E(r), C(r), N(r)].filter(
|
|
55
|
+
(e) => e !== null
|
|
56
56
|
);
|
|
57
|
-
return /* @__PURE__ */ n.jsx(n.Fragment, { children:
|
|
58
|
-
|
|
59
|
-
/* @__PURE__ */ n.jsx("tspan", { children: o <
|
|
57
|
+
return /* @__PURE__ */ n.jsx(n.Fragment, { children: t.map((e, o) => /* @__PURE__ */ n.jsxs("tspan", { children: [
|
|
58
|
+
e,
|
|
59
|
+
/* @__PURE__ */ n.jsx("tspan", { children: o < t.length - 1 && ", " })
|
|
60
60
|
] }, o)) });
|
|
61
61
|
}
|
|
62
62
|
export {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChartTrendsData.js","sources":["../../../src/scatterplot/components/ChartTrendsData.tsx"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"ChartTrendsData.js","sources":["../../../src/scatterplot/components/ChartTrendsData.tsx"],"sourcesContent":["import { range } from 'lodash';\nimport { memo, type ReactElement } from 'react';\nimport { numberFormat } from '../../utils/numberFormat';\nimport type { TrendsData } from '../linearRegression';\nimport type {\n AesGetters,\n ChartScales\n} from './types';\n\ninterface Props {\n trendsData: TrendsData[keyof TrendsData] | null;\n width: number;\n scales: ChartScales;\n aesGetters: AesGetters;\n}\n\nexport const ChartTrendsData = memo(({\n width,\n scales,\n trendsData,\n aesGetters,\n}: Props) => {\n return (trendsData &&\n trendsData.map(({ idx, predict, getArea, bounded, xBounds, stats}, i) => {\n const [minX, maxX] = bounded ? xBounds : scales.x.domain();\n const step = (maxX - minX) / 15;\n const p1 = predict(minX);\n const p2 = predict(maxX);\n if (isNaN(p1) || isNaN(p2)) {\n return null;\n }\n const fillColor = aesGetters.trendColor(idx);\n return (\n <g key={i}>\n <text y={i * 20 + 20} fill={fillColor} x={width - 8} textAnchor=\"end\">\n {formatStats(stats)}\n </text>\n <path\n d={getArea(scales.x, scales.y, range(minX, maxX + step / 2, step))}\n fill={fillColor}\n opacity={0.2}\n />\n <line\n x1={scales.x(minX)}\n x2={scales.x(maxX)}\n y1={scales.y(p1)}\n y2={scales.y(p2)}\n stroke={fillColor}\n />\n </g>\n );\n })\n );\n});\n\nfunction formatR2(stats: TrendsData[keyof TrendsData][number]['stats']) {\n if (typeof stats.r2 === 'undefined') {\n return null;\n }\n return (\n <>\n <tspan>R</tspan>\n <tspan fontSize=\"10px\" dy=\"-8\">\n 2\n </tspan>\n <tspan dy=\"8\">{` = ${numberFormat(stats.r2)}`}</tspan>\n </>\n );\n}\n\nfunction formatPValue(stats: TrendsData[keyof TrendsData][number]['stats']) {\n if (typeof stats.pValue === 'undefined') {\n return null;\n }\n return <tspan>{`p-value = ${numberFormat(stats.pValue)}`}</tspan>;\n}\n\nfunction formatCoefficients(stats: TrendsData[keyof TrendsData][number]['stats']) {\n if (typeof stats.coefficients === 'undefined') {\n return null;\n }\n const {slope, slopeError, intercept, interceptError} = stats.coefficients;\n return (\n <tspan>\n <tspan>\n {`slope = ${numberFormat(slope)} ± ${numberFormat(slopeError)}, intercept = ${numberFormat(intercept)} ± ${numberFormat(interceptError)}`}\n </tspan>\n </tspan>\n );\n}\n\nfunction formatStats(stats: TrendsData[keyof TrendsData][number]['stats']) {\n const items = [formatR2(stats), formatPValue(stats), formatCoefficients(stats)].filter(\n value => value !== null\n ) as unknown as ReactElement[];\n return (\n <>\n {items.map((item, idx) => (\n <tspan key={idx}>\n {item}\n <tspan>{idx < items.length - 1 && ', '}</tspan>\n </tspan>\n ))}\n </>\n );\n}\n\n"],"names":["ChartTrendsData","memo","width","scales","trendsData","aesGetters","idx","predict","getArea","bounded","xBounds","stats","i","minX","maxX","step","p1","p2","fillColor","jsx","formatStats","range","formatR2","jsxs","Fragment","numberFormat","formatPValue","formatCoefficients","slope","slopeError","intercept","interceptError","items","value","item"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Row, LineShape, PointShape } from '../../types';
|
|
2
1
|
import { ScaleLinear, ScaleLogarithmic } from 'd3-scale';
|
|
2
|
+
import { LineShape, PointShape } from '../../types';
|
|
3
3
|
export interface Margins {
|
|
4
4
|
top: number;
|
|
5
5
|
bottom: number;
|
|
@@ -47,11 +47,11 @@ export interface CaptionsSizes {
|
|
|
47
47
|
}
|
|
48
48
|
export type Scale = ScaleLinear<number, number> | ScaleLogarithmic<number, number>;
|
|
49
49
|
export type AesGetters = {
|
|
50
|
-
dotShape: (
|
|
51
|
-
dotColor: (
|
|
52
|
-
dotSize: (
|
|
53
|
-
lineShape: (
|
|
54
|
-
lineColor: (
|
|
55
|
-
trendColor: (
|
|
50
|
+
dotShape: (rowIndex: number) => PointShape;
|
|
51
|
+
dotColor: (rowIndex: number) => string;
|
|
52
|
+
dotSize: (rowIndex: number) => number;
|
|
53
|
+
lineShape: (rowIndex: number) => LineShape;
|
|
54
|
+
lineColor: (rowIndex: number) => string;
|
|
55
|
+
trendColor: (rowIndex: number) => string;
|
|
56
56
|
};
|
|
57
57
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/scatterplot/components/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/scatterplot/components/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzD,MAAM,WAAW,OAAO;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IACxB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClE,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrE;AAED,MAAM,WAAW,YAAY;IAEzB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;IACpC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;CACvC;AAED,MAAM,WAAW,mBAAmB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE;QACH,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,KAAK,EAAE;QACH,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,OAAO,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,cAAc,EAAE,CAAC,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC;CAC3D;AAED,MAAM,WAAW,aAAa;IAC1B,kBAAkB,EAAC,MAAM,CAAC;IAC1B,kBAAkB,EAAC,MAAM,CAAC;CAC7B;AAED,MAAM,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEnF,MAAM,MAAM,UAAU,GAAG;IACrB,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,UAAU,CAAC;IAC3C,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC;IACvC,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC;IACtC,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,SAAS,CAAC;IAC3C,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC;IACxC,UAAU,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC;CAC5C,CAAC"}
|
|
@@ -6,7 +6,7 @@ export declare const PADDINGS: {
|
|
|
6
6
|
LEFT: number;
|
|
7
7
|
RIGHT: number;
|
|
8
8
|
};
|
|
9
|
-
export declare const DEFAULT_COMMON_AES: AesItem
|
|
9
|
+
export declare const DEFAULT_COMMON_AES: Required<AesItem>;
|
|
10
10
|
export declare const DEFAULT_DOT_AES: DotAesItem;
|
|
11
11
|
export declare const FACET_TITLE_LINE = 20;
|
|
12
12
|
export declare const FACET_TITLE_OFFSET = 6;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/scatterplot/constants.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/scatterplot/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAGxC,eAAO,MAAM,QAAQ;;;;;CAKpB,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CAAC,OAAO,CAQhD,CAAC;AACF,eAAO,MAAM,eAAe,EAAC,UAI5B,CAAC;AAEF,eAAO,MAAM,gBAAgB,KAAK,CAAC;AACnC,eAAO,MAAM,kBAAkB,IAAI,CAAC;AACpC,eAAO,MAAM,iBAAiB,IAAI,CAAC;AACnC,eAAO,MAAM,UAAU,KAAK,CAAC;AAC7B,eAAO,MAAM,WAAW,KAAK,CAAC;AAE9B,eAAO,MAAM,UAAU,KAAK,CAAC;AAC7B,eAAO,MAAM,kBAAkB,IAAI,CAAC;AACpC,eAAO,MAAM,WAAW,IAAI,CAAC;AAE7B,eAAO,MAAM,aAAa,KAAK,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sources":["../../src/scatterplot/constants.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"constants.js","sources":["../../src/scatterplot/constants.ts"],"sourcesContent":["import type { DotAesItem } from '../common/types';\nimport { BLACK } from '../constants';\nimport type { AesItem } from '../types';\n\n// inner paddings in chart area\nexport const PADDINGS = {\n TOP: 30,\n BOTTOM: 30,\n LEFT: 30,\n RIGHT: 30\n};\n\nexport const DEFAULT_COMMON_AES: Required<AesItem> = {\n fillColor: 'white',\n lineColor: BLACK,\n lineWidth: 1,\n lineShape: 'solid',\n dotSize: 3,\n dotFill: BLACK,\n dotShape: '21',\n};\nexport const DEFAULT_DOT_AES:DotAesItem = {\n color: '#929BAD',\n size: 6,\n shape: '21',\n};\n\nexport const FACET_TITLE_LINE = 20;\nexport const FACET_TITLE_OFFSET = 6;\nexport const FACET_AXIS_OFFSET = 8;\nexport const MIN_MARGIN = 24;\nexport const MIN_PADDING = 12;\n\nexport const TITLE_LINE = 20;\nexport const DEFAULT_TICKS_SIZE = 4;\nexport const TICK_OFFSET = 6;\n\nexport const LEGEND_OFFSET = 10;\n"],"names":["PADDINGS","DEFAULT_COMMON_AES","BLACK","DEFAULT_DOT_AES","FACET_TITLE_LINE","FACET_TITLE_OFFSET","FACET_AXIS_OFFSET","MIN_MARGIN","MIN_PADDING","TITLE_LINE","DEFAULT_TICKS_SIZE","TICK_OFFSET","LEGEND_OFFSET"],"mappings":";AAKO,MAAMA,IAAW;AAAA,EACpB,KAAK;AAAA,EACL,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,OAAO;AACX,GAEaC,IAAwC;AAAA,EACjD,WAAW;AAAA,EACX,WAAWC;AAAA,EACX,WAAW;AAAA,EACX,WAAW;AAAA,EACX,SAAS;AAAA,EACT,SAASA;AAAA,EACT,UAAU;AACd,GACaC,IAA6B;AAAA,EACtC,OAAO;AAAA,EACP,MAAM;AAAA,EACN,OAAO;AACX,GAEaC,IAAmB,IACnBC,IAAqB,GACrBC,IAAoB,GACpBC,IAAa,IACbC,IAAc,IAEdC,IAAa,IACbC,IAAqB,GACrBC,IAAc,GAEdC,IAAgB;"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { DataFrame } from '../DataFrame';
|
|
2
|
-
import { ColumnName, DataValue
|
|
2
|
+
import { ColumnName, DataValue } from '../types';
|
|
3
3
|
export type Dot = {
|
|
4
|
+
idx: number;
|
|
4
5
|
x: number;
|
|
5
6
|
y: number;
|
|
6
7
|
label: DataValue | null;
|
|
7
8
|
dimmed: boolean;
|
|
8
|
-
data: Row;
|
|
9
9
|
};
|
|
10
10
|
export type GroupedDots = Record<string, {
|
|
11
11
|
minX: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dots.d.ts","sourceRoot":"","sources":["../../src/scatterplot/dots.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"dots.d.ts","sourceRoot":"","sources":["../../src/scatterplot/dots.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAGtD,MAAM,MAAM,GAAG,GAAG;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,MAAM,CAC5B,MAAM,EACN;IACI,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,GAAG,EAAE,CAAC;CACf,CACJ,CAAC;AAEF,wBAAgB,OAAO,CACnB,IAAI,EAAE,SAAS,EACf,qBAAqB,EAAE,MAAM,EAAE,EAAE,EACjC,CAAC,EAAE,UAAU,EACb,CAAC,EAAE,UAAU,EACb,KAAK,EAAE,UAAU,GAAG,IAAI,EACxB,SAAS,EAAE,UAAU,GAAG,IAAI,EAC5B,IAAI,EAAE,MAAM,EAAE,GACf,WAAW,CAmDb"}
|
package/dist/scatterplot/dots.js
CHANGED
|
@@ -1,34 +1,36 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
1
|
+
import { formatColumnValue as V } from "./utils/formatColumnValue.js";
|
|
2
|
+
import { format as w } from "../node_modules/d3-format/src/defaultLocale.js";
|
|
3
|
+
function d(t, v, h, I, o, y, C) {
|
|
4
|
+
const p = {}, M = o != null && o.format ? w(o.format) : void 0;
|
|
5
|
+
for (const g of v) {
|
|
6
|
+
const i = [];
|
|
7
|
+
let u = 1 / 0, f = 1 / 0, s = -1 / 0, l = -1 / 0;
|
|
8
|
+
const a = g.concat([""]);
|
|
9
|
+
for (const c of C) {
|
|
10
|
+
a[a.length - 1] = c;
|
|
11
|
+
const e = t.getRowsByGrouping(a);
|
|
12
|
+
for (let x = 0; x < e.length; x++) {
|
|
13
|
+
const n = e[x], m = t.getColumnValue(h.value, n), r = t.getColumnValue(I.value, n);
|
|
14
|
+
m === null && r === null || (u = Math.min(u, m), f = Math.min(f, r), s = Math.max(s, m), l = Math.max(l, r), i.push({
|
|
15
|
+
x: m,
|
|
16
|
+
y: r,
|
|
17
|
+
label: V(t, n, o, M),
|
|
18
|
+
dimmed: y ? !t.getColumnValue(y.value, n) : !1,
|
|
19
|
+
idx: n
|
|
18
20
|
}));
|
|
19
21
|
}
|
|
20
22
|
}
|
|
21
|
-
|
|
22
|
-
minX:
|
|
23
|
-
maxX:
|
|
24
|
-
minY:
|
|
25
|
-
maxY:
|
|
26
|
-
dots:
|
|
23
|
+
i.sort((c, e) => c.x - e.x), p[g.join("_")] = {
|
|
24
|
+
minX: u,
|
|
25
|
+
maxX: s,
|
|
26
|
+
minY: f,
|
|
27
|
+
maxY: l,
|
|
28
|
+
dots: i
|
|
27
29
|
};
|
|
28
30
|
}
|
|
29
|
-
return
|
|
31
|
+
return p;
|
|
30
32
|
}
|
|
31
33
|
export {
|
|
32
|
-
|
|
34
|
+
d as getDots
|
|
33
35
|
};
|
|
34
36
|
//# sourceMappingURL=dots.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dots.js","sources":["../../src/scatterplot/dots.ts"],"sourcesContent":["import type { DataFrame } from '../DataFrame';\nimport type { ColumnName, DataValue
|
|
1
|
+
{"version":3,"file":"dots.js","sources":["../../src/scatterplot/dots.ts"],"sourcesContent":["import {format} from 'd3-format';\nimport type { DataFrame } from '../DataFrame';\nimport type { ColumnName, DataValue } from '../types';\nimport {formatColumnValue} from './utils/formatColumnValue';\n\nexport type Dot = {\n idx: number;\n x: number;\n y: number;\n label: DataValue | null;\n dimmed: boolean;\n};\n\nexport type GroupedDots = Record<\n string,\n {\n minX: number;\n maxX: number;\n minY: number;\n maxY: number;\n dots: Dot[];\n }\n>;\n\nexport function getDots(\n data: DataFrame,\n facetKeysCombinations: string[][],\n x: ColumnName,\n y: ColumnName,\n label: ColumnName | null,\n highlight: ColumnName | null,\n keys: string[]\n): GroupedDots {\n const result: GroupedDots = {};\n\n const labelFormatter = label?.format ? format(label.format) : undefined;\n\n for (const facetKeys of facetKeysCombinations) {\n const dots: Dot[] = [];\n let minX = Infinity;\n let minY = Infinity;\n let maxX = -Infinity;\n let maxY = -Infinity;\n\n const templateGroupPath = facetKeys.concat(['']);\n for (const primaryKey of keys) {\n templateGroupPath[templateGroupPath.length - 1] = primaryKey;\n const rows = data.getRowsByGrouping(templateGroupPath);\n\n for (let i = 0; i < rows.length; i++) {\n const rowIdx = rows[i];\n const valueX = data.getColumnValue(x.value, rowIdx) as number;\n const valueY = data.getColumnValue(y.value, rowIdx) as number;\n\n if (valueX === null && valueY === null) continue;\n\n minX = Math.min(minX, valueX);\n minY = Math.min(minY, valueY);\n maxX = Math.max(maxX, valueX);\n maxY = Math.max(maxY, valueY);\n\n dots.push({\n x: valueX,\n y: valueY,\n label: formatColumnValue(data, rowIdx, label, labelFormatter),\n dimmed: highlight ? !data.getColumnValue(highlight.value, rowIdx) : false,\n idx: rowIdx\n });\n }\n }\n\n dots.sort((d1, d2) => d1.x - d2.x);\n\n result[facetKeys.join('_')] = {\n minX,\n maxX,\n minY,\n maxY,\n dots,\n };\n }\n\n return result;\n}\n"],"names":["getDots","data","facetKeysCombinations","x","y","label","highlight","keys","result","labelFormatter","format","facetKeys","dots","minX","minY","maxX","maxY","templateGroupPath","primaryKey","rows","i","rowIdx","valueX","valueY","formatColumnValue","d1","d2"],"mappings":";;AAwBO,SAASA,EACZC,GACAC,GACAC,GACAC,GACAC,GACAC,GACAC,GACW;AACX,QAAMC,IAAsB,CAAA,GAEtBC,IAAiBJ,KAAA,QAAAA,EAAO,SAASK,EAAOL,EAAM,MAAM,IAAI;AAE9D,aAAWM,KAAaT,GAAuB;AAC3C,UAAMU,IAAc,CAAA;AACpB,QAAIC,IAAO,OACPC,IAAO,OACPC,IAAO,QACPC,IAAO;AAEX,UAAMC,IAAoBN,EAAU,OAAO,CAAC,EAAE,CAAC;AAC/C,eAAWO,KAAcX,GAAM;AAC3B,MAAAU,EAAkBA,EAAkB,SAAS,CAAC,IAAIC;AAClD,YAAMC,IAAOlB,EAAK,kBAAkBgB,CAAiB;AAErD,eAASG,IAAI,GAAGA,IAAID,EAAK,QAAQC,KAAK;AAClC,cAAMC,IAASF,EAAKC,CAAC,GACfE,IAASrB,EAAK,eAAeE,EAAE,OAAOkB,CAAM,GAC5CE,IAAStB,EAAK,eAAeG,EAAE,OAAOiB,CAAM;AAElD,QAAIC,MAAW,QAAQC,MAAW,SAElCV,IAAO,KAAK,IAAIA,GAAMS,CAAM,GAC5BR,IAAO,KAAK,IAAIA,GAAMS,CAAM,GAC5BR,IAAO,KAAK,IAAIA,GAAMO,CAAM,GAC5BN,IAAO,KAAK,IAAIA,GAAMO,CAAM,GAE5BX,EAAK,KAAK;AAAA,UACN,GAAGU;AAAA,UACH,GAAGC;AAAA,UACH,OAAOC,EAAkBvB,GAAMoB,GAAQhB,GAAOI,CAAc;AAAA,UAC5D,QAAQH,IAAY,CAACL,EAAK,eAAeK,EAAU,OAAOe,CAAM,IAAI;AAAA,UACpE,KAAKA;AAAA,QAAA,CACR;AAAA,MACL;AAAA,IACJ;AAEA,IAAAT,EAAK,KAAK,CAACa,GAAIC,MAAOD,EAAG,IAAIC,EAAG,CAAC,GAEjClB,EAAOG,EAAU,KAAK,GAAG,CAAC,IAAI;AAAA,MAC1B,MAAAE;AAAA,MACA,MAAAE;AAAA,MACA,MAAAD;AAAA,MACA,MAAAE;AAAA,MACA,MAAAJ;AAAA,IAAA;AAAA,EAER;AAEA,SAAOJ;AACX;"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
import { DataFrame } from '../DataFrame';
|
|
2
|
+
import { ColumnName, ScatterplotLayer } from '../types';
|
|
1
3
|
import { Dot, GroupedDots } from './dots';
|
|
2
4
|
import { CurveLayer, DotsLayer } from './ScatterplotSettingsImpl';
|
|
3
|
-
import { ColumnName, DataValue, ScatterplotLayer } from '../types';
|
|
4
5
|
export type DotsLayerData = {
|
|
5
6
|
type: 'dots';
|
|
6
7
|
info: DotsLayer;
|
|
@@ -8,7 +9,6 @@ export type DotsLayerData = {
|
|
|
8
9
|
};
|
|
9
10
|
export type CurveData = {
|
|
10
11
|
dots: Dot[];
|
|
11
|
-
data: Record<string, DataValue>;
|
|
12
12
|
};
|
|
13
13
|
export type CurveLayerData = {
|
|
14
14
|
type: 'curve';
|
|
@@ -16,5 +16,5 @@ export type CurveLayerData = {
|
|
|
16
16
|
geoms: CurveData[];
|
|
17
17
|
};
|
|
18
18
|
export type ScatterplotLayerData = DotsLayerData | CurveLayerData;
|
|
19
|
-
export declare function getLayersData(layers: ScatterplotLayer[], facetKeys: string[], dotsByFacets: GroupedDots, categoryGroupingCombinations: string[][], grouping: ColumnName[]): Record<string, ScatterplotLayerData[]>;
|
|
19
|
+
export declare function getLayersData(dataFrame: DataFrame, layers: ScatterplotLayer[], facetKeys: string[], dotsByFacets: GroupedDots, categoryGroupingCombinations: string[][], grouping: ColumnName[]): Record<string, ScatterplotLayerData[]>;
|
|
20
20
|
//# sourceMappingURL=getLayersData.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getLayersData.d.ts","sourceRoot":"","sources":["../../src/scatterplot/getLayersData.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"getLayersData.d.ts","sourceRoot":"","sources":["../../src/scatterplot/getLayersData.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAE7D,OAAO,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAEvE,MAAM,MAAM,aAAa,GAAI;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,GAAG,EAAE,CAAA;CACf,CAAA;AAED,MAAM,MAAM,SAAS,GAAG;IACpB,IAAI,EAAE,GAAG,EAAE,CAAC;CACf,CAAA;AACD,MAAM,MAAM,cAAc,GAAI;IAC1B,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,SAAS,EAAE,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,oBAAoB,GAAG,aAAa,GAAG,cAAc,CAAC;AAElE,wBAAgB,aAAa,CACzB,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,gBAAgB,EAAE,EAC1B,SAAS,EAAE,MAAM,EAAE,EACnB,YAAY,EAAE,WAAW,EACzB,4BAA4B,EAAE,MAAM,EAAE,EAAE,EACxC,QAAQ,EAAE,UAAU,EAAE,GACvB,MAAM,CAAC,MAAM,EAAE,oBAAoB,EAAE,CAAC,CA2BxC"}
|
|
@@ -1,30 +1,27 @@
|
|
|
1
|
-
import { exhaustive as
|
|
2
|
-
function
|
|
3
|
-
return
|
|
4
|
-
const
|
|
5
|
-
return
|
|
1
|
+
import { exhaustive as g } from "../utils/index.js";
|
|
2
|
+
function x(s, u, i, p, f, c) {
|
|
3
|
+
return i.reduce((o, r) => {
|
|
4
|
+
const n = p[r].dots;
|
|
5
|
+
return o[r] = u.map((t) => {
|
|
6
6
|
if (t.type === "curve")
|
|
7
7
|
return {
|
|
8
8
|
type: "curve",
|
|
9
9
|
info: t,
|
|
10
|
-
geoms:
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
), v = n.reduce((e, o, r) => (e[o.value] = s[r], e), {});
|
|
14
|
-
return { dots: m, data: v };
|
|
15
|
-
})
|
|
10
|
+
geoms: f.map((e) => ({ dots: n.filter(
|
|
11
|
+
(d) => c.every((a, m) => String(s.getColumnValue(a.value, d.idx)) === e[m])
|
|
12
|
+
) })).filter((e) => e.dots.length > 0)
|
|
16
13
|
};
|
|
17
14
|
if (t.type === "dots")
|
|
18
15
|
return {
|
|
19
16
|
type: "dots",
|
|
20
17
|
info: t,
|
|
21
|
-
geoms:
|
|
18
|
+
geoms: n
|
|
22
19
|
};
|
|
23
|
-
|
|
24
|
-
}),
|
|
20
|
+
g(t, "Unknown scatterplot layer type");
|
|
21
|
+
}), o;
|
|
25
22
|
}, {});
|
|
26
23
|
}
|
|
27
24
|
export {
|
|
28
|
-
|
|
25
|
+
x as getLayersData
|
|
29
26
|
};
|
|
30
27
|
//# sourceMappingURL=getLayersData.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getLayersData.js","sources":["../../src/scatterplot/getLayersData.ts"],"sourcesContent":["import type {
|
|
1
|
+
{"version":3,"file":"getLayersData.js","sources":["../../src/scatterplot/getLayersData.ts"],"sourcesContent":["import type { DataFrame } from '../DataFrame';\nimport type { ColumnName, ScatterplotLayer } from '../types';\nimport { exhaustive } from '../utils';\nimport type { Dot, GroupedDots } from './dots';\nimport type { CurveLayer, DotsLayer } from './ScatterplotSettingsImpl';\n\nexport type DotsLayerData = {\n type: 'dots',\n info: DotsLayer,\n geoms: Dot[]\n}\n\nexport type CurveData = {\n dots: Dot[],\n}\nexport type CurveLayerData = {\n type: 'curve',\n info: CurveLayer,\n geoms: CurveData[]\n}\n\nexport type ScatterplotLayerData = DotsLayerData | CurveLayerData;\n\nexport function getLayersData(\n dataFrame: DataFrame,\n layers: ScatterplotLayer[],\n facetKeys: string[],\n dotsByFacets: GroupedDots,\n categoryGroupingCombinations: string[][],\n grouping: ColumnName[]\n): Record<string, ScatterplotLayerData[]> {\n return facetKeys.reduce((res:Record<string, ScatterplotLayerData[]>, key) => {\n const facetDots = dotsByFacets[key].dots;\n res[key] = layers.map(layer => {\n if (layer.type === 'curve') {\n return {\n type: 'curve',\n info: layer,\n geoms: categoryGroupingCombinations.map(values => {\n const dots = facetDots.filter(dot =>\n grouping.every((column, idx) => String(dataFrame.getColumnValue(column.value, dot.idx)) === values[idx])\n );\n return {dots};\n }).filter(item => item.dots.length > 0)\n } as CurveLayerData;\n }\n if (layer.type === 'dots') {\n return {\n type: 'dots',\n info: layer,\n geoms: facetDots,\n } as DotsLayerData;\n }\n exhaustive(layer, 'Unknown scatterplot layer type');\n });\n return res;\n }, {});\n}\n"],"names":["getLayersData","dataFrame","layers","facetKeys","dotsByFacets","categoryGroupingCombinations","grouping","res","key","facetDots","layer","values","column","idx","dot","item","exhaustive"],"mappings":";AAuBO,SAASA,EACZC,GACAC,GACAC,GACAC,GACAC,GACAC,GACsC;AACtC,SAAOH,EAAU,OAAO,CAACI,GAA4CC,MAAQ;AACzE,UAAMC,IAAYL,EAAaI,CAAG,EAAE;AACpC,WAAAD,EAAIC,CAAG,IAAIN,EAAO,IAAI,CAAAQ,MAAS;AAC3B,UAAIA,EAAM,SAAS;AACf,eAAO;AAAA,UACH,MAAM;AAAA,UACN,MAAMA;AAAA,UACN,OAAOL,EAA6B,IAAI,CAAAM,OAI7B,EAAC,MAHKF,EAAU;AAAA,YAAO,OAC1BH,EAAS,MAAM,CAACM,GAAQC,MAAQ,OAAOZ,EAAU,eAAeW,EAAO,OAAOE,EAAI,GAAG,CAAC,MAAMH,EAAOE,CAAG,CAAC;AAAA,UAAA,EAEnG,EACX,EAAE,OAAO,OAAQE,EAAK,KAAK,SAAS,CAAC;AAAA,QAAA;AAG9C,UAAIL,EAAM,SAAS;AACf,eAAO;AAAA,UACH,MAAM;AAAA,UACN,MAAMA;AAAA,UACN,OAAOD;AAAA,QAAA;AAGf,MAAAO,EAAWN,GAAO,gCAAgC;AAAA,IACtD,CAAC,GACMH;AAAA,EACX,GAAG,CAAA,CAAE;AACT;"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { AbstractChart } from '../AbstractChart';
|
|
2
|
-
import {
|
|
3
|
-
import { ScatterplotLayerData } from './getLayersData';
|
|
2
|
+
import { DataFrame } from '../DataFrame';
|
|
4
3
|
import { ScatterplotEventHandlers, ScatterplotLegendInfo, ScatterplotSettings } from '../types';
|
|
5
4
|
import { default as ChartRenderer } from './ChartRenderer';
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
5
|
+
import { GroupedDots } from './dots';
|
|
6
|
+
import { ScatterplotLayerData } from './getLayersData';
|
|
8
7
|
import { TrendsData } from './linearRegression';
|
|
8
|
+
import { ScatterplotSettingsImpl } from './ScatterplotSettingsImpl';
|
|
9
9
|
export declare class ChartScatterplot extends AbstractChart {
|
|
10
10
|
settings: ScatterplotSettingsImpl;
|
|
11
11
|
chartRenderer: ChartRenderer;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/scatterplot/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/scatterplot/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAIR,wBAAwB,EACxB,qBAAqB,EACrB,mBAAmB,EACtB,MAAM,UAAU,CAAC;AAClB,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAE1C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAE5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAuBpE,qBAAa,gBAAiB,SAAQ,aAAa;IAC/C,QAAQ,EAAE,uBAAuB,CAAC;IAClC,aAAa,EAAE,aAAa,CAAC;IAE7B,mBAAmB,EAAE,CAAC,CAAC,EAAC,OAAO,KAAK,IAAI,CAAmB;IAC3D,cAAc,EAAE;QACZ,YAAY,EAAE;YAAC,CAAC,EAAE,OAAO,CAAC;YAAC,CAAC,EAAE,OAAO,CAAA;SAAC,CAAC;QACvC,YAAY,EAAE,WAAW,CAAC;QAC1B,SAAS,EAAE,MAAM,EAAE,CAAC;QACpB,qBAAqB,EAAE,MAAM,EAAE,EAAE,CAAC;QAClC,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;QAC9B,YAAY,EAAE,qBAAqB,CAAC;QACpC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,EAAE,CAAC,CAAC;KACtD,GAAG,IAAI,CAAQ;gBAEJ,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,mBAAmB,EAAE,aAAa,CAAC,EAAC,wBAAwB;IAUnG,KAAK,CAAC,IAAI,EAAE,WAAW;IAcvB,OAAO;IAIP,qBAAqB,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,mBAAmB;IAwBpE,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO;IAIhD,MAAM,IAAI,MAAM;IAKhB,mCAAmC,CAAC,YAAY,EAAE,uBAAuB,EAAE,QAAQ,EAAE,uBAAuB;IAY5G,+BAA+B,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS;IAUpE,WAAW;IA4CX,gBAAgB;IA8ChB,YAAY;CAwBf"}
|