@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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dots.js","sources":["../../../src/discrete/layers/dots.ts"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"dots.js","sources":["../../../src/discrete/layers/dots.ts"],"sourcesContent":["import { extent } from 'd3-array';\nimport { randomLcg } from 'd3-random';\nimport type { DataFrame, GroupKey } from '../../DataFrame';\nimport type { ColumnName } from '../../types';\nimport type { DiscreteSettingsImpl, DotLayer } from '../DiscreteSettingsImpl';\nimport { getOutliersBounds } from '../utils';\nimport { getFacetStringKey } from '../utils/getFacetStringKey';\nimport type { DotsData } from './types';\n\nexport type DotsGroup = {\n key: string;\n values: {y: number; jitter: number; id: string;}[];\n primaryGrouping: string;\n secondaryGrouping: string;\n boundsY: {\n min: number;\n max: number;\n };\n};\n\nexport function getDotsData(\n layer: DotLayer,\n groupingKeys: {\n facet: GroupKey[][],\n primary: GroupKey[],\n secondary: GroupKey[]\n },\n data: DataFrame,\n y: ColumnName,\n yAxis: DiscreteSettingsImpl['chartSettings']['yAxis'],\n keyColumn: ColumnName | null\n): DotsData {\n let minY = Infinity;\n let maxY = -Infinity;\n const getJitter = randomLcg(1);\n\n return {\n type: 'dot',\n geoms: groupingKeys.facet.reduce((res: Record<string, DotsGroup[]>, facetKey) => {\n const strFacetKey = getFacetStringKey(facetKey);\n res[strFacetKey] = [];\n groupingKeys.primary.forEach(primaryKey => {\n groupingKeys.secondary.forEach(secondaryKey => {\n const indexes = data.getRowsByGrouping([...facetKey, primaryKey, secondaryKey]);\n if (!indexes.length) {\n return;\n }\n const yGetter = (idx: number) => Number(data.getColumnValue(y.value, idx));\n const values = Array.from(indexes).map(yGetter);\n let valuesFiltered = values.map((y, idx) => ({\n y,\n id: keyColumn ? String(data.getColumnValue(keyColumn.value, idx)) : String(idx),\n jitter: getJitter(),\n }));\n if (!layer.aes.showOutliers) {\n const [boundsMin, boundMax] = getOutliersBounds(values, yAxis.scale);\n valuesFiltered = valuesFiltered.filter(({ y }) => {\n return y >= boundsMin && y <= boundMax;\n });\n }\n const [min = Infinity, max = -Infinity] = extent(valuesFiltered, (v) => v.y);\n if (min < minY) {\n minY = min;\n }\n if (max > maxY) {\n maxY = max;\n }\n res[strFacetKey].push({\n key: `dots_${String(primaryKey)}_${String(secondaryKey)}`,\n values: valuesFiltered,\n primaryGrouping: String(primaryKey),\n secondaryGrouping: String(secondaryKey),\n boundsY: {min, max},\n });\n });\n });\n return res;\n }, {}),\n meta: {minY, maxY},\n aes: layer.aes,\n };\n}\n"],"names":["getDotsData","layer","groupingKeys","data","y","yAxis","keyColumn","minY","maxY","getJitter","randomLcg","res","facetKey","strFacetKey","getFacetStringKey","primaryKey","secondaryKey","indexes","yGetter","idx","values","valuesFiltered","boundsMin","boundMax","getOutliersBounds","min","max","extent","v"],"mappings":";;;;;AAoBO,SAASA,EACZC,GACAC,GAKAC,GACAC,GACAC,GACAC,GACQ;AACR,MAAIC,IAAO,OACPC,IAAO;AACX,QAAMC,IAAYC,EAAU,CAAC;AAE7B,SAAO;AAAA,IACH,MAAM;AAAA,IACN,OAAOR,EAAa,MAAM,OAAO,CAACS,GAAkCC,MAAa;AAC7E,YAAMC,IAAcC,EAAkBF,CAAQ;AAC9C,aAAAD,EAAIE,CAAW,IAAI,CAAA,GACnBX,EAAa,QAAQ,QAAQ,CAAAa,MAAc;AACvC,QAAAb,EAAa,UAAU,QAAQ,CAAAc,MAAgB;AAC3C,gBAAMC,IAAUd,EAAK,kBAAkB,CAAC,GAAGS,GAAUG,GAAYC,CAAY,CAAC;AAC9E,cAAI,CAACC,EAAQ;AACT;AAEJ,gBAAMC,IAAU,CAACC,MAAgB,OAAOhB,EAAK,eAAeC,EAAE,OAAOe,CAAG,CAAC,GACnEC,IAAS,MAAM,KAAKH,CAAO,EAAE,IAAIC,CAAO;AAC9C,cAAIG,IAAiBD,EAAO,IAAI,CAAChB,GAAGe,OAAS;AAAA,YACzC,GAAAf;AAAAA,YACA,IAAgB,OAAZE,IAAmBH,EAAK,eAAeG,EAAU,OAAOa,CAAG,IAAYA,CAAX;AAAA,YAChE,QAAQV,EAAA;AAAA,UAAU,EACpB;AACF,cAAI,CAACR,EAAM,IAAI,cAAc;AACzB,kBAAM,CAACqB,GAAWC,CAAQ,IAAIC,EAAkBJ,GAAQf,EAAM,KAAK;AACnE,YAAAgB,IAAiBA,EAAe,OAAO,CAAC,EAAE,GAAAjB,QAC/BA,KAAKkB,KAAalB,KAAKmB,CACjC;AAAA,UACL;AACA,gBAAM,CAACE,IAAM,OAAUC,IAAM,MAAS,IAAIC,EAAON,GAAgB,CAACO,MAAMA,EAAE,CAAC;AAC3E,UAAIH,IAAMlB,MACNA,IAAOkB,IAEPC,IAAMlB,MACNA,IAAOkB,IAEXf,EAAIE,CAAW,EAAE,KAAK;AAAA,YAClB,KAAK,QAAQ,OAAOE,CAAU,CAAC,IAAI,OAAOC,CAAY,CAAC;AAAA,YACvD,QAAQK;AAAA,YACR,iBAAiB,OAAON,CAAU;AAAA,YAClC,mBAAmB,OAAOC,CAAY;AAAA,YACtC,SAAS,EAAC,KAAAS,GAAK,KAAAC,EAAA;AAAA,UAAG,CACrB;AAAA,QACL,CAAC;AAAA,MACL,CAAC,GACMf;AAAA,IACX,GAAG,CAAA,CAAE;AAAA,IACL,MAAM,EAAC,MAAAJ,GAAM,MAAAC,EAAA;AAAA,IACb,KAAKP,EAAM;AAAA,EAAA;AAEnB;"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { getOutliersBounds as w } from "../utils/getOutliersBounds.js";
|
|
2
|
+
import "../../utils/TextMeasurer/TextMeasurer.js";
|
|
2
3
|
import { getFacetStringKey as F } from "../utils/getFacetStringKey.js";
|
|
3
4
|
import { exhaustive as M } from "../../utils/index.js";
|
|
4
5
|
import v from "../../node_modules/d3-array/src/quantile.js";
|
|
@@ -10,15 +11,15 @@ function O(i, n) {
|
|
|
10
11
|
return B(i);
|
|
11
12
|
M(n, `Unknown line points calculation for dot layer: ${n}`);
|
|
12
13
|
}
|
|
13
|
-
function
|
|
14
|
+
function q(i, n, d, g, r) {
|
|
14
15
|
let l = 1 / 0, a = -1 / 0;
|
|
15
16
|
return {
|
|
16
17
|
type: "line",
|
|
17
|
-
geoms: n.facet.reduce((u,
|
|
18
|
-
const h = F(
|
|
18
|
+
geoms: n.facet.reduce((u, m) => {
|
|
19
|
+
const h = F(m);
|
|
19
20
|
u[h] = [];
|
|
20
21
|
let p = -1 / 0, b = 1 / 0;
|
|
21
|
-
return i.aes.showOutliers || ([p, b] = w(d.getColumnByGrouping([...
|
|
22
|
+
return i.aes.showOutliers || ([p, b] = w(d.getColumnByGrouping([...m], g.value), r.scale)), n.secondary.forEach((Y) => {
|
|
22
23
|
const o = {
|
|
23
24
|
key: `${String(Y)}`,
|
|
24
25
|
boundsY: {
|
|
@@ -27,22 +28,22 @@ function $(i, n, d, g, r) {
|
|
|
27
28
|
},
|
|
28
29
|
dots: {}
|
|
29
30
|
};
|
|
30
|
-
let
|
|
31
|
+
let f = !1;
|
|
31
32
|
const x = (e) => r.scale === "log" ? Math.log10(e) : e, S = (e) => r.scale === "log" ? Math.pow(10, e) : e;
|
|
32
33
|
n.primary.forEach((e) => {
|
|
33
|
-
const s = d.getColumnByGrouping([...
|
|
34
|
+
const s = d.getColumnByGrouping([...m, e, Y], g.value);
|
|
34
35
|
if (!s.length) {
|
|
35
|
-
|
|
36
|
+
f = !0;
|
|
36
37
|
return;
|
|
37
38
|
}
|
|
38
39
|
let c = s;
|
|
39
40
|
if (i.aes.showOutliers || (c = s.filter((I) => I >= p && I <= b)), !c.length) {
|
|
40
|
-
|
|
41
|
+
f = !0;
|
|
41
42
|
return;
|
|
42
43
|
}
|
|
43
44
|
const t = S(O(c.map(x), i.pointsValues));
|
|
44
45
|
o.dots[String(e)] = t, t < l && (l = t), t > a && (a = t), t < o.boundsY.min && (o.boundsY.min = t), t > o.boundsY.max && (o.boundsY.max = t);
|
|
45
|
-
}),
|
|
46
|
+
}), f || u[h].push(o);
|
|
46
47
|
}), u;
|
|
47
48
|
}, {}),
|
|
48
49
|
meta: { minY: l, maxY: a },
|
|
@@ -50,6 +51,6 @@ function $(i, n, d, g, r) {
|
|
|
50
51
|
};
|
|
51
52
|
}
|
|
52
53
|
export {
|
|
53
|
-
|
|
54
|
+
q as getLinesData
|
|
54
55
|
};
|
|
55
56
|
//# sourceMappingURL=lines.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lines.js","sources":["../../../src/discrete/layers/lines.ts"],"sourcesContent":["import type {GroupKey} from '../../DataFrame';\nimport type {DataFrame} from '../../DataFrame';\nimport type {DiscreteSettingsImpl, LineLayer} from '../DiscreteSettingsImpl';\nimport type {LinesData} from './types';\nimport {getOutliersBounds} from '../utils';\nimport {getFacetStringKey} from '../utils/getFacetStringKey';\nimport {exhaustive} from '../../utils';\nimport {mean, quantile} from 'd3-array';\n\nexport interface Line {\n dots: Record<string, number>;\n boundsY: {\n min: number;\n max: number;\n };\n key: string;\n}\n\nfunction calculateDot(values: number[], pointsValues: LineLayer['pointsValues']): number {\n if (pointsValues === 'median') {\n return quantile(values, 0.5) as number;\n }\n if (pointsValues === 'mean') {\n return mean(values) as number;\n }\n exhaustive(pointsValues, `Unknown line points calculation for dot layer: ${pointsValues}`);\n}\n\nexport function getLinesData(\n layer: LineLayer,\n groupingKeys: {\n facet: GroupKey[][],\n primary: GroupKey[],\n secondary: GroupKey[]\n },\n data: DataFrame,\n y: DiscreteSettingsImpl['y'],\n yAxis: DiscreteSettingsImpl['chartSettings']['yAxis']\n): LinesData {\n let minY = Infinity;\n let maxY = -Infinity;\n\n return {\n type: 'line',\n geoms: groupingKeys.facet.reduce((res: Record<string, Line[]>, facetKey) => {\n const strFacetKey = getFacetStringKey(facetKey);\n res[strFacetKey] = [];\n let boundMin = -Infinity;\n let boundMax = Infinity;\n if (!layer.aes.showOutliers) {\n [boundMin, boundMax] = getOutliersBounds(data.getColumnByGrouping([...facetKey], y.value), yAxis.scale);\n }\n\n groupingKeys.secondary.forEach(secondaryKey => {\n const line: Line = {\n key: `${String(secondaryKey)}`,\n boundsY: {\n min: Infinity,\n max: -Infinity,\n },\n dots: {},\n };\n // if point data by primary/secondary key missed in source data or filtered as outliers, remove whole line\n let missedPoint = false;\n const convertToScale = (v: number) => (yAxis.scale === 'log' ? Math.log10(v) : v);\n const convertFromScale = (v: number) => (yAxis.scale === 'log' ? Math.pow(10, v) : v);\n\n groupingKeys.primary.forEach(primaryKey => {\n const values = data.getColumnByGrouping([...facetKey, primaryKey, secondaryKey], y.value);\n if (!values.length) {\n missedPoint = true;\n return;\n }\n let valuesFiltered = values;\n if (!layer.aes.showOutliers) {\n valuesFiltered = values.filter((v) => v >= boundMin && v <= boundMax);\n }\n if (!valuesFiltered.length) {\n missedPoint = true;\n return;\n }\n\n const dot = convertFromScale(calculateDot(valuesFiltered.map(convertToScale), layer.pointsValues));\n line.dots[String(primaryKey)] = dot;\n if (dot < minY) {\n minY = dot;\n }\n if (dot > maxY) {\n maxY = dot;\n }\n if (dot < line.boundsY.min) {\n line.boundsY.min = dot;\n }\n if (dot > line.boundsY.max) {\n line.boundsY.max = dot;\n }\n });\n if (!missedPoint) {\n res[strFacetKey].push(line);\n }\n });\n return res;\n }, {}),\n meta: {minY, maxY},\n aes: layer.aes\n };\n}\n"],"names":["calculateDot","values","pointsValues","quantile","mean","exhaustive","getLinesData","layer","groupingKeys","data","y","yAxis","minY","maxY","res","facetKey","strFacetKey","getFacetStringKey","boundMin","boundMax","getOutliersBounds","secondaryKey","line","missedPoint","convertToScale","v","convertFromScale","primaryKey","valuesFiltered","dot"],"mappings":"
|
|
1
|
+
{"version":3,"file":"lines.js","sources":["../../../src/discrete/layers/lines.ts"],"sourcesContent":["import type {GroupKey} from '../../DataFrame';\nimport type {DataFrame} from '../../DataFrame';\nimport type {DiscreteSettingsImpl, LineLayer} from '../DiscreteSettingsImpl';\nimport type {LinesData} from './types';\nimport {getOutliersBounds} from '../utils';\nimport {getFacetStringKey} from '../utils/getFacetStringKey';\nimport {exhaustive} from '../../utils';\nimport {mean, quantile} from 'd3-array';\n\nexport interface Line {\n dots: Record<string, number>;\n boundsY: {\n min: number;\n max: number;\n };\n key: string;\n}\n\nfunction calculateDot(values: number[], pointsValues: LineLayer['pointsValues']): number {\n if (pointsValues === 'median') {\n return quantile(values, 0.5) as number;\n }\n if (pointsValues === 'mean') {\n return mean(values) as number;\n }\n exhaustive(pointsValues, `Unknown line points calculation for dot layer: ${pointsValues}`);\n}\n\nexport function getLinesData(\n layer: LineLayer,\n groupingKeys: {\n facet: GroupKey[][],\n primary: GroupKey[],\n secondary: GroupKey[]\n },\n data: DataFrame,\n y: DiscreteSettingsImpl['y'],\n yAxis: DiscreteSettingsImpl['chartSettings']['yAxis']\n): LinesData {\n let minY = Infinity;\n let maxY = -Infinity;\n\n return {\n type: 'line',\n geoms: groupingKeys.facet.reduce((res: Record<string, Line[]>, facetKey) => {\n const strFacetKey = getFacetStringKey(facetKey);\n res[strFacetKey] = [];\n let boundMin = -Infinity;\n let boundMax = Infinity;\n if (!layer.aes.showOutliers) {\n [boundMin, boundMax] = getOutliersBounds(data.getColumnByGrouping([...facetKey], y.value), yAxis.scale);\n }\n\n groupingKeys.secondary.forEach(secondaryKey => {\n const line: Line = {\n key: `${String(secondaryKey)}`,\n boundsY: {\n min: Infinity,\n max: -Infinity,\n },\n dots: {},\n };\n // if point data by primary/secondary key missed in source data or filtered as outliers, remove whole line\n let missedPoint = false;\n const convertToScale = (v: number) => (yAxis.scale === 'log' ? Math.log10(v) : v);\n const convertFromScale = (v: number) => (yAxis.scale === 'log' ? Math.pow(10, v) : v);\n\n groupingKeys.primary.forEach(primaryKey => {\n const values = data.getColumnByGrouping([...facetKey, primaryKey, secondaryKey], y.value);\n if (!values.length) {\n missedPoint = true;\n return;\n }\n let valuesFiltered = values;\n if (!layer.aes.showOutliers) {\n valuesFiltered = values.filter((v) => v >= boundMin && v <= boundMax);\n }\n if (!valuesFiltered.length) {\n missedPoint = true;\n return;\n }\n\n const dot = convertFromScale(calculateDot(valuesFiltered.map(convertToScale), layer.pointsValues));\n line.dots[String(primaryKey)] = dot;\n if (dot < minY) {\n minY = dot;\n }\n if (dot > maxY) {\n maxY = dot;\n }\n if (dot < line.boundsY.min) {\n line.boundsY.min = dot;\n }\n if (dot > line.boundsY.max) {\n line.boundsY.max = dot;\n }\n });\n if (!missedPoint) {\n res[strFacetKey].push(line);\n }\n });\n return res;\n }, {}),\n meta: {minY, maxY},\n aes: layer.aes\n };\n}\n"],"names":["calculateDot","values","pointsValues","quantile","mean","exhaustive","getLinesData","layer","groupingKeys","data","y","yAxis","minY","maxY","res","facetKey","strFacetKey","getFacetStringKey","boundMin","boundMax","getOutliersBounds","secondaryKey","line","missedPoint","convertToScale","v","convertFromScale","primaryKey","valuesFiltered","dot"],"mappings":";;;;;;AAkBA,SAASA,EAAaC,GAAkBC,GAAiD;AACrF,MAAIA,MAAiB;AACjB,WAAOC,EAASF,GAAQ,GAAG;AAE/B,MAAIC,MAAiB;AACjB,WAAOE,EAAKH,CAAM;AAEtB,EAAAI,EAAWH,GAAc,kDAAkDA,CAAY,EAAE;AAC7F;AAEO,SAASI,EACZC,GACAC,GAKAC,GACAC,GACAC,GACS;AACT,MAAIC,IAAO,OACPC,IAAO;AAEX,SAAO;AAAA,IACH,MAAM;AAAA,IACN,OAAOL,EAAa,MAAM,OAAO,CAACM,GAA6BC,MAAa;AACxE,YAAMC,IAAcC,EAAkBF,CAAQ;AAC9C,MAAAD,EAAIE,CAAW,IAAI,CAAA;AACnB,UAAIE,IAAW,QACXC,IAAW;AACf,aAAKZ,EAAM,IAAI,iBACX,CAACW,GAAUC,CAAQ,IAAIC,EAAkBX,EAAK,oBAAoB,CAAC,GAAGM,CAAQ,GAAGL,EAAE,KAAK,GAAGC,EAAM,KAAK,IAG1GH,EAAa,UAAU,QAAQ,CAAAa,MAAgB;AAC3C,cAAMC,IAAa;AAAA,UACf,KAAK,GAAG,OAAOD,CAAY,CAAC;AAAA,UAC5B,SAAS;AAAA,YACL,KAAK;AAAA,YACL,KAAK;AAAA,UAAA;AAAA,UAET,MAAM,CAAA;AAAA,QAAC;AAGX,YAAIE,IAAc;AAClB,cAAMC,IAAiB,CAACC,MAAed,EAAM,UAAU,QAAQ,KAAK,MAAMc,CAAC,IAAIA,GACzEC,IAAmB,CAACD,MAAed,EAAM,UAAU,QAAQ,KAAK,IAAI,IAAIc,CAAC,IAAIA;AAEnF,QAAAjB,EAAa,QAAQ,QAAQ,CAAAmB,MAAc;AACvC,gBAAM1B,IAASQ,EAAK,oBAAoB,CAAC,GAAGM,GAAUY,GAAYN,CAAY,GAAGX,EAAE,KAAK;AACxF,cAAI,CAACT,EAAO,QAAQ;AAChB,YAAAsB,IAAc;AACd;AAAA,UACJ;AACA,cAAIK,IAAiB3B;AAIrB,cAHKM,EAAM,IAAI,iBACXqB,IAAiB3B,EAAO,OAAO,CAACwB,MAAMA,KAAKP,KAAYO,KAAKN,CAAQ,IAEpE,CAACS,EAAe,QAAQ;AACxB,YAAAL,IAAc;AACd;AAAA,UACJ;AAEA,gBAAMM,IAAMH,EAAiB1B,EAAa4B,EAAe,IAAIJ,CAAc,GAAGjB,EAAM,YAAY,CAAC;AACjG,UAAAe,EAAK,KAAK,OAAOK,CAAU,CAAC,IAAIE,GAC5BA,IAAMjB,MACNA,IAAOiB,IAEPA,IAAMhB,MACNA,IAAOgB,IAEPA,IAAMP,EAAK,QAAQ,QACnBA,EAAK,QAAQ,MAAMO,IAEnBA,IAAMP,EAAK,QAAQ,QACnBA,EAAK,QAAQ,MAAMO;AAAA,QAE3B,CAAC,GACIN,KACDT,EAAIE,CAAW,EAAE,KAAKM,CAAI;AAAA,MAElC,CAAC,GACMR;AAAA,IACX,GAAG,CAAA,CAAE;AAAA,IACL,MAAM,EAAC,MAAAF,GAAM,MAAAC,EAAA;AAAA,IACb,KAAKN,EAAM;AAAA,EAAA;AAEnB;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { DataFrame, GroupKey } from '../../DataFrame';
|
|
2
|
+
import { ColumnName } from '../../types';
|
|
2
3
|
import { LogoPlotLayer } from '../DiscreteSettingsImpl';
|
|
3
4
|
import { LogoPlotData } from './types';
|
|
4
|
-
import { ColumnName } from '../../types';
|
|
5
5
|
type LetterPart = {
|
|
6
6
|
height: number;
|
|
7
7
|
key: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logo.d.ts","sourceRoot":"","sources":["../../../src/discrete/layers/logo.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"logo.d.ts","sourceRoot":"","sources":["../../../src/discrete/layers/logo.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C,KAAK,UAAU,GAAG;IACd,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAA;CACd,CAAA;AAED,MAAM,MAAM,SAAS,GAAG;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACtC,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE;QACL,GAAG,EAAE,MAAM,CAAC;QACZ,GAAG,EAAE,MAAM,CAAC;KACf,CAAC;CACL,CAAC;AAEF,wBAAgB,WAAW,CACvB,KAAK,EAAE,aAAa,EACpB,YAAY,EAAE;IACV,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC;IACpB,OAAO,EAAE,QAAQ,EAAE,CAAC;IACpB,SAAS,EAAE,QAAQ,EAAE,CAAA;CACxB,EACD,IAAI,EAAE,SAAS,EACf,CAAC,EAAE,UAAU,GACd,YAAY,CA8Cd"}
|
|
@@ -1,40 +1,40 @@
|
|
|
1
|
-
import { getFacetStringKey as
|
|
2
|
-
import
|
|
3
|
-
function
|
|
4
|
-
let
|
|
1
|
+
import { getFacetStringKey as p } from "../utils/getFacetStringKey.js";
|
|
2
|
+
import z from "../../node_modules/d3-array/src/sum.js";
|
|
3
|
+
function v(n, o, g, s) {
|
|
4
|
+
let e = -1 / 0;
|
|
5
5
|
return {
|
|
6
6
|
type: "logo",
|
|
7
|
-
geoms:
|
|
8
|
-
const h =
|
|
9
|
-
return
|
|
10
|
-
let
|
|
7
|
+
geoms: o.facet.reduce((i, u) => {
|
|
8
|
+
const h = p(u);
|
|
9
|
+
return i[h] = [], o.primary.forEach((m) => {
|
|
10
|
+
let a = 0;
|
|
11
11
|
const r = {};
|
|
12
|
-
|
|
13
|
-
const
|
|
14
|
-
if (!
|
|
12
|
+
o.secondary.forEach((t) => {
|
|
13
|
+
const l = g.getRowsByGrouping([...u, m, t]);
|
|
14
|
+
if (!l.length)
|
|
15
15
|
return;
|
|
16
|
-
const
|
|
16
|
+
const S = Array.from(l).map((x) => Number(g.getColumnValue(s.value, x))), f = z(S);
|
|
17
17
|
r[String(t)] = {
|
|
18
18
|
height: f,
|
|
19
19
|
key: String(t)
|
|
20
|
-
},
|
|
20
|
+
}, a += f;
|
|
21
21
|
});
|
|
22
|
-
const c =
|
|
23
|
-
n.normalize &&
|
|
22
|
+
const c = a;
|
|
23
|
+
n.normalize && o.secondary.forEach((t) => {
|
|
24
24
|
r[String(t)] && (r[String(t)].height = r[String(t)].height / c * 100);
|
|
25
|
-
}),
|
|
26
|
-
key: `logo_${String(
|
|
25
|
+
}), e = Math.max(e, a), i[h].push({
|
|
26
|
+
key: `logo_${String(m)}`,
|
|
27
27
|
valuesMap: r,
|
|
28
|
-
primaryGrouping:
|
|
28
|
+
primaryGrouping: m,
|
|
29
29
|
boundsY: { min: 0, max: n.normalize ? c : 100 }
|
|
30
30
|
});
|
|
31
|
-
}),
|
|
31
|
+
}), i;
|
|
32
32
|
}, {}),
|
|
33
|
-
meta: { minY: 0, maxY: n.normalize ? 100 :
|
|
33
|
+
meta: { minY: 0, maxY: n.normalize ? 100 : e, normalize: n.normalize },
|
|
34
34
|
aes: n.aes
|
|
35
35
|
};
|
|
36
36
|
}
|
|
37
37
|
export {
|
|
38
|
-
|
|
38
|
+
v as getLogoData
|
|
39
39
|
};
|
|
40
40
|
//# sourceMappingURL=logo.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logo.js","sources":["../../../src/discrete/layers/logo.ts"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"logo.js","sources":["../../../src/discrete/layers/logo.ts"],"sourcesContent":["import { sum } from 'd3-array';\nimport type { DataFrame, GroupKey } from '../../DataFrame';\nimport type { ColumnName } from '../../types';\nimport type { LogoPlotLayer } from '../DiscreteSettingsImpl';\nimport { getFacetStringKey } from '../utils/getFacetStringKey';\nimport type { LogoPlotData } from './types';\n\ntype LetterPart = {\n height: number,\n key: string\n}\n\nexport type LogoStack = {\n key: string;\n valuesMap: Record<string, LetterPart>;\n primaryGrouping: string;\n boundsY: {\n min: number;\n max: number;\n };\n};\n\nexport function getLogoData(\n layer: LogoPlotLayer,\n groupingKeys: {\n facet: GroupKey[][],\n primary: GroupKey[],\n secondary: GroupKey[]\n },\n data: DataFrame,\n y: ColumnName,\n): LogoPlotData {\n let maxY = -Infinity;\n\n return {\n type: 'logo',\n geoms: groupingKeys.facet.reduce((res: Record<string, LogoStack[]>, facetKey) => {\n const strFacetKey = getFacetStringKey(facetKey);\n res[strFacetKey] = [];\n groupingKeys.primary.forEach(primaryKey => {\n let currentHeight = 0;\n const letterParts:Record<string, LetterPart> = {};\n groupingKeys.secondary.forEach(secondaryKey => {\n const indexes = data.getRowsByGrouping([...facetKey, primaryKey, secondaryKey]);\n if (!indexes.length) {\n return;\n }\n const values = Array.from(indexes).map(i => Number(data.getColumnValue(y.value, i)));\n const height = sum(values);\n letterParts[String(secondaryKey)] = {\n height,\n key: String(secondaryKey),\n };\n currentHeight += height;\n });\n const maxStackHeight = currentHeight;\n if (layer.normalize) { // show in percents of every stack\n groupingKeys.secondary.forEach(secondaryKey => {\n if (!letterParts[String(secondaryKey)]) {\n return;\n }\n letterParts[String(secondaryKey)].height = letterParts[String(secondaryKey)].height / maxStackHeight * 100;\n });\n }\n maxY = Math.max(maxY, currentHeight);\n res[strFacetKey].push({\n key: `logo_${String(primaryKey)}`,\n valuesMap: letterParts,\n primaryGrouping: primaryKey,\n boundsY: {min: 0, max: layer.normalize ? maxStackHeight : 100},\n } as LogoStack);\n });\n return res;\n }, {}),\n meta: {minY: 0, maxY: layer.normalize ? 100 : maxY, normalize: layer.normalize},\n aes: layer.aes,\n };\n}\n"],"names":["getLogoData","layer","groupingKeys","data","y","maxY","res","facetKey","strFacetKey","getFacetStringKey","primaryKey","currentHeight","letterParts","secondaryKey","indexes","values","i","height","sum","maxStackHeight"],"mappings":";;AAsBO,SAASA,EACZC,GACAC,GAKAC,GACAC,GACY;AACZ,MAAIC,IAAO;AAEX,SAAO;AAAA,IACH,MAAM;AAAA,IACN,OAAOH,EAAa,MAAM,OAAO,CAACI,GAAkCC,MAAa;AAC7E,YAAMC,IAAcC,EAAkBF,CAAQ;AAC9C,aAAAD,EAAIE,CAAW,IAAI,CAAA,GACnBN,EAAa,QAAQ,QAAQ,CAAAQ,MAAc;AACvC,YAAIC,IAAgB;AACpB,cAAMC,IAAyC,CAAA;AAC/C,QAAAV,EAAa,UAAU,QAAQ,CAAAW,MAAgB;AAC3C,gBAAMC,IAAUX,EAAK,kBAAkB,CAAC,GAAGI,GAAUG,GAAYG,CAAY,CAAC;AAC9E,cAAI,CAACC,EAAQ;AACT;AAEJ,gBAAMC,IAAS,MAAM,KAAKD,CAAO,EAAE,IAAI,CAAAE,MAAK,OAAOb,EAAK,eAAeC,EAAE,OAAOY,CAAC,CAAC,CAAC,GAC7EC,IAASC,EAAIH,CAAM;AACzB,UAAAH,EAAY,OAAOC,CAAY,CAAC,IAAI;AAAA,YAChC,QAAAI;AAAA,YACA,KAAK,OAAOJ,CAAY;AAAA,UAAA,GAE5BF,KAAiBM;AAAA,QACrB,CAAC;AACD,cAAME,IAAiBR;AACvB,QAAIV,EAAM,aACNC,EAAa,UAAU,QAAQ,CAAAW,MAAgB;AAC3C,UAAKD,EAAY,OAAOC,CAAY,CAAC,MAGrCD,EAAY,OAAOC,CAAY,CAAC,EAAE,SAASD,EAAY,OAAOC,CAAY,CAAC,EAAE,SAAUM,IAAiB;AAAA,QAC5G,CAAC,GAELd,IAAO,KAAK,IAAIA,GAAMM,CAAa,GACnCL,EAAIE,CAAW,EAAE,KAAK;AAAA,UAClB,KAAK,QAAQ,OAAOE,CAAU,CAAC;AAAA,UAC/B,WAAWE;AAAA,UACX,iBAAiBF;AAAA,UACjB,SAAS,EAAC,KAAK,GAAG,KAAKT,EAAM,YAAYkB,IAAiB,IAAA;AAAA,QAAG,CACnD;AAAA,MAClB,CAAC,GACMb;AAAA,IACX,GAAG,CAAA,CAAE;AAAA,IACL,MAAM,EAAC,MAAM,GAAG,MAAML,EAAM,YAAY,MAAMI,GAAM,WAAWJ,EAAM,UAAA;AAAA,IACrE,KAAKA,EAAM;AAAA,EAAA;AAEnB;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { DataFrame, GroupKey } from '../../DataFrame';
|
|
2
|
+
import { ColumnName, Row } from '../../types';
|
|
2
3
|
import { DiscreteSettingsImpl, PairedPointsLayer } from '../DiscreteSettingsImpl';
|
|
3
4
|
import { PairedPointsData } from './types';
|
|
4
|
-
import { ColumnName, Row } from '../../types';
|
|
5
5
|
type Point = {
|
|
6
6
|
id: string;
|
|
7
7
|
value: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pairedPoints.d.ts","sourceRoot":"","sources":["../../../src/discrete/layers/pairedPoints.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pairedPoints.d.ts","sourceRoot":"","sources":["../../../src/discrete/layers/pairedPoints.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAa,GAAG,EAAE,MAAM,aAAa,CAAC;AAC9D,OAAO,KAAK,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAGvF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEhD,KAAK,KAAK,GAAG;IACT,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,GAAG,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,SAAS,GAAG,WAAW,CAAC;IAClC,KAAK,EAAE;QAAC,IAAI,EAAE,KAAK,CAAC;QAAC,IAAI,EAAE,KAAK,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAC,EAAE,CAAC;IAChD,OAAO,EAAE;QACL,GAAG,EAAE,MAAM,CAAC;QACZ,GAAG,EAAE,MAAM,CAAC;KACf,CAAC;CACL,CAAC;AAyFF,wBAAgB,mBAAmB,CAC/B,KAAK,EAAE,iBAAiB,EACxB,YAAY,EAAE;IACV,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC;IACpB,OAAO,EAAE,QAAQ,EAAE,CAAC;IACpB,SAAS,EAAE,QAAQ,EAAE,CAAA;CACxB,EACD,IAAI,EAAE,SAAS,EACf,CAAC,EAAE,UAAU,EACb,KAAK,EAAE,oBAAoB,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,GACtD,gBAAgB,CA6DlB"}
|
|
@@ -1,89 +1,89 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import { l as M } from "../../node_modules/lodash/lodash.js";
|
|
2
|
+
import { getOutliersBounds as $ } from "../utils/getOutliersBounds.js";
|
|
3
|
+
import "../../utils/TextMeasurer/TextMeasurer.js";
|
|
4
|
+
import { getFacetStringKey as k } from "../utils/getFacetStringKey.js";
|
|
5
|
+
function w(u, o) {
|
|
6
|
+
if (o.length === 2)
|
|
6
7
|
return "secondary";
|
|
7
|
-
if (
|
|
8
|
+
if (u.length === 2 && o.length < 2)
|
|
8
9
|
return "primary";
|
|
9
10
|
throw Error("Too many groups for paired points layer");
|
|
10
11
|
}
|
|
11
|
-
function G(
|
|
12
|
-
const
|
|
13
|
-
if (
|
|
14
|
-
throw Error(`Non unique keys in groups ${String(
|
|
15
|
-
if (
|
|
16
|
-
throw Error(`Keys in groups ${String(
|
|
17
|
-
const
|
|
18
|
-
let t = 1 / 0,
|
|
19
|
-
const
|
|
20
|
-
let
|
|
21
|
-
const
|
|
22
|
-
return (
|
|
12
|
+
function G(u, o, g, b, S, I, m) {
|
|
13
|
+
const p = M.groupBy(g, (n) => n.link), c = M.groupBy(b, (n) => n.link), r = Object.keys(p), a = Object.keys(c);
|
|
14
|
+
if (M.uniq(r).length !== r.length || M.uniq(a).length !== a.length)
|
|
15
|
+
throw Error(`Non unique keys in groups ${String(u)}, ${String(o)} for paired points layer`);
|
|
16
|
+
if (r.length !== a.length || M.intersection(r, a).length !== r.length)
|
|
17
|
+
throw Error(`Keys in groups ${String(u)}, ${String(o)} not match for paired points layer`);
|
|
18
|
+
const f = (n) => n.y;
|
|
19
|
+
let t = 1 / 0, e = -1 / 0, d = !1;
|
|
20
|
+
const s = m === "log";
|
|
21
|
+
let v = r.map((n) => {
|
|
22
|
+
const l = p[n][0], h = c[n][0], y = f(l), i = f(h);
|
|
23
|
+
return (y === 0 || i === 0) && (d = !0), t = Math.min(t, s && y === 0 ? 1 / 0 : y, s && i === 0 ? 1 / 0 : i), e = Math.max(e, s && y === 0 ? -1 / 0 : y, s && i === 0 ? -1 / 0 : i), {
|
|
23
24
|
id: n,
|
|
24
|
-
key1: { id: `${n}_${String(
|
|
25
|
-
key2: { id: `${n}_${String(
|
|
25
|
+
key1: { id: `${n}_${String(u)}`, value: y, data: l },
|
|
26
|
+
key2: { id: `${n}_${String(o)}`, value: i, data: h }
|
|
26
27
|
};
|
|
27
28
|
});
|
|
28
|
-
if (!
|
|
29
|
-
t = 1 / 0,
|
|
30
|
-
const [n,
|
|
31
|
-
|
|
29
|
+
if (!I) {
|
|
30
|
+
t = 1 / 0, e = -1 / 0;
|
|
31
|
+
const [n, l] = $(g.map(f), m), [h, y] = $(b.map(f), m);
|
|
32
|
+
v = v.filter(({ key1: i, key2: x }) => i.value < n || i.value > l || x.value < h || x.value > y ? !1 : (t = Math.min(t, s && i.value === 0 ? 1 / 0 : i.value, s && x.value === 0 ? 1 / 0 : x.value), e = Math.max(e, s && i.value === 0 ? -1 / 0 : i.value, s && x.value === 0 ? -1 / 0 : x.value), !0));
|
|
32
33
|
}
|
|
33
|
-
return t =
|
|
34
|
-
id: `${String(
|
|
35
|
-
key1: String(
|
|
36
|
-
key2: String(
|
|
37
|
-
pairs:
|
|
34
|
+
return t = d ? t / 10 : t, e = Math.max(e, t), {
|
|
35
|
+
id: `${String(u)}_${String(o)}`,
|
|
36
|
+
key1: String(u),
|
|
37
|
+
key2: String(o),
|
|
38
|
+
pairs: v.map((n) => ({
|
|
38
39
|
...n,
|
|
39
40
|
key1: { ...n.key1, value: n.key1.value === 0 ? t : n.key1.value },
|
|
40
41
|
key2: { ...n.key2, value: n.key2.value === 0 ? t : n.key2.value }
|
|
41
42
|
})),
|
|
42
|
-
grouping:
|
|
43
|
-
boundsY: { min: t, max:
|
|
43
|
+
grouping: S,
|
|
44
|
+
boundsY: { min: t, max: e }
|
|
44
45
|
};
|
|
45
46
|
}
|
|
46
|
-
function
|
|
47
|
-
const
|
|
48
|
-
|
|
47
|
+
function R(u, o, g, b, S) {
|
|
48
|
+
const I = w(o.primary, o.secondary), m = (r) => ({
|
|
49
|
+
y: Number(g.getColumnValue(b.value, r)),
|
|
50
|
+
link: g.getColumnValue(u.linkColumn.value, r)
|
|
51
|
+
});
|
|
52
|
+
let p = 1 / 0, c = -1 / 0;
|
|
49
53
|
return {
|
|
50
54
|
type: "pairedPoints",
|
|
51
|
-
geoms:
|
|
52
|
-
const
|
|
53
|
-
if (
|
|
54
|
-
const [
|
|
55
|
-
u,
|
|
56
|
-
s,
|
|
57
|
-
a,
|
|
55
|
+
geoms: o.facet.reduce((r, a) => {
|
|
56
|
+
const f = k(a);
|
|
57
|
+
if (r[f] = [], I === "primary") {
|
|
58
|
+
const [t, e] = o.primary, d = g.getRowsByGrouping([...a, t]), s = g.getRowsByGrouping([...a, e]), v = Array.from(d).map(m), n = Array.from(s).map(m), l = G(
|
|
58
59
|
t,
|
|
59
|
-
e
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
60
|
+
e,
|
|
61
|
+
v,
|
|
62
|
+
n,
|
|
63
|
+
I,
|
|
64
|
+
u.aes.showOutliers,
|
|
65
|
+
S.scale
|
|
64
66
|
);
|
|
65
|
-
p = Math.min(p,
|
|
66
|
-
} else
|
|
67
|
-
const [
|
|
68
|
-
|
|
69
|
-
a,
|
|
70
|
-
t,
|
|
71
|
-
o,
|
|
72
|
-
e.linkColumn,
|
|
73
|
-
M,
|
|
67
|
+
p = Math.min(p, l.boundsY.min), c = Math.max(c, l.boundsY.max), r[f].push(l);
|
|
68
|
+
} else I === "secondary" && o.primary.forEach((t) => {
|
|
69
|
+
const [e, d] = o.secondary, s = g.getRowsByGrouping([...a, t, e]), v = g.getRowsByGrouping([...a, t, d]), n = Array.from(s).map(m), l = Array.from(v).map(m), h = G(
|
|
70
|
+
e,
|
|
74
71
|
d,
|
|
75
|
-
|
|
76
|
-
|
|
72
|
+
n,
|
|
73
|
+
l,
|
|
74
|
+
I,
|
|
75
|
+
u.aes.showOutliers,
|
|
76
|
+
S.scale
|
|
77
77
|
);
|
|
78
|
-
p = Math.min(p,
|
|
78
|
+
p = Math.min(p, h.boundsY.min), c = Math.max(c, h.boundsY.max), r[f].push(h);
|
|
79
79
|
});
|
|
80
|
-
return
|
|
80
|
+
return r;
|
|
81
81
|
}, {}),
|
|
82
|
-
meta: { minY: p, maxY:
|
|
83
|
-
aes:
|
|
82
|
+
meta: { minY: p, maxY: c },
|
|
83
|
+
aes: u.aes
|
|
84
84
|
};
|
|
85
85
|
}
|
|
86
86
|
export {
|
|
87
|
-
|
|
87
|
+
R as getPairedPointsData
|
|
88
88
|
};
|
|
89
89
|
//# sourceMappingURL=pairedPoints.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pairedPoints.js","sources":["../../../src/discrete/layers/pairedPoints.ts"],"sourcesContent":["import type {GroupKey} from '../../DataFrame';\nimport type {DataFrame} from '../../DataFrame';\nimport type {DiscreteSettingsImpl} from '../DiscreteSettingsImpl';\nimport type {PairedPointsLayer} from '../DiscreteSettingsImpl';\nimport type {PairedPointsData} from './types';\nimport {getOutliersBounds} from '../utils';\nimport {getFacetStringKey} from '../utils/getFacetStringKey';\nimport type {ColumnName, Row} from '../../types';\nimport lodash from 'lodash';\n\ntype Point = {\n id: string;\n value: number;\n data: Row;\n};\n\nexport type PairedPoints = {\n id: string;\n key1: string;\n key2: string;\n grouping: 'primary' | 'secondary';\n pairs: {key1: Point; key2: Point; id: string}[];\n boundsY: {\n min: number;\n max: number;\n };\n};\n\nfunction getGroupingType(primaryKeys: GroupKey[], secondaryKeys: GroupKey[]) {\n if (secondaryKeys.length === 2) {\n return 'secondary';\n }\n if (primaryKeys.length === 2 && secondaryKeys.length < 2) {\n return 'primary';\n }\n throw Error('Too many groups for paired points layer');\n}\n\nfunction getPairedGroup(\n key1: GroupKey,\n key2: GroupKey,\n rowsGroup1: Row[],\n rowsGroup2: Row[],\n linkColumn: ColumnName,\n yColumn: ColumnName,\n grouping: 'primary' | 'secondary',\n showOutliers: boolean,\n scale: 'linear' | 'log'\n): PairedPoints {\n const group1 = lodash.groupBy(rowsGroup1, row => row[linkColumn.value]);\n const group2 = lodash.groupBy(rowsGroup2, row => row[linkColumn.value]);\n const pointKeys1 = Object.keys(group1);\n const pointKeys2 = Object.keys(group2);\n // Sets of point ids from group 1 and group 2 must be the same and must contain unique ids\n if (lodash.uniq(pointKeys1).length !== pointKeys1.length || lodash.uniq(pointKeys2).length !== pointKeys2.length) {\n throw Error(`Non unique keys in groups ${String(key1)}, ${String(key2)} for paired points layer`);\n }\n if (\n pointKeys1.length !== pointKeys2.length ||\n lodash.intersection(pointKeys1, pointKeys2).length !== pointKeys1.length\n ) {\n throw Error(`Keys in groups ${String(key1)}, ${String(key2)} not match for paired points layer`);\n }\n\n const yGetter = (row: Row) => Number(row[yColumn.value]);\n let min = Infinity;\n let max = -Infinity;\n let hasZero = false;\n const isLog = scale === 'log';\n let pairs = pointKeys1.map(pairKey => {\n const p1 = group1[pairKey][0];\n const p2 = group2[pairKey][0];\n const v1 = yGetter(p1);\n const v2 = yGetter(p2);\n if (v1 === 0 || v2 === 0) {\n hasZero = true;\n }\n min = Math.min(min, isLog && v1 === 0 ? Infinity : v1, isLog && v2 === 0 ? Infinity : v2);\n max = Math.max(max, isLog && v1 === 0 ? -Infinity : v1, isLog && v2 === 0 ? -Infinity : v2);\n return {\n id: pairKey,\n key1: {id: `${pairKey}_${String(key1)}`, value: v1, data: p1},\n key2: {id: `${pairKey}_${String(key2)}`, value: v2, data: p2},\n };\n });\n if (!showOutliers) {\n min = Infinity;\n max = -Infinity;\n const [boundsMin1, boundMax1] = getOutliersBounds(rowsGroup1, scale, yGetter);\n const [boundsMin2, boundMax2] = getOutliersBounds(rowsGroup2, scale, yGetter);\n pairs = pairs.filter(({key1, key2}) => {\n const outlier =\n key1.value < boundsMin1 || key1.value > boundMax1 || key2.value < boundsMin2 || key2.value > boundMax2;\n if (outlier) {\n return false;\n }\n min = Math.min(min, isLog && key1.value === 0 ? Infinity : key1.value, isLog && key2.value === 0 ? Infinity : key2.value);\n max = Math.max(max, isLog && key1.value === 0 ? -Infinity : key1.value, isLog && key2.value === 0 ? -Infinity : key2.value);\n return true;\n });\n }\n min = hasZero ? min / 10 : min;\n max = Math.max(max, min);\n return {\n id: `${String(key1)}_${String(key2)}`,\n key1: String(key1),\n key2: String(key2),\n pairs: pairs.map(pair => ({\n ...pair,\n key1: {...pair.key1, value: pair.key1.value === 0 ? min : pair.key1.value},\n key2: {...pair.key2, value: pair.key2.value === 0 ? min : pair.key2.value},\n })),\n grouping,\n boundsY: {min, max},\n };\n}\n\nexport function getPairedPointsData(\n layer: PairedPointsLayer,\n groupingKeys: {\n facet: GroupKey[][],\n primary: GroupKey[],\n secondary: GroupKey[]\n },\n data: DataFrame,\n y: ColumnName,\n yAxis: DiscreteSettingsImpl['chartSettings']['yAxis']\n): PairedPointsData {\n const grouping = getGroupingType(groupingKeys.primary, groupingKeys.secondary);\n let minY = Infinity;\n let maxY = -Infinity;\n\n return {\n type: 'pairedPoints',\n geoms: groupingKeys.facet.reduce((res: Record<string, PairedPoints[]>, facetKey) => {\n const strFacetKey = getFacetStringKey(facetKey);\n res[strFacetKey] = [];\n if (grouping === 'primary') {\n const [key1, key2] = groupingKeys.primary;\n const group1 = data.getRowsByGrouping([...facetKey, key1]);\n const group2 = data.getRowsByGrouping([...facetKey, key2]);\n const pairedPointsGroup = getPairedGroup(\n key1,\n key2,\n group1,\n group2,\n layer.linkColumn,\n y,\n grouping,\n layer.aes.showOutliers,\n yAxis.scale\n );\n minY = Math.min(minY, pairedPointsGroup.boundsY.min);\n maxY = Math.max(maxY, pairedPointsGroup.boundsY.max);\n res[strFacetKey].push(pairedPointsGroup);\n } else if (grouping === 'secondary') {\n groupingKeys.primary.forEach(primaryKey => {\n const [key1, key2] = groupingKeys.secondary;\n const group1 = data.getRowsByGrouping([...facetKey, primaryKey, key1]);\n const group2 = data.getRowsByGrouping([...facetKey, primaryKey, key2]);\n const pairedPointsGroup = getPairedGroup(\n key1,\n key2,\n group1,\n group2,\n layer.linkColumn,\n y,\n grouping,\n layer.aes.showOutliers,\n yAxis.scale\n );\n minY = Math.min(minY, pairedPointsGroup.boundsY.min);\n maxY = Math.max(maxY, pairedPointsGroup.boundsY.max);\n res[strFacetKey].push(pairedPointsGroup);\n });\n }\n return res;\n }, {}),\n meta: {minY, maxY},\n aes: layer.aes,\n };\n}\n"],"names":["getGroupingType","primaryKeys","secondaryKeys","getPairedGroup","key1","key2","rowsGroup1","rowsGroup2","linkColumn","yColumn","grouping","showOutliers","scale","group1","lodash","row","group2","pointKeys1","pointKeys2","yGetter","min","max","hasZero","isLog","pairs","pairKey","p1","p2","v1","v2","boundsMin1","boundMax1","getOutliersBounds","boundsMin2","boundMax2","pair","getPairedPointsData","layer","groupingKeys","data","y","yAxis","minY","maxY","res","facetKey","strFacetKey","getFacetStringKey","pairedPointsGroup","primaryKey"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pairedPoints.js","sources":["../../../src/discrete/layers/pairedPoints.ts"],"sourcesContent":["import {\n groupBy,\n intersection,\n uniq\n} from 'lodash';\nimport type { DataFrame, GroupKey } from '../../DataFrame';\nimport type { ColumnName, DataValue, Row } from '../../types';\nimport type { DiscreteSettingsImpl, PairedPointsLayer } from '../DiscreteSettingsImpl';\nimport { getOutliersBounds } from '../utils';\nimport { getFacetStringKey } from '../utils/getFacetStringKey';\nimport type { PairedPointsData } from './types';\n\ntype Point = {\n id: string;\n value: number;\n data: Row;\n};\n\nexport type PairedPoints = {\n id: string;\n key1: string;\n key2: string;\n grouping: 'primary' | 'secondary';\n pairs: {key1: Point; key2: Point; id: string}[];\n boundsY: {\n min: number;\n max: number;\n };\n};\n\nfunction getGroupingType(primaryKeys: GroupKey[], secondaryKeys: GroupKey[]) {\n if (secondaryKeys.length === 2) {\n return 'secondary';\n }\n if (primaryKeys.length === 2 && secondaryKeys.length < 2) {\n return 'primary';\n }\n throw Error('Too many groups for paired points layer');\n}\n\nfunction getPairedGroup(\n key1: GroupKey,\n key2: GroupKey,\n rowsGroup1: {y: number, link: DataValue}[],\n rowsGroup2: {y: number, link: DataValue}[],\n grouping: 'primary' | 'secondary',\n showOutliers: boolean,\n scale: 'linear' | 'log'\n): PairedPoints {\n const group1 = groupBy(rowsGroup1, row => row.link);\n const group2 = groupBy(rowsGroup2, row => row.link);\n const pointKeys1 = Object.keys(group1);\n const pointKeys2 = Object.keys(group2);\n // Sets of point ids from group 1 and group 2 must be the same and must contain unique ids\n if (uniq(pointKeys1).length !== pointKeys1.length || uniq(pointKeys2).length !== pointKeys2.length) {\n throw Error(`Non unique keys in groups ${String(key1)}, ${String(key2)} for paired points layer`);\n }\n if (\n pointKeys1.length !== pointKeys2.length ||\n intersection(pointKeys1, pointKeys2).length !== pointKeys1.length\n ) {\n throw Error(`Keys in groups ${String(key1)}, ${String(key2)} not match for paired points layer`);\n }\n\n const yGetter = (value: {y: number}) => value.y;\n let min = Infinity;\n let max = -Infinity;\n let hasZero = false;\n const isLog = scale === 'log';\n let pairs = pointKeys1.map(pairKey => {\n const p1 = group1[pairKey][0];\n const p2 = group2[pairKey][0];\n const v1 = yGetter(p1);\n const v2 = yGetter(p2);\n if (v1 === 0 || v2 === 0) {\n hasZero = true;\n }\n min = Math.min(min, isLog && v1 === 0 ? Infinity : v1, isLog && v2 === 0 ? Infinity : v2);\n max = Math.max(max, isLog && v1 === 0 ? -Infinity : v1, isLog && v2 === 0 ? -Infinity : v2);\n return {\n id: pairKey,\n key1: {id: `${pairKey}_${String(key1)}`, value: v1, data: p1},\n key2: {id: `${pairKey}_${String(key2)}`, value: v2, data: p2},\n };\n });\n if (!showOutliers) {\n min = Infinity;\n max = -Infinity;\n const [boundsMin1, boundMax1] = getOutliersBounds(rowsGroup1.map(yGetter), scale);\n const [boundsMin2, boundMax2] = getOutliersBounds(rowsGroup2.map(yGetter), scale);\n pairs = pairs.filter(({key1, key2}) => {\n const outlier =\n key1.value < boundsMin1 || key1.value > boundMax1 || key2.value < boundsMin2 || key2.value > boundMax2;\n if (outlier) {\n return false;\n }\n min = Math.min(min, isLog && key1.value === 0 ? Infinity : key1.value, isLog && key2.value === 0 ? Infinity : key2.value);\n max = Math.max(max, isLog && key1.value === 0 ? -Infinity : key1.value, isLog && key2.value === 0 ? -Infinity : key2.value);\n return true;\n });\n }\n min = hasZero ? min / 10 : min;\n max = Math.max(max, min);\n return {\n id: `${String(key1)}_${String(key2)}`,\n key1: String(key1),\n key2: String(key2),\n pairs: pairs.map(pair => ({\n ...pair,\n key1: {...pair.key1, value: pair.key1.value === 0 ? min : pair.key1.value},\n key2: {...pair.key2, value: pair.key2.value === 0 ? min : pair.key2.value},\n })),\n grouping,\n boundsY: {min, max},\n };\n}\n\nexport function getPairedPointsData(\n layer: PairedPointsLayer,\n groupingKeys: {\n facet: GroupKey[][],\n primary: GroupKey[],\n secondary: GroupKey[]\n },\n data: DataFrame,\n y: ColumnName,\n yAxis: DiscreteSettingsImpl['chartSettings']['yAxis']\n): PairedPointsData {\n const grouping = getGroupingType(groupingKeys.primary, groupingKeys.secondary);\n const groupGetter = (idx: number) => {\n return {\n y: Number(data.getColumnValue(y.value, idx)),\n link: data.getColumnValue(layer.linkColumn.value, idx),\n };\n };\n let minY = Infinity;\n let maxY = -Infinity;\n\n return {\n type: 'pairedPoints',\n geoms: groupingKeys.facet.reduce((res: Record<string, PairedPoints[]>, facetKey) => {\n const strFacetKey = getFacetStringKey(facetKey);\n res[strFacetKey] = [];\n if (grouping === 'primary') {\n const [key1, key2] = groupingKeys.primary;\n const group1Indexes = data.getRowsByGrouping([...facetKey, key1]);\n const group2Indexes = data.getRowsByGrouping([...facetKey, key2]);\n\n const group1 = Array.from(group1Indexes).map(groupGetter);\n const group2 = Array.from(group2Indexes).map(groupGetter);\n const pairedPointsGroup = getPairedGroup(\n key1,\n key2,\n group1,\n group2,\n grouping,\n layer.aes.showOutliers,\n yAxis.scale\n );\n minY = Math.min(minY, pairedPointsGroup.boundsY.min);\n maxY = Math.max(maxY, pairedPointsGroup.boundsY.max);\n res[strFacetKey].push(pairedPointsGroup);\n } else if (grouping === 'secondary') {\n groupingKeys.primary.forEach(primaryKey => {\n const [key1, key2] = groupingKeys.secondary;\n const group1Indexes = data.getRowsByGrouping([...facetKey, primaryKey, key1]);\n const group2Indexes = data.getRowsByGrouping([...facetKey, primaryKey, key2]);\n const group1 = Array.from(group1Indexes).map(groupGetter);\n const group2 = Array.from(group2Indexes).map(groupGetter);\n const pairedPointsGroup = getPairedGroup(\n key1,\n key2,\n group1,\n group2,\n grouping,\n layer.aes.showOutliers,\n yAxis.scale\n );\n minY = Math.min(minY, pairedPointsGroup.boundsY.min);\n maxY = Math.max(maxY, pairedPointsGroup.boundsY.max);\n res[strFacetKey].push(pairedPointsGroup);\n });\n }\n return res;\n }, {}),\n meta: {minY, maxY},\n aes: layer.aes,\n };\n}\n"],"names":["getGroupingType","primaryKeys","secondaryKeys","getPairedGroup","key1","key2","rowsGroup1","rowsGroup2","grouping","showOutliers","scale","group1","groupBy","row","group2","pointKeys1","pointKeys2","uniq","intersection","yGetter","value","min","max","hasZero","isLog","pairs","pairKey","p1","p2","v1","v2","boundsMin1","boundMax1","getOutliersBounds","boundsMin2","boundMax2","pair","getPairedPointsData","layer","groupingKeys","data","y","yAxis","groupGetter","idx","minY","maxY","res","facetKey","strFacetKey","getFacetStringKey","group1Indexes","group2Indexes","pairedPointsGroup","primaryKey"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { GroupKey, NO_GROUPED
|
|
1
|
+
import { DataFrame, GroupKey, NO_GROUPED } from '../../DataFrame';
|
|
2
|
+
import { DataValue } from '../../types';
|
|
2
3
|
import { DiscreteSettingsImpl, SinaLayer } from '../DiscreteSettingsImpl';
|
|
3
4
|
import { SinaData } from './types';
|
|
4
|
-
import { ColumnName, DataValue, Row } from '../../types';
|
|
5
5
|
export declare class Sina {
|
|
6
6
|
key: string;
|
|
7
7
|
maxDensity: number;
|
|
@@ -12,13 +12,12 @@ export declare class Sina {
|
|
|
12
12
|
y: number;
|
|
13
13
|
jitter: number;
|
|
14
14
|
id: string;
|
|
15
|
-
data: Row;
|
|
16
15
|
}[];
|
|
17
16
|
boundsY: {
|
|
18
17
|
min: number;
|
|
19
18
|
max: number;
|
|
20
19
|
};
|
|
21
|
-
constructor(
|
|
20
|
+
constructor(values: number[], scale: 'linear' | 'log', primaryGrouping: DataValue | typeof NO_GROUPED, secondaryGrouping: DataValue | typeof NO_GROUPED, getJitter: () => number);
|
|
22
21
|
}
|
|
23
22
|
export declare function getSinaData(layer: SinaLayer, groupingKeys: {
|
|
24
23
|
facet: GroupKey[][];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sina.d.ts","sourceRoot":"","sources":["../../../src/discrete/layers/sina.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sina.d.ts","sourceRoot":"","sources":["../../../src/discrete/layers/sina.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACvE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAG/E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAoCxC,qBAAa,IAAI;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAE1B,MAAM,EAAE;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAC,EAAE,CAAC;IAE7D,OAAO,EAAE;QACL,GAAG,EAAE,MAAM,CAAC;QACZ,GAAG,EAAE,MAAM,CAAC;KACf,CAAC;gBAGE,MAAM,EAAE,MAAM,EAAE,EAChB,KAAK,EAAE,QAAQ,GAAG,KAAK,EACvB,eAAe,EAAE,SAAS,GAAG,OAAO,UAAU,EAC9C,iBAAiB,EAAE,SAAS,GAAG,OAAO,UAAU,EAChD,SAAS,EAAE,MAAM,MAAM;CAmD9B;AAED,wBAAgB,WAAW,CACvB,KAAK,EAAE,SAAS,EAChB,YAAY,EAAE;IACV,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC;IACpB,OAAO,EAAE,QAAQ,EAAE,CAAC;IACpB,SAAS,EAAE,QAAQ,EAAE,CAAA;CACxB,EACD,IAAI,EAAE,SAAS,EACf,CAAC,EAAE,oBAAoB,CAAC,GAAG,CAAC,EAC5B,KAAK,EAAE,oBAAoB,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,GACtD,QAAQ,CAmDV"}
|