@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,43 +1,43 @@
|
|
|
1
|
-
var
|
|
2
|
-
var
|
|
3
|
-
var
|
|
1
|
+
var K = Object.defineProperty;
|
|
2
|
+
var S = (l, c, t) => c in l ? K(l, c, { enumerable: !0, configurable: !0, writable: !0, value: t }) : l[c] = t;
|
|
3
|
+
var p = (l, c, t) => S(l, typeof c != "symbol" ? c + "" : c, t);
|
|
4
|
+
import { renderToString as L } from "../node_modules/react-dom/server.browser.js";
|
|
4
5
|
import { AbstractChart as j } from "../AbstractChart.js";
|
|
5
|
-
import
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import I from "./ChartRenderer.js";
|
|
6
|
+
import x from "./ChartRenderer.js";
|
|
7
|
+
import { getDots as T } from "./dots.js";
|
|
8
|
+
import { getLayersData as k } from "./getLayersData.js";
|
|
9
|
+
import { getRegressionData as O } from "./linearRegression.js";
|
|
10
10
|
import { ScatterplotSettingsImpl as _ } from "./ScatterplotSettingsImpl.js";
|
|
11
|
-
import {
|
|
12
|
-
function
|
|
13
|
-
if (!
|
|
11
|
+
import { createLegendInfo as G, addPalettesToAesMapping as I } from "./utils/createLegendInfo.js";
|
|
12
|
+
function v(l) {
|
|
13
|
+
if (!l.length)
|
|
14
14
|
return [];
|
|
15
|
-
let
|
|
16
|
-
return
|
|
15
|
+
let c = [[]];
|
|
16
|
+
return l.forEach((t) => {
|
|
17
17
|
const e = [];
|
|
18
18
|
t.forEach((a) => {
|
|
19
|
-
e.push(...
|
|
20
|
-
}),
|
|
21
|
-
}),
|
|
19
|
+
e.push(...c.map((r) => [...r, a]));
|
|
20
|
+
}), c = e;
|
|
21
|
+
}), c;
|
|
22
22
|
}
|
|
23
|
-
function
|
|
24
|
-
return typeof
|
|
23
|
+
function P(l) {
|
|
24
|
+
return typeof l == "object" && "type" in l && l.type === "grouping";
|
|
25
25
|
}
|
|
26
|
-
class
|
|
26
|
+
class Q extends j {
|
|
27
27
|
constructor(t, e, a) {
|
|
28
28
|
super(t, e);
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
29
|
+
p(this, "settings");
|
|
30
|
+
p(this, "chartRenderer");
|
|
31
|
+
p(this, "onTooltipHintSwitch", () => {
|
|
32
32
|
});
|
|
33
|
-
|
|
34
|
-
this.settings = new _(e), a && (this.onTooltipHintSwitch = a.onTooltipHintSwitch);
|
|
33
|
+
p(this, "calculatedData", null);
|
|
34
|
+
this.chartRenderer = new x(), this.settings = new _(e), a && (this.onTooltipHintSwitch = a.onTooltipHintSwitch);
|
|
35
35
|
}
|
|
36
36
|
mount(t) {
|
|
37
37
|
try {
|
|
38
38
|
this.chartRenderer.init(t), this._updateData(), this._updateChart();
|
|
39
39
|
} catch (e) {
|
|
40
|
-
e instanceof Error && this.chartRenderer.renderError(e.message);
|
|
40
|
+
console.error(e), e instanceof Error && (this.chartRenderer.renderError(e.message), console.error(e));
|
|
41
41
|
}
|
|
42
42
|
}
|
|
43
43
|
unmount() {
|
|
@@ -45,84 +45,83 @@ class W extends j {
|
|
|
45
45
|
}
|
|
46
46
|
updateSettingsAndData(t, e) {
|
|
47
47
|
try {
|
|
48
|
-
const a = this.settings,
|
|
49
|
-
this.settings = new _(e), this.data = t, this._needUpdateCalculatedDataBySettings(a, this.settings) || this._needUpdateCalculatedDataByData(
|
|
48
|
+
const a = this.settings, r = this.data;
|
|
49
|
+
this.settings = new _(e), this.data = t, this._needUpdateCalculatedDataBySettings(a, this.settings) || this._needUpdateCalculatedDataByData(r, this.data) ? this._updateData() : this._updateAesInData(), this._updateChart();
|
|
50
50
|
} catch (a) {
|
|
51
|
-
a instanceof Error && this.chartRenderer.renderError(a.message);
|
|
51
|
+
console.error(a), a instanceof Error && (this.chartRenderer.renderError(a.message), console.error(a));
|
|
52
52
|
}
|
|
53
53
|
}
|
|
54
54
|
updateChartState(t, e) {
|
|
55
55
|
console.warn("no chart state for scatterplot");
|
|
56
56
|
}
|
|
57
57
|
export() {
|
|
58
|
-
return this._updateChart(),
|
|
58
|
+
return this._updateChart(), L(this.chartRenderer.component);
|
|
59
59
|
}
|
|
60
60
|
_needUpdateCalculatedDataBySettings(t, e) {
|
|
61
|
-
var a,
|
|
62
|
-
return t.facetBy.some((
|
|
63
|
-
var
|
|
64
|
-
return
|
|
65
|
-
}) || t.grouping.length !== e.grouping.length || t.grouping.some((
|
|
66
|
-
var
|
|
67
|
-
return
|
|
68
|
-
}) || (((a = t.label) == null ? void 0 : a.value) || ((
|
|
61
|
+
var a, r, h, d;
|
|
62
|
+
return t.facetBy.some((i, n) => {
|
|
63
|
+
var s;
|
|
64
|
+
return i.value !== ((s = e.facetBy[n]) == null ? void 0 : s.value);
|
|
65
|
+
}) || t.grouping.length !== e.grouping.length || t.grouping.some((i, n) => {
|
|
66
|
+
var s;
|
|
67
|
+
return i.value !== ((s = e.grouping[n]) == null ? void 0 : s.value);
|
|
68
|
+
}) || (((a = t.label) == null ? void 0 : a.value) || ((r = e.label) == null ? void 0 : r.value)) && ((h = t.label) == null ? void 0 : h.value) !== ((d = e.label) == null ? void 0 : d.value) || t.layers.length !== e.layers.length || t.layers.some((i, n) => i.type !== e.layers[n].type) || !!t.trend != !!e.trend;
|
|
69
69
|
}
|
|
70
70
|
_needUpdateCalculatedDataByData(t, e) {
|
|
71
|
-
const a = Object.keys(t.data),
|
|
72
|
-
return t.id !== e.id || a.length !==
|
|
71
|
+
const a = Object.keys(t.data), r = Object.keys(e.data);
|
|
72
|
+
return t.id !== e.id || a.length !== r.length || a.some((h) => {
|
|
73
73
|
var d;
|
|
74
|
-
return t.data[
|
|
74
|
+
return t.data[h].length !== ((d = e.data[h]) == null ? void 0 : d.length);
|
|
75
75
|
});
|
|
76
76
|
}
|
|
77
77
|
_updateData() {
|
|
78
|
-
const { x: t, y: e, facetBy: a, grouping:
|
|
79
|
-
this.data.setGrouping([...
|
|
78
|
+
const { x: t, y: e, facetBy: a, grouping: r, keyColumn: h, trend: d, layers: i, inheritedAes: n, label: s, highlight: f } = this.settings, y = this.data.getColumnCategories(h.value), g = a.map((o) => this.data.getColumnCategories(o.value)).filter((o) => o.length > 0), u = r.map((o) => this.data.getColumnCategories(o.value)).filter((o) => o.length > 0), C = g.length ? v(g) : [["null"]], b = u.length ? v(u) : [["null"]], E = a.map((o) => o.value) ?? null;
|
|
79
|
+
this.data.setGrouping([...E, h.value]);
|
|
80
80
|
const B = {
|
|
81
|
-
x: this.data.
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
}),
|
|
85
|
-
y: this.data.rows.every((h) => {
|
|
86
|
-
const p = h[e.value];
|
|
87
|
-
return p === null || !(Number(p) < 0);
|
|
88
|
-
})
|
|
89
|
-
}, D = x(this.data, C, t, e, r, f, m), b = Object.keys(D), A = P(D, b, v, s, d), K = k(this.data, s, o, n), R = T(o, b, D, v, s);
|
|
81
|
+
x: this.data.getColumn(t.value).every((o) => o === null || !(Number(o) < 0)),
|
|
82
|
+
y: this.data.getColumn(e.value).every((o) => o === null || !(Number(o) < 0))
|
|
83
|
+
}, m = T(this.data, C, t, e, s, f, y), D = Object.keys(m), R = O(this.data, m, D, b, r, d), A = G(this.data, r, i, n), w = k(this.data, i, D, m, b, r);
|
|
90
84
|
this.calculatedData = {
|
|
91
85
|
onlyPositive: B,
|
|
92
|
-
dotsByFacets:
|
|
93
|
-
facetKeys:
|
|
86
|
+
dotsByFacets: m,
|
|
87
|
+
facetKeys: D,
|
|
94
88
|
facetKeysCombinations: C,
|
|
95
|
-
trendsData:
|
|
96
|
-
legendLabels:
|
|
97
|
-
layersData:
|
|
89
|
+
trendsData: R,
|
|
90
|
+
legendLabels: A,
|
|
91
|
+
layersData: w
|
|
98
92
|
};
|
|
99
93
|
}
|
|
100
94
|
_updateAesInData() {
|
|
101
95
|
const t = this.calculatedData;
|
|
102
96
|
if (!t)
|
|
103
97
|
return;
|
|
104
|
-
const { grouping: e, trend: a, layers:
|
|
98
|
+
const { grouping: e, trend: a, layers: r, inheritedAes: h } = this.settings, { facetKeys: d, trendsData: i } = t;
|
|
105
99
|
d.forEach((n) => {
|
|
106
|
-
for (let
|
|
107
|
-
t.layersData[n][
|
|
100
|
+
for (let s = 0; s < r.length; s++)
|
|
101
|
+
t.layersData[n][s].info = r[s];
|
|
108
102
|
}), e.forEach((n) => {
|
|
109
|
-
const
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
103
|
+
const s = /* @__PURE__ */ new Set(), f = {};
|
|
104
|
+
r.forEach((y) => {
|
|
105
|
+
y.aes && Object.entries(y.aes).forEach(([g, u]) => {
|
|
106
|
+
P(u) && u.value === n.value && (s.add(g), u.palette && (f[g] = u.palette));
|
|
113
107
|
});
|
|
114
|
-
}), t.legendLabels[n.value].usedAes = [...
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
108
|
+
}), t.legendLabels[n.value].usedAes = [...s], t.legendLabels[n.value].aesMap = I(
|
|
109
|
+
n,
|
|
110
|
+
f,
|
|
111
|
+
h[n.value]
|
|
112
|
+
);
|
|
113
|
+
}), i && a && Object.keys(i).forEach((n) => {
|
|
114
|
+
i[n].forEach((s) => {
|
|
115
|
+
s.color = a.color, s.bounded = a.bounded;
|
|
118
116
|
});
|
|
119
117
|
});
|
|
120
118
|
}
|
|
121
119
|
_updateChart() {
|
|
122
120
|
if (!this.calculatedData)
|
|
123
121
|
return;
|
|
124
|
-
const { id: t, chartSettings: e, facetSettings: a, grouping:
|
|
122
|
+
const { id: t, chartSettings: e, facetSettings: a, grouping: r, keyColumn: h, layers: d, trend: i } = this.settings;
|
|
125
123
|
this.chartRenderer.render(
|
|
124
|
+
this.data,
|
|
126
125
|
t,
|
|
127
126
|
e,
|
|
128
127
|
a,
|
|
@@ -131,18 +130,18 @@ class W extends j {
|
|
|
131
130
|
//for titles, if facet by more than 1 column
|
|
132
131
|
this.calculatedData.dotsByFacets,
|
|
133
132
|
this.calculatedData.trendsData,
|
|
134
|
-
|
|
133
|
+
h,
|
|
135
134
|
this.calculatedData.onlyPositive,
|
|
136
135
|
this.calculatedData.legendLabels,
|
|
137
136
|
this.calculatedData.layersData,
|
|
138
|
-
|
|
137
|
+
r,
|
|
139
138
|
d,
|
|
140
|
-
|
|
139
|
+
i,
|
|
141
140
|
this.onTooltipHintSwitch
|
|
142
141
|
);
|
|
143
142
|
}
|
|
144
143
|
}
|
|
145
144
|
export {
|
|
146
|
-
|
|
145
|
+
Q as ChartScatterplot
|
|
147
146
|
};
|
|
148
147
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/scatterplot/index.ts"],"sourcesContent":["import {AbstractChart} from '../AbstractChart';\nimport type {GroupedDots} from './dots';\nimport {getDots} from './dots';\nimport type {ScatterplotLayerData} from './getLayersData';\nimport {getLayersData} from './getLayersData';\nimport {addPalettesToAesMapping, createLegendInfo} from './utils/createLegendInfo';\nimport type {\n AesItem,\n ContinuousAesFromColumn,\n InheritAesScatterplot,\n ScatterplotEventHandlers,\n ScatterplotLegendInfo,\n} from '../types';\nimport {renderToString} from 'react-dom/server';\nimport ChartRenderer from './ChartRenderer';\nimport type {ScatterplotSettings} from '../types';\nimport {ScatterplotSettingsImpl} from './ScatterplotSettingsImpl';\nimport type {DataFrame} from '../DataFrame';\nimport type {TrendsData} from './linearRegression';\nimport {getRegressionData} from './linearRegression';\n\n// all combinations with 1 key from each list\nfunction getKeysCombinations(keysLists: string[][]) {\n if (!keysLists.length) {\n return [];\n }\n let result: string[][] = [[]];\n keysLists.forEach(keys => {\n const nextResult: string[][] = [];\n keys.forEach(key => {\n nextResult.push(...result.map(resultItem => [...resultItem, key]));\n });\n result = nextResult;\n });\n return result;\n}\n\nfunction isInheritMapping<T extends (string | number)>(value:T | InheritAesScatterplot | ContinuousAesFromColumn<T>):value is InheritAesScatterplot {\n return typeof value === 'object' && 'type' in value && value.type === 'grouping';\n}\n\nexport class ChartScatterplot extends AbstractChart {\n settings: ScatterplotSettingsImpl;\n chartRenderer = new ChartRenderer();\n\n onTooltipHintSwitch: (v:boolean) => void = () => undefined;\n calculatedData: {\n onlyPositive: {x: boolean; y: boolean};\n dotsByFacets: GroupedDots;\n facetKeys: string[];\n facetKeysCombinations: string[][];\n trendsData: TrendsData | null;\n legendLabels: ScatterplotLegendInfo;\n layersData: Record<string, ScatterplotLayerData[]>;\n } | null = null;\n\n constructor(data: DataFrame, settings: ScatterplotSettings, eventHandlers?:ScatterplotEventHandlers) {\n super(data, settings);\n\n this.settings = new ScatterplotSettingsImpl(settings);\n if (eventHandlers) {\n this.onTooltipHintSwitch = eventHandlers.onTooltipHintSwitch;\n }\n }\n\n mount(node: HTMLElement) {\n try {\n this.chartRenderer.init(node);\n this._updateData();\n this._updateChart();\n } catch (err) {\n if (err instanceof Error) {\n this.chartRenderer.renderError(err.message as string);\n }\n }\n }\n\n unmount() {\n this.chartRenderer.clear();\n }\n\n updateSettingsAndData(data: DataFrame, settings: ScatterplotSettings) {\n try {\n const previousSettings = this.settings;\n const previousData = this.data;\n this.settings = new ScatterplotSettingsImpl(settings);\n this.data = data;\n if (\n this._needUpdateCalculatedDataBySettings(previousSettings, this.settings) ||\n this._needUpdateCalculatedDataByData(previousData, this.data)\n ) {\n this._updateData();\n } else {\n this._updateAesInData();\n }\n this._updateChart();\n } catch (err) {\n if (err instanceof Error) {\n this.chartRenderer.renderError(err.message as string);\n }\n }\n }\n\n updateChartState(_field: string, _value: unknown) {\n console.warn('no chart state for scatterplot');\n }\n\n export(): string {\n this._updateChart();\n return renderToString(this.chartRenderer.component);\n }\n\n _needUpdateCalculatedDataBySettings(prevSettings: ScatterplotSettingsImpl, settings: ScatterplotSettingsImpl) {\n return (\n prevSettings.facetBy.some((el, idx) => el.value !== settings.facetBy[idx]?.value) ||\n prevSettings.grouping.length !== settings.grouping.length ||\n prevSettings.grouping.some((el, idx) => el.value !== settings.grouping[idx]?.value) ||\n (prevSettings.label?.value || settings.label?.value) && prevSettings.label?.value !== settings.label?.value ||\n prevSettings.layers.length !== settings.layers.length ||\n prevSettings.layers.some((l, idx) => l.type !== settings.layers[idx].type) ||\n Boolean(prevSettings.trend) !== Boolean(settings.trend)\n );\n }\n\n _needUpdateCalculatedDataByData(prevData: DataFrame, data: DataFrame) {\n const prevKeys = Object.keys(prevData.data);\n const keys = Object.keys(data.data);\n return (\n prevData.id !== data.id ||\n prevKeys.length !== keys.length ||\n prevKeys.some(key => prevData.data[key].length !== data.data[key]?.length)\n );\n }\n\n _updateData() {\n const {x, y, facetBy, grouping, keyColumn, trend, layers, inheritedAes, label, highlight} = this.settings;\n const keys = this.data.getColumnCategories(keyColumn.value);\n\n const facetKeysLists = facetBy.map(column => this.data.getColumnCategories(column.value));\n const categoryGroupingKeysKeysLists = grouping.map(column => this.data.getColumnCategories(column.value));\n\n const facetKeysCombinations = facetKeysLists.length ? getKeysCombinations([...facetKeysLists]) : [['null']];\n const categoryGroupingCombinations = categoryGroupingKeysKeysLists.length\n ? getKeysCombinations([...categoryGroupingKeysKeysLists])\n : [['null']];\n\n const facetGroupingValues = facetBy.map(column => column.value) ?? null;\n\n this.data.setGrouping([...facetGroupingValues, keyColumn.value]);\n const onlyPositive = {\n x: this.data.rows.every(row => {\n const v = row[x.value];\n return v === null || !(Number(v) < 0);\n }),\n y: this.data.rows.every(row => {\n const v = row[y.value];\n return v === null || !(Number(v) < 0);\n }),\n };\n // console.info('only positive Y:', onlyPositive.y);\n // console.info('only positive X:', onlyPositive.x);\n\n const dotsByFacets = getDots(this.data, facetKeysCombinations, x, y, label, highlight, keys);\n const facetKeys = Object.keys(dotsByFacets);\n const trendsData = getRegressionData(dotsByFacets, facetKeys, categoryGroupingCombinations, grouping, trend);\n\n const legendLabels = createLegendInfo(this.data, grouping, layers, inheritedAes);\n const layersData = getLayersData(layers, facetKeys, dotsByFacets, categoryGroupingCombinations, grouping);\n\n this.calculatedData = {\n onlyPositive,\n dotsByFacets,\n facetKeys,\n facetKeysCombinations,\n trendsData,\n legendLabels,\n layersData,\n };\n }\n\n _updateAesInData() {\n const calculated = this.calculatedData;\n if (!calculated) {\n return;\n }\n const {grouping, trend, layers, inheritedAes} = this.settings;\n const {facetKeys, trendsData} = calculated;\n\n facetKeys.forEach(facetKey => {\n for (let i = 0; i < layers.length; i++) {\n calculated.layersData[facetKey][i].info = layers[i];\n }\n });\n\n grouping.forEach(column => {\n const usedAes = new Set<keyof AesItem>();\n const usedAesFromPalettes:Partial<Record<keyof AesItem, string[]>> = {}; // if there is palette in mapping then\n layers.forEach(layer => {\n if (layer.aes) {\n Object.entries(layer.aes).forEach(([key, value]) => {\n if (isInheritMapping(value) && value.value === column.value) {\n usedAes.add(key as keyof AesItem);\n if (value.palette) {\n usedAesFromPalettes[key as keyof AesItem] = value.palette;\n }\n }\n });\n }\n });\n calculated.legendLabels[column.value].usedAes = [...usedAes];\n calculated.legendLabels[column.value].aesMap = addPalettesToAesMapping(calculated.legendLabels[column.value].values, usedAesFromPalettes, inheritedAes[column.value]);\n });\n if (trendsData && trend) {\n Object.keys(trendsData).forEach((key) => {\n trendsData[key].forEach(trendInfo => {\n trendInfo.color = trend.color;\n trendInfo.bounded = trend.bounded;\n });\n });\n }\n }\n\n _updateChart() {\n if (!this.calculatedData) {\n return;\n }\n const {id, chartSettings, facetSettings, grouping, keyColumn, layers, trend} = this.settings;\n this.chartRenderer.render(\n id,\n chartSettings,\n facetSettings,\n this.calculatedData.facetKeys,\n this.calculatedData.facetKeysCombinations, //for titles, if facet by more than 1 column\n this.calculatedData.dotsByFacets,\n this.calculatedData.trendsData,\n keyColumn,\n this.calculatedData.onlyPositive,\n this.calculatedData.legendLabels,\n this.calculatedData.layersData,\n grouping,\n layers,\n trend,\n this.onTooltipHintSwitch\n );\n }\n}\n"],"names":["getKeysCombinations","keysLists","result","keys","nextResult","key","resultItem","isInheritMapping","value","ChartScatterplot","AbstractChart","data","settings","eventHandlers","__publicField","ChartRenderer","ScatterplotSettingsImpl","node","err","previousSettings","previousData","_field","_value","renderToString","prevSettings","el","idx","_a","_b","_c","_d","l","prevData","prevKeys","x","y","facetBy","grouping","keyColumn","trend","layers","inheritedAes","label","highlight","facetKeysLists","column","categoryGroupingKeysKeysLists","facetKeysCombinations","categoryGroupingCombinations","facetGroupingValues","onlyPositive","row","v","dotsByFacets","getDots","facetKeys","trendsData","getRegressionData","legendLabels","createLegendInfo","layersData","getLayersData","calculated","facetKey","i","usedAes","usedAesFromPalettes","layer","addPalettesToAesMapping","trendInfo","id","chartSettings","facetSettings"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/scatterplot/index.ts"],"sourcesContent":["import { renderToString } from 'react-dom/server';\nimport { AbstractChart } from '../AbstractChart';\nimport type { DataFrame } from '../DataFrame';\nimport type {\n AesItem,\n ContinuousAesFromColumn,\n InheritAesScatterplot,\n ScatterplotEventHandlers,\n ScatterplotLegendInfo,\n ScatterplotSettings,\n} from '../types';\nimport ChartRenderer from './ChartRenderer';\nimport type { GroupedDots } from './dots';\nimport { getDots } from './dots';\nimport type { ScatterplotLayerData } from './getLayersData';\nimport { getLayersData } from './getLayersData';\nimport type { TrendsData } from './linearRegression';\nimport { getRegressionData } from './linearRegression';\nimport { ScatterplotSettingsImpl } from './ScatterplotSettingsImpl';\nimport { addPalettesToAesMapping, createLegendInfo } from './utils/createLegendInfo';\n\n// all combinations with 1 key from each list\nfunction getKeysCombinations(keysLists: string[][]) {\n if (!keysLists.length) {\n return [];\n }\n let result: string[][] = [[]];\n keysLists.forEach(keys => {\n const nextResult: string[][] = [];\n keys.forEach(key => {\n nextResult.push(...result.map(resultItem => [...resultItem, key]));\n });\n result = nextResult;\n });\n return result;\n}\n\nfunction isInheritMapping<T extends (string | number)>(value:T | InheritAesScatterplot | ContinuousAesFromColumn<T>):value is InheritAesScatterplot {\n return typeof value === 'object' && 'type' in value && value.type === 'grouping';\n}\n\nexport class ChartScatterplot extends AbstractChart {\n settings: ScatterplotSettingsImpl;\n chartRenderer: ChartRenderer;\n\n onTooltipHintSwitch: (v:boolean) => void = () => undefined;\n calculatedData: {\n onlyPositive: {x: boolean; y: boolean};\n dotsByFacets: GroupedDots;\n facetKeys: string[];\n facetKeysCombinations: string[][];\n trendsData: TrendsData | null;\n legendLabels: ScatterplotLegendInfo;\n layersData: Record<string, ScatterplotLayerData[]>;\n } | null = null;\n\n constructor(data: DataFrame, settings: ScatterplotSettings, eventHandlers?:ScatterplotEventHandlers) {\n super(data, settings);\n\n this.chartRenderer = new ChartRenderer();\n this.settings = new ScatterplotSettingsImpl(settings);\n if (eventHandlers) {\n this.onTooltipHintSwitch = eventHandlers.onTooltipHintSwitch;\n }\n }\n\n mount(node: HTMLElement) {\n try {\n this.chartRenderer.init(node);\n this._updateData();\n this._updateChart();\n } catch (err) {\n console.error(err);\n if (err instanceof Error) {\n this.chartRenderer.renderError(err.message as string);\n console.error(err);\n }\n }\n }\n\n unmount() {\n this.chartRenderer.clear();\n }\n\n updateSettingsAndData(data: DataFrame, settings: ScatterplotSettings) {\n try {\n const previousSettings = this.settings;\n const previousData = this.data;\n this.settings = new ScatterplotSettingsImpl(settings);\n this.data = data;\n if (\n this._needUpdateCalculatedDataBySettings(previousSettings, this.settings) ||\n this._needUpdateCalculatedDataByData(previousData, this.data)\n ) {\n this._updateData();\n } else {\n this._updateAesInData();\n }\n this._updateChart();\n } catch (err) {\n console.error(err);\n if (err instanceof Error) {\n this.chartRenderer.renderError(err.message as string);\n console.error(err);\n }\n }\n }\n\n updateChartState(_field: string, _value: unknown) {\n console.warn('no chart state for scatterplot');\n }\n\n export(): string {\n this._updateChart();\n return renderToString(this.chartRenderer.component);\n }\n\n _needUpdateCalculatedDataBySettings(prevSettings: ScatterplotSettingsImpl, settings: ScatterplotSettingsImpl) {\n return (\n prevSettings.facetBy.some((el, idx) => el.value !== settings.facetBy[idx]?.value) ||\n prevSettings.grouping.length !== settings.grouping.length ||\n prevSettings.grouping.some((el, idx) => el.value !== settings.grouping[idx]?.value) ||\n (prevSettings.label?.value || settings.label?.value) && prevSettings.label?.value !== settings.label?.value ||\n prevSettings.layers.length !== settings.layers.length ||\n prevSettings.layers.some((l, idx) => l.type !== settings.layers[idx].type) ||\n Boolean(prevSettings.trend) !== Boolean(settings.trend)\n );\n }\n\n _needUpdateCalculatedDataByData(prevData: DataFrame, data: DataFrame) {\n const prevKeys = Object.keys(prevData.data);\n const keys = Object.keys(data.data);\n return (\n prevData.id !== data.id ||\n prevKeys.length !== keys.length ||\n prevKeys.some(key => prevData.data[key].length !== data.data[key]?.length)\n );\n }\n\n _updateData() {\n const {x, y, facetBy, grouping, keyColumn, trend, layers, inheritedAes, label, highlight} = this.settings;\n const keys = this.data.getColumnCategories(keyColumn.value);\n\n const facetKeysLists = facetBy.map(column => this.data.getColumnCategories(column.value)).filter(v => v.length > 0);\n const categoryGroupingKeysLists = grouping.map(column => this.data.getColumnCategories(column.value)).filter(v => v.length > 0);\n\n const facetKeysCombinations = facetKeysLists.length\n ? getKeysCombinations(facetKeysLists)\n : [['null']];\n const categoryGroupingCombinations = categoryGroupingKeysLists.length\n ? getKeysCombinations(categoryGroupingKeysLists)\n : [['null']];\n\n const facetGroupingValues = facetBy.map(column => column.value) ?? null;\n\n this.data.setGrouping([...facetGroupingValues, keyColumn.value]);\n const onlyPositive = {\n x: this.data.getColumn(x.value).every(v => {\n return v === null || !(Number(v) < 0);\n }),\n y: this.data.getColumn(y.value).every(v => {\n return v === null || !(Number(v) < 0);\n }),\n };\n\n const dotsByFacets = getDots(this.data, facetKeysCombinations, x, y, label, highlight, keys);\n const facetKeys = Object.keys(dotsByFacets);\n const trendsData = getRegressionData(this.data, dotsByFacets, facetKeys, categoryGroupingCombinations, grouping, trend);\n\n const legendLabels = createLegendInfo(this.data, grouping, layers, inheritedAes);\n const layersData = getLayersData(this.data, layers, facetKeys, dotsByFacets, categoryGroupingCombinations, grouping);\n\n this.calculatedData = {\n onlyPositive,\n dotsByFacets,\n facetKeys,\n facetKeysCombinations,\n trendsData,\n legendLabels,\n layersData,\n };\n }\n\n _updateAesInData() {\n const calculated = this.calculatedData;\n if (!calculated) {\n return;\n }\n const {grouping, trend, layers, inheritedAes} = this.settings;\n const {facetKeys, trendsData} = calculated;\n\n facetKeys.forEach(facetKey => {\n for (let i = 0; i < layers.length; i++) {\n calculated.layersData[facetKey][i].info = layers[i];\n }\n });\n\n grouping.forEach(column => {\n const usedAes = new Set<keyof AesItem>();\n const usedAesFromPalettes:Partial<Record<keyof AesItem, string[]>> = {}; // if there is palette in mapping then\n layers.forEach(layer => {\n if (layer.aes) {\n Object.entries(layer.aes).forEach(([key, value]) => {\n if (isInheritMapping(value) && value.value === column.value) {\n usedAes.add(key as keyof AesItem);\n if (value.palette) {\n usedAesFromPalettes[key as keyof AesItem] = value.palette;\n }\n }\n });\n }\n });\n calculated.legendLabels[column.value].usedAes = [...usedAes];\n calculated.legendLabels[column.value].aesMap = addPalettesToAesMapping(\n column,\n usedAesFromPalettes,\n inheritedAes[column.value]\n );\n });\n if (trendsData && trend) {\n Object.keys(trendsData).forEach((key) => {\n trendsData[key].forEach(trendInfo => {\n trendInfo.color = trend.color;\n trendInfo.bounded = trend.bounded;\n });\n });\n }\n }\n\n _updateChart() {\n if (!this.calculatedData) {\n return;\n }\n const {id, chartSettings, facetSettings, grouping, keyColumn, layers, trend} = this.settings;\n this.chartRenderer.render(\n this.data,\n id,\n chartSettings,\n facetSettings,\n this.calculatedData.facetKeys,\n this.calculatedData.facetKeysCombinations, //for titles, if facet by more than 1 column\n this.calculatedData.dotsByFacets,\n this.calculatedData.trendsData,\n keyColumn,\n this.calculatedData.onlyPositive,\n this.calculatedData.legendLabels,\n this.calculatedData.layersData,\n grouping,\n layers,\n trend,\n this.onTooltipHintSwitch\n );\n }\n}\n"],"names":["getKeysCombinations","keysLists","result","keys","nextResult","key","resultItem","isInheritMapping","value","ChartScatterplot","AbstractChart","data","settings","eventHandlers","__publicField","ChartRenderer","ScatterplotSettingsImpl","node","err","previousSettings","previousData","_field","_value","renderToString","prevSettings","el","idx","_a","_b","_c","_d","l","prevData","prevKeys","x","y","facetBy","grouping","keyColumn","trend","layers","inheritedAes","label","highlight","facetKeysLists","column","v","categoryGroupingKeysLists","facetKeysCombinations","categoryGroupingCombinations","facetGroupingValues","onlyPositive","dotsByFacets","getDots","facetKeys","trendsData","getRegressionData","legendLabels","createLegendInfo","layersData","getLayersData","calculated","facetKey","i","usedAes","usedAesFromPalettes","layer","addPalettesToAesMapping","trendInfo","id","chartSettings","facetSettings"],"mappings":"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"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
import { ScaleLinear } from 'd3-scale';
|
|
2
|
+
import { DataFrame } from '../DataFrame';
|
|
3
|
+
import { ColumnName, ContinuousAesFromColumn, InheritAesScatterplot } from '../types';
|
|
1
4
|
import { GroupedDots } from './dots';
|
|
2
5
|
import { ScatterplotSettingsImpl } from './ScatterplotSettingsImpl';
|
|
3
|
-
import { ContinuousAesFromColumn, InheritAesScatterplot, Row, ColumnName } from '../types';
|
|
4
|
-
import { ScaleLinear } from 'd3-scale';
|
|
5
6
|
export declare function linearRegression(data: {
|
|
6
7
|
x: number;
|
|
7
8
|
y: number;
|
|
@@ -17,11 +18,11 @@ export declare function confidenceInterval(data: {
|
|
|
17
18
|
y: number;
|
|
18
19
|
}[], predict: (x: number) => number): (x: number) => PointIntervalInfo;
|
|
19
20
|
type TrendInfo = {
|
|
21
|
+
idx: number;
|
|
20
22
|
predict: (x: number) => number;
|
|
21
23
|
getInterval: (x: number) => PointIntervalInfo;
|
|
22
24
|
getArea: (x: ScaleLinear<number, number>, y: ScaleLinear<number, number>, range: number[]) => string;
|
|
23
25
|
color: string | InheritAesScatterplot | ContinuousAesFromColumn<string>;
|
|
24
|
-
data: Row;
|
|
25
26
|
bounded: boolean;
|
|
26
27
|
showStats: boolean;
|
|
27
28
|
xBounds: [number, number];
|
|
@@ -38,6 +39,6 @@ type TrendInfo = {
|
|
|
38
39
|
};
|
|
39
40
|
};
|
|
40
41
|
export type TrendsData = Record<string, TrendInfo[]>;
|
|
41
|
-
export declare function getRegressionData(dotsByFacets: GroupedDots, facetKeys: string[], groupingKeysValues: string[][], grouping: ColumnName[], trend: ScatterplotSettingsImpl['trend']): TrendsData | null;
|
|
42
|
+
export declare function getRegressionData(dataFrame: DataFrame, dotsByFacets: GroupedDots, facetKeys: string[], groupingKeysValues: string[][], grouping: ColumnName[], trend: ScatterplotSettingsImpl['trend']): TrendsData | null;
|
|
42
43
|
export {};
|
|
43
44
|
//# sourceMappingURL=linearRegression.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"linearRegression.d.ts","sourceRoot":"","sources":["../../src/scatterplot/linearRegression.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"linearRegression.d.ts","sourceRoot":"","sources":["../../src/scatterplot/linearRegression.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE5C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,UAAU,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAC3F,OAAO,KAAK,EAAO,WAAW,EAAE,MAAM,QAAQ,CAAC;AAC/C,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAmJzE,wBAAgB,gBAAgB,CAAC,IAAI,EAAE;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAsBjF;AAmBD,MAAM,MAAM,iBAAiB,GAAG;IAC5B,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CACpD,CAAA;AAED,wBAAgB,kBAAkB,CAC9B,IAAI,EAAE;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAC,EAAE,EAC9B,OAAO,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,GAC/B,CAAC,CAAC,EAAE,MAAM,KAAK,iBAAiB,CAiBlC;AAyED,KAAK,SAAS,GAAG;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;IAC/B,WAAW,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,iBAAiB,CAAC;IAC9C,OAAO,EAAE,CAAC,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,MAAM,CAAC;IACrG,KAAK,EAAE,MAAM,GAAG,qBAAqB,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAC;IACxE,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1B,KAAK,EAAE;QACH,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,CAAC,CAAC,EAAE,MAAM,CAAC;QACX,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,YAAY,CAAC,EAAE;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,SAAS,EAAE,MAAM,CAAC;YAAC,UAAU,EAAC,MAAM,CAAC;YAAC,cAAc,EAAE,MAAM,CAAA;SAAC,CAAC;KAChG,CAAC;CACL,CAAC;AACF,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;AAErD,wBAAgB,iBAAiB,CAC7B,SAAS,EAAE,SAAS,EACpB,YAAY,EAAE,WAAW,EACzB,SAAS,EAAE,MAAM,EAAE,EACnB,kBAAkB,EAAE,MAAM,EAAE,EAAE,EAC9B,QAAQ,EAAE,UAAU,EAAE,EACtB,KAAK,EAAE,uBAAuB,CAAC,OAAO,CAAC,GACxC,UAAU,GAAG,IAAI,CA6CnB"}
|
|
@@ -1,123 +1,125 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
1
|
+
import nn from "../node_modules/@stdlib/stats-base-dists-f-cdf/lib/index.js";
|
|
2
|
+
import tn from "../node_modules/d3-array/src/extent.js";
|
|
3
|
+
import en from "../node_modules/d3-shape/src/area.js";
|
|
4
4
|
import g from "../node_modules/d3-array/src/sum.js";
|
|
5
5
|
import w from "../node_modules/d3-array/src/mean.js";
|
|
6
|
-
const
|
|
7
|
-
function
|
|
8
|
-
const
|
|
9
|
-
let
|
|
10
|
-
return Math.abs(
|
|
6
|
+
const D = 0.05;
|
|
7
|
+
function on(n) {
|
|
8
|
+
const e = 3.3871328727963665, o = 133.14166789178438, a = 1971.5909503065513, s = 13731.69376550946, h = 45921.95393154987, f = 67265.7709270087, u = 33430.57558358813, i = 2509.0809287301227, r = 42.31333070160091, c = 687.1870074920579, l = 5394.196021424751, x = 21213.794301586597, m = 39307.89580009271, N = 28729.085735721943, v = 5226.495278852854, X = 1.4234371107496835, p = 4.630337846156546, b = 5.769497221460691, q = 3.6478483247632045, y = 1.2704582524523684, V = 0.2417807251774506, Y = 0.022723844989269184, F = 7745450142783414e-19, R = 2.053191626637759, S = 1.6763848301838038, _ = 0.6897673349851, L = 0.14810397642748008, P = 0.015198666563616457, z = 5475938084995345e-19, A = 10507500716444169e-25, B = 6.657904643501103, O = 5.463784911164114, T = 1.7848265399172913, j = 0.29656057182850487, k = 0.026532189526576124, G = 0.0012426609473880784, H = 27115555687434876e-21, J = 20103343992922881e-23, Q = 0.599832206555888, U = 0.1369298809227358, W = 0.014875361290850615, Z = 7868691311456133e-19, $ = 18463183175100548e-21, K = 1421511758316446e-22, d = 20442631033899397e-31, C = n - 0.5;
|
|
9
|
+
let t, M;
|
|
10
|
+
return Math.abs(C) <= 0.425 ? (t = 0.180625 - C * C, M = C * (((((((i * t + u) * t + f) * t + h) * t + s) * t + a) * t + o) * t + e) / (((((((v * t + N) * t + m) * t + x) * t + l) * t + c) * t + r) * t + 1), M) : (t = n, t = Math.sqrt(-Math.log(t)), t <= 5 ? (t += -1.6, M = (((((((F * t + Y) * t + V) * t + y) * t + q) * t + b) * t + p) * t + X) / (((((((A * t + z) * t + P) * t + L) * t + _) * t + S) * t + R) * t + 1)) : (t += -5, M = (((((((J * t + H) * t + G) * t + k) * t + j) * t + T) * t + O) * t + B) / (((((((d * t + K) * t + $) * t + Z) * t + W) * t + U) * t + Q) * t + 1)), M = -M, M);
|
|
11
11
|
}
|
|
12
|
-
function
|
|
13
|
-
const { sin:
|
|
14
|
-
let
|
|
15
|
-
if (
|
|
16
|
-
if (
|
|
17
|
-
const
|
|
18
|
-
let x = ((20700 *
|
|
19
|
-
const m = ((94.5 / (
|
|
20
|
-
return
|
|
12
|
+
function I(n, e) {
|
|
13
|
+
const { sin: o, cos: a, sqrt: s, pow: h, exp: f, PI: u } = Math;
|
|
14
|
+
let i, r;
|
|
15
|
+
if (e == 1) return a(n * u / 2) / o(n * u / 2);
|
|
16
|
+
if (e == 2) return s(2 / (n * (2 - n)) - 2);
|
|
17
|
+
const c = 1 / (e - 0.5), l = 48 / (c * c);
|
|
18
|
+
let x = ((20700 * c / l - 98) * c - 16) * c + 96.36;
|
|
19
|
+
const m = ((94.5 / (l + x) - 3) / l + 1) * s(c * u * 0.5) * e;
|
|
20
|
+
return i = m * n, r = h(i, 2 / e), r > 0.05 + c ? (i = on(n / 2), r = i * i, e < 5 && (x = x + 0.3 * (e - 4.5) * (i + 0.6)), x = (((0.05 * m * i - 5) * i - 7) * i - 2) * i + l + x, r = (((((0.4 * r + 6.3) * r + 36) * r + 94.5) / x - r - 3) / l + 1) * i, r = c * r * r, r > 2e-3 ? r = f(r) - 1 : r = 0.5 * r * r + r) : r = ((1 / (((e + 6) / (e * r) - 0.089 * m - 0.822) * (e + 2) * 3) + 0.5 / (e + 4)) * r - 1) * (e + 1) / (e + 2) + 1 / r, s(e * r);
|
|
21
21
|
}
|
|
22
|
-
function
|
|
23
|
-
let
|
|
24
|
-
for (let
|
|
25
|
-
const
|
|
26
|
-
if (!Number.isFinite(
|
|
27
|
-
--
|
|
22
|
+
function rn(n) {
|
|
23
|
+
let e = n.length, o = 0, a = 0, s = 0, h = 0;
|
|
24
|
+
for (let i = 0; i < n.length; ++i) {
|
|
25
|
+
const r = n[i].x, c = n[i].y;
|
|
26
|
+
if (!Number.isFinite(r) || !Number.isFinite(c)) {
|
|
27
|
+
--e;
|
|
28
28
|
continue;
|
|
29
29
|
}
|
|
30
|
-
|
|
30
|
+
o += r, a += c, s += r * c, h += r * r;
|
|
31
31
|
}
|
|
32
|
-
const f = (
|
|
33
|
-
return [f,
|
|
32
|
+
const f = (e * s - o * a) / (e * h - o * o), u = (a - f * o) / e;
|
|
33
|
+
return [f, u];
|
|
34
34
|
}
|
|
35
|
-
function
|
|
36
|
-
const
|
|
37
|
-
g(
|
|
38
|
-
),
|
|
39
|
-
return { slope:
|
|
35
|
+
function cn(n, e, o) {
|
|
36
|
+
const a = (l) => l * e + o, s = n.length, h = g(n, (l) => l.x) / n.length, f = I(D, s - 2), u = Math.sqrt(
|
|
37
|
+
g(n, (l) => (l.y - a(l.x)) ** 2) / (s - 2) / g(n, (l) => (l.x - h) ** 2)
|
|
38
|
+
), i = u * f, c = u * Math.sqrt(g(n, (l) => l.x ** 2) / s) * f;
|
|
39
|
+
return { slope: e, intercept: o, slopeError: i, interceptError: c };
|
|
40
40
|
}
|
|
41
|
-
function
|
|
42
|
-
const
|
|
43
|
-
let
|
|
44
|
-
for (let
|
|
45
|
-
|
|
46
|
-
const h = Math.sqrt(
|
|
47
|
-
return function(
|
|
48
|
-
const
|
|
49
|
-
return { x:
|
|
41
|
+
function sn(n, e) {
|
|
42
|
+
const o = g(n, (u) => u.x) / n.length;
|
|
43
|
+
let a = 0, s = 0;
|
|
44
|
+
for (let u = 0; u < n.length; ++u)
|
|
45
|
+
a += Math.pow(n[u].x - o, 2), s += Math.pow(n[u].y - e(n[u].x), 2);
|
|
46
|
+
const h = Math.sqrt(s / (n.length - 2)), f = I(D, n.length - 2);
|
|
47
|
+
return function(u) {
|
|
48
|
+
const i = e(u), r = h * Math.sqrt(1 / n.length + Math.pow(u - o, 2) / a), c = i - f * r, l = i + f * r;
|
|
49
|
+
return { x: u, y: i, left: isNaN(c) ? i : c, right: isNaN(l) ? i : l };
|
|
50
50
|
};
|
|
51
51
|
}
|
|
52
|
-
function
|
|
53
|
-
const
|
|
52
|
+
function un(n) {
|
|
53
|
+
const e = n.length;
|
|
54
54
|
return Math.pow(
|
|
55
|
-
(
|
|
56
|
-
|
|
57
|
-
g(
|
|
55
|
+
(e * g(n, (o) => o.x * o.y) - g(n, (o) => o.x) * g(n, (o) => o.y)) / (Math.sqrt(
|
|
56
|
+
e * g(n, (o) => o.x * o.x) - Math.pow(
|
|
57
|
+
g(n, (o) => o.x),
|
|
58
58
|
2
|
|
59
59
|
)
|
|
60
60
|
) * Math.sqrt(
|
|
61
|
-
|
|
62
|
-
g(
|
|
61
|
+
e * g(n, (o) => o.y * o.y) - Math.pow(
|
|
62
|
+
g(n, (o) => o.y),
|
|
63
63
|
2
|
|
64
64
|
)
|
|
65
65
|
)),
|
|
66
66
|
2
|
|
67
67
|
);
|
|
68
68
|
}
|
|
69
|
-
function
|
|
70
|
-
const
|
|
71
|
-
return w(
|
|
69
|
+
function ln(n, e) {
|
|
70
|
+
const o = w(n, e);
|
|
71
|
+
return w(n.map((a) => (e(a) - o) ** 2));
|
|
72
72
|
}
|
|
73
|
-
function E(
|
|
74
|
-
return Math.sqrt(
|
|
73
|
+
function E(n, e) {
|
|
74
|
+
return Math.sqrt(ln(n, e));
|
|
75
75
|
}
|
|
76
|
-
function
|
|
77
|
-
const
|
|
78
|
-
return g(
|
|
76
|
+
function an(n, e, o) {
|
|
77
|
+
const a = w(n, e), s = w(n, o), h = n.length;
|
|
78
|
+
return g(n, (f) => (f.x - a) * (f.y - s)) / h;
|
|
79
79
|
}
|
|
80
|
-
function
|
|
81
|
-
const
|
|
82
|
-
|
|
83
|
-
(
|
|
84
|
-
(
|
|
85
|
-
),
|
|
86
|
-
return
|
|
80
|
+
function fn(n) {
|
|
81
|
+
const e = an(
|
|
82
|
+
n,
|
|
83
|
+
(s) => s.x,
|
|
84
|
+
(s) => s.y
|
|
85
|
+
), o = E(n, (s) => s.x), a = E(n, (s) => s.y);
|
|
86
|
+
return e / (o * a);
|
|
87
87
|
}
|
|
88
|
-
function
|
|
89
|
-
const
|
|
90
|
-
return 1 -
|
|
88
|
+
function hn(n, e) {
|
|
89
|
+
const o = n.length, a = 1, s = 1, h = o - a - 1, f = w(n, (m) => m.y), u = g(n, (m) => (e(m.x) - f) ** 2), i = g(n, (m) => (e(m.x) - m.y) ** 2), r = u / s, c = i / h, l = r / c;
|
|
90
|
+
return 1 - nn(l, s, h);
|
|
91
91
|
}
|
|
92
|
-
function
|
|
93
|
-
return
|
|
94
|
-
const i =
|
|
95
|
-
return
|
|
96
|
-
const
|
|
97
|
-
(p) =>
|
|
98
|
-
)
|
|
92
|
+
function Mn(n, e, o, a, s, h) {
|
|
93
|
+
return h ? o.reduce((f, u) => {
|
|
94
|
+
const i = e[u].dots;
|
|
95
|
+
return f[u] = a.map((r) => {
|
|
96
|
+
const c = i.filter(
|
|
97
|
+
(p) => s.every((b, q) => String(n.getColumnValue(b.value, p.idx)) === r[q])
|
|
98
|
+
);
|
|
99
|
+
if (c.length === 0) return null;
|
|
100
|
+
const [l = 0, x = 0] = tn(c, (p) => p.x), [m, N] = rn(c), v = (p) => m * p + N, X = sn(c, v);
|
|
99
101
|
return {
|
|
102
|
+
idx: c[0].idx,
|
|
100
103
|
predict: v,
|
|
101
|
-
getInterval:
|
|
102
|
-
getArea: (p, b, q) =>
|
|
103
|
-
color:
|
|
104
|
-
bounded:
|
|
105
|
-
data: e[0].data,
|
|
104
|
+
getInterval: X,
|
|
105
|
+
getArea: (p, b, q) => en().x((y) => p(y.x)).y0((y) => b(y.left)).y1((y) => b(y.right))(q.map(X)) ?? "",
|
|
106
|
+
color: h.color,
|
|
107
|
+
bounded: h.bounded,
|
|
106
108
|
showStats: !0,
|
|
107
|
-
xBounds: [
|
|
109
|
+
xBounds: [l, x],
|
|
108
110
|
stats: {
|
|
109
|
-
r2:
|
|
110
|
-
r:
|
|
111
|
-
pValue:
|
|
112
|
-
coefficients:
|
|
111
|
+
r2: un(c),
|
|
112
|
+
r: fn(c),
|
|
113
|
+
pValue: hn(c, v),
|
|
114
|
+
coefficients: cn(c, m, N)
|
|
113
115
|
}
|
|
114
116
|
};
|
|
115
|
-
}),
|
|
117
|
+
}).filter((r) => r !== null), f;
|
|
116
118
|
}, {}) : null;
|
|
117
119
|
}
|
|
118
120
|
export {
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
121
|
+
sn as confidenceInterval,
|
|
122
|
+
Mn as getRegressionData,
|
|
123
|
+
rn as linearRegression
|
|
122
124
|
};
|
|
123
125
|
//# sourceMappingURL=linearRegression.js.map
|