@milaboratories/miplots4 1.0.161 → 1.0.163
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/_virtual/index10.js +2 -5
- package/dist/_virtual/index10.js.map +1 -1
- package/dist/_virtual/index5.js +5 -2
- package/dist/_virtual/index5.js.map +1 -1
- package/dist/_virtual/index6.js +4 -4
- package/dist/_virtual/index7.js +1 -1
- package/dist/_virtual/index8.js +4 -4
- package/dist/_virtual/index9.js +3 -3
- package/dist/common/BandAxis.d.ts +2 -1
- package/dist/common/BandAxis.js +19 -18
- package/dist/common/BandAxis.js.map +1 -1
- package/dist/common/ContinuousAxis.js +20 -20
- package/dist/common/ContinuousAxis.js.map +1 -1
- package/dist/common/Legend.js +3 -3
- package/dist/common/Legend.js.map +1 -1
- package/dist/discrete/DiscreteSettingsImpl.d.ts +6 -4
- package/dist/discrete/DiscreteSettingsImpl.js +9 -9
- package/dist/discrete/DiscreteSettingsImpl.js.map +1 -1
- package/dist/discrete/constants.d.ts +1 -1
- package/dist/discrete/constants.js +1 -1
- package/dist/discrete/constants.js.map +1 -1
- package/dist/discrete/index.js +107 -106
- package/dist/discrete/index.js.map +1 -1
- package/dist/discrete/layers/bar.js +25 -22
- package/dist/discrete/layers/bar.js.map +1 -1
- package/dist/discrete/layers/errorbars.js +57 -48
- package/dist/discrete/layers/errorbars.js.map +1 -1
- package/dist/discrete/layers/lines.js +40 -31
- package/dist/discrete/layers/lines.js.map +1 -1
- package/dist/discrete/layers/stackedBar.js.map +1 -1
- package/dist/discrete/layers/stats/pValueCalculation.js +5 -5
- package/dist/heatmap/components/Captions/AxisCaptions.js +34 -34
- package/dist/heatmap/components/Captions/AxisCaptions.js.map +1 -1
- package/dist/heatmap/fillCellsData.js +49 -46
- package/dist/heatmap/fillCellsData.js.map +1 -1
- package/dist/heatmap/utils/calculateChartSideElementSizes.js +23 -23
- package/dist/heatmap/utils/calculateChartSideElementSizes.js.map +1 -1
- package/dist/histogram/ChartRenderer.js +57 -54
- package/dist/histogram/ChartRenderer.js.map +1 -1
- package/dist/histogram/constants.d.ts +1 -1
- package/dist/histogram/constants.js.map +1 -1
- package/dist/histogram/index.js +58 -51
- package/dist/histogram/index.js.map +1 -1
- package/dist/node_modules/.pnpm/scheduler@0.23.2/node_modules/scheduler/index.js +1 -1
- package/dist/scatterplot/ChartRenderer.js +89 -89
- package/dist/scatterplot/ChartRenderer.js.map +1 -1
- package/dist/scatterplot/components/ChartAxis.js +30 -30
- package/dist/scatterplot/components/ChartAxis.js.map +1 -1
- package/dist/scatterplot/components/ChartAxisTitles.js +22 -22
- package/dist/scatterplot/components/ChartAxisTitles.js.map +1 -1
- package/dist/scatterplot/constants.d.ts +1 -1
- package/dist/scatterplot/constants.js +1 -1
- package/dist/scatterplot/constants.js.map +1 -1
- package/dist/scatterplot/dots.d.ts +1 -1
- package/dist/scatterplot/dots.js +14 -14
- package/dist/scatterplot/dots.js.map +1 -1
- package/dist/scatterplot/index.js +94 -79
- package/dist/scatterplot/index.js.map +1 -1
- package/dist/scatterplot-umap/ChartRenderer.d.ts +1 -1
- package/dist/scatterplot-umap/ChartRenderer.js +14 -14
- package/dist/scatterplot-umap/ChartRenderer.js.map +1 -1
- package/dist/scatterplot-umap/components/LowerSVG.js +38 -38
- package/dist/scatterplot-umap/components/LowerSVG.js.map +1 -1
- package/dist/types/bubble.d.ts +5 -5
- package/dist/types/bubble.js +40 -40
- package/dist/types/bubble.js.map +1 -1
- package/dist/types/common.d.ts +25 -2
- package/dist/types/common.js +16 -15
- package/dist/types/common.js.map +1 -1
- package/dist/types/discrete.d.ts +66 -56
- package/dist/types/discrete.js +40 -38
- package/dist/types/discrete.js.map +1 -1
- package/dist/types/heatmap.d.ts +5 -6
- package/dist/types/heatmap.js +29 -29
- package/dist/types/heatmap.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/discrete/index.ts"],"sourcesContent":["import { intersection } from 'lodash';\nimport { renderToString } from 'react-dom/server';\nimport { AbstractChart } from '../AbstractChart';\nimport type { DataFrame, GroupKey } from '../DataFrame';\nimport { NO_GROUPED } from '../DataFrame';\nimport {\n type Category, type ColumnName, type DataValue, type DiscreteEventHandlers,\n type DiscreteSettings, type ErrorInfoFacets, type ErrorInfoPrimaryGroups,\n type ErrorInfoSecondaryGroups, getUnknownErrorInfo, type GroupingData, isErrorInfo\n} from '../types';\nimport ChartRenderer from './ChartRenderer';\nimport { MAX_FACETS_COUNT, MAX_GROUPS_COUNT } from '../constants';\nimport {\n BarLayer,\n BinnedDotsLayer,\n BoxLayer,\n DiscreteSettingsImpl,\n DotLayer,\n ErrorBarLayer,\n LineLayer,\n LogoPlotLayer,\n PairedPointsLayer,\n SinaLayer, StackedAreaLayer,\n StackedBarLayer,\n StatLayer,\n ViolinLayer,\n} from './DiscreteSettingsImpl';\nimport {\n getBarsData,\n getBinnedDotsData,\n getBoxesData,\n getDotsData,\n getErrorBarsData,\n getLinesData,\n getPairedPointsData,\n getSinaData,\n getStackedBarsData,\n getStatsData,\n getViolinsData,\n} from './layers';\nimport { getLogoData } from './layers/logo';\nimport { getStackedAreaData } from './layers/stackedArea';\nimport type { LayerData, StatsData } from './layers/types';\nimport { getFacetStringKey } from './utils/getFacetStringKey';\nimport { arraysAreDifferent } from '../utils/arraysAreDifferent';\n\nfunction getGroupingKeys(data: DataFrame, column: ColumnName, order: DataValue[] | null = null) {\n const groupingColumn = column.value;\n const availableKeys = data.getColumnCategories(groupingColumn);\n return intersection(order ?? availableKeys, availableKeys).map(String);\n}\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 getGroupingData(\n data: DataFrame,\n grouping: DiscreteSettingsImpl['primaryGrouping' | 'secondaryGrouping']\n): GroupingData {\n if (!grouping) {\n return {\n keys: ['null'],\n value: null,\n label: '',\n valueLabels: { null: '' },\n inheritedAes: null,\n };\n }\n\n const groupingColumnId = grouping.columnName.value;\n const groupingColumnLabelId = grouping.columnName.valueLabels;\n const categories = data.getColumnCategories(groupingColumnId, false);\n const getValueLabel = (category: Category) => {\n return groupingColumnLabelId\n ? String(\n data.getColumnValue(\n groupingColumnLabelId,\n data.getColumnCategoryRowIndex(groupingColumnId, category)\n )\n )\n : category;\n };\n\n const keys = data.getColumnCategories(groupingColumnId, !grouping.allowNullGroup);\n const orderedKeys = grouping.order === undefined ? keys : intersection(grouping.order.map(String), keys);\n\n return {\n keys: orderedKeys,\n value: groupingColumnId,\n label: grouping.columnName.label ?? groupingColumnId,\n valueLabels: categories.reduce((res: Record<string, string>, category: Category) => {\n res[category] = getValueLabel(category);\n return res;\n }, {}),\n inheritedAes: grouping.inheritedAes ?? null,\n };\n}\n\nexport class ChartDiscrete extends AbstractChart {\n settings: DiscreteSettingsImpl;\n chartRenderer = new ChartRenderer();\n\n onTooltipHintSwitch: (v: boolean) => void = () => undefined;\n calculatedData: {\n layersData: LayerData[];\n statsLayersData: StatsData[];\n primaryGrouping: GroupingData;\n secondaryGrouping: GroupingData;\n facetKeyLists: GroupKey[][];\n nonEmptyGroupsByFacets: Record<string, string[]>;\n onlyPositive: boolean;\n } | null = null;\n\n constructor(data: DataFrame, settings: DiscreteSettings, eventHandlers?: DiscreteEventHandlers) {\n super(data, settings);\n\n this.settings = new DiscreteSettingsImpl(settings);\n if (eventHandlers) {\n this.onTooltipHintSwitch = eventHandlers[0];\n }\n }\n\n mount(node: HTMLElement) {\n try {\n this.chartRenderer.init(node);\n this._updateData();\n this._updateChart();\n this.hasError = false;\n this.errorInfo = null;\n } catch (err) {\n this.hasError = true;\n if (err instanceof Error) {\n this.errorInfo = isErrorInfo(err.cause) ? err.cause : getUnknownErrorInfo(err);\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: DiscreteSettings) {\n try {\n const previousSettings = this.settings;\n const previousData = this.data;\n this.settings = new DiscreteSettingsImpl(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 this.hasError = false;\n this.errorInfo = null;\n } catch (err) {\n this.hasError = true;\n if (err instanceof Error) {\n this.errorInfo = isErrorInfo(err.cause) ? err.cause : getUnknownErrorInfo(err);\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 discrete');\n }\n\n export(): string {\n this._updateChart();\n return renderToString(this.chartRenderer.component);\n }\n\n _needUpdateCalculatedDataBySettings(prevSettings: DiscreteSettingsImpl, settings: DiscreteSettingsImpl) {\n return (\n prevSettings.chartSettings.yAxis.scale !== settings.chartSettings.yAxis.scale ||\n (prevSettings.primaryGrouping?.columnName.value ?? '') !==\n (settings.primaryGrouping?.columnName.value ?? '') ||\n (prevSettings.secondaryGrouping?.columnName.value ?? '') !==\n (settings.secondaryGrouping?.columnName.value ?? '') ||\n (prevSettings.primaryGrouping?.allowNullGroup ?? '') !==\n (settings.primaryGrouping?.allowNullGroup ?? '') ||\n (prevSettings.secondaryGrouping?.allowNullGroup ?? '') !==\n (settings.secondaryGrouping?.allowNullGroup ?? '') ||\n arraysAreDifferent(prevSettings.primaryGrouping?.order, settings.primaryGrouping?.order, { ignoreOrder: true }) ||\n arraysAreDifferent(prevSettings.secondaryGrouping?.order, settings.secondaryGrouping?.order, { ignoreOrder: true }) ||\n prevSettings.facetBy.some((el, idx) => el.value !== settings.facetBy[idx]?.value) ||\n prevSettings.layers.length !== settings.layers.length ||\n prevSettings.layers.some((l, idx) => !l.isEqualForCalculation(settings.layers[idx] as typeof l))\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 { chartSettings, y, keyColumn, facetBy, layers, facetSettings } = this.settings;\n const { yAxis } = chartSettings;\n\n const onlyPositive = this.data.getColumn(y.value).every(v => {\n return v === null || !(Number(v) < 0);\n });\n // console.info('only positive Y:', onlyPositive);\n\n const primaryGrouping = getGroupingData(this.data, this.settings.primaryGrouping);\n const secondaryGrouping = getGroupingData(this.data, this.settings.secondaryGrouping);\n const facetGroupingValues = facetBy.map(column => column.value);\n const hasLogoOrBarLayer = layers.some(l => l.type === 'logo' || l.type === 'bar');\n\n if (!hasLogoOrBarLayer && primaryGrouping.keys.length > MAX_GROUPS_COUNT) {\n const errorInfo: ErrorInfoPrimaryGroups = {\n type: 'tooManyPrimaryGroups',\n info: { count: primaryGrouping.keys.length, maxCount: MAX_GROUPS_COUNT }\n };\n throw Error(errorInfo.type, { cause: errorInfo });\n }\n if (!hasLogoOrBarLayer && secondaryGrouping.keys.length > MAX_GROUPS_COUNT) {\n const errorInfo: ErrorInfoSecondaryGroups = {\n type: 'tooManySecondaryGroups',\n info: { count: secondaryGrouping.keys.length, maxCount: MAX_GROUPS_COUNT }\n };\n throw Error(errorInfo.type, { cause: errorInfo });\n }\n\n // if facet created by more than 1 data column facet key contains all of them, and all keys are used in data grouping;\n // after data preparing we need only complex keys from concatenated strings\n const facetKeyLists: (GroupKey)[][] = facetBy.length\n ? getKeysCombinations(\n facetBy.map(column => getGroupingKeys(this.data, column, facetSettings?.order?.[column.value]))\n )\n : [[NO_GROUPED]];\n\n if (facetKeyLists.length > MAX_FACETS_COUNT) {\n const errorInfo: ErrorInfoFacets = {\n type: 'tooManyFacets',\n info: { count: facetKeyLists.length, maxCount: MAX_FACETS_COUNT }\n };\n throw Error(errorInfo.type, { cause: errorInfo });\n }\n this.data.setGrouping([...facetGroupingValues, primaryGrouping.value, secondaryGrouping.value]);\n const groupingKeys = {\n facet: facetKeyLists,\n primary: (primaryGrouping.value !== null ? primaryGrouping.keys : [NO_GROUPED]) as GroupKey[],\n secondary: (secondaryGrouping.value !== null ? secondaryGrouping.keys : [NO_GROUPED]) as GroupKey[],\n };\n\n const nonEmptyGroupsByFacets = groupingKeys.facet.reduce((res: Record<string, string[]>, facetKey) => {\n res[getFacetStringKey(facetKey)] = groupingKeys.primary.filter(\n primaryKey => this.data.getRowsByGrouping([...facetKey, primaryKey]).length > 0\n ).map(String);\n return res;\n }, {});\n\n const layersData = layers\n .filter(layer => !(layer instanceof StatLayer))\n .map(layer => {\n if (layer instanceof BoxLayer) {\n return getBoxesData(layer, groupingKeys, this.data, y, keyColumn, yAxis);\n }\n if (layer instanceof ViolinLayer) {\n return getViolinsData(layer, groupingKeys, this.data, y, yAxis);\n }\n if (layer instanceof DotLayer) {\n return getDotsData(layer, groupingKeys, this.data, y, yAxis, keyColumn);\n }\n if (layer instanceof LineLayer) {\n return getLinesData(layer, groupingKeys, this.data, y, yAxis);\n }\n if (layer instanceof ErrorBarLayer) {\n return getErrorBarsData(layer, groupingKeys, this.data, y, yAxis);\n }\n if (layer instanceof BarLayer) {\n return getBarsData(layer, groupingKeys, this.data, y, yAxis);\n }\n if (layer instanceof StackedBarLayer) {\n return getStackedBarsData(layer, groupingKeys, this.data, y);\n }\n if (layer instanceof StackedAreaLayer) {\n return getStackedAreaData(layer, groupingKeys, this.data, y);\n }\n if (layer instanceof BinnedDotsLayer) {\n return getBinnedDotsData(layer, groupingKeys, this.data, y, yAxis);\n }\n if (layer instanceof PairedPointsLayer) {\n return getPairedPointsData(layer, groupingKeys, this.data, y, yAxis);\n }\n if (layer instanceof SinaLayer) {\n return getSinaData(layer, groupingKeys, this.data, y, yAxis);\n }\n if (layer instanceof LogoPlotLayer) {\n return getLogoData(layer, groupingKeys, this.data, y);\n }\n throw new Error('Unknown layer type');\n });\n const statsLayersData = layers\n .filter(layer => layer instanceof StatLayer)\n .map(layer => {\n if (primaryGrouping.value === null) {\n throw new Error('Cannot calculate p-value without data grouping');\n }\n return getStatsData(layer as StatLayer, groupingKeys.facet, groupingKeys.primary, y, this.data);\n });\n this.calculatedData = {\n layersData,\n statsLayersData,\n primaryGrouping,\n secondaryGrouping,\n facetKeyLists,\n nonEmptyGroupsByFacets,\n onlyPositive,\n };\n }\n\n _updateAesInData() {\n if (this.calculatedData === null) {\n return;\n }\n const { layers, facetBy, primaryGrouping, secondaryGrouping, facetSettings } = this.settings;\n\n // updating aes in layers (except for stat layers with p-value), layers data is not recalculating\n const noStatLayers = layers.filter(layer => !(layer instanceof StatLayer));\n for (let i = 0; i < noStatLayers.length; i++) {\n const layer = noStatLayers[i];\n if ('aes' in layer) {\n this.calculatedData.layersData[i].aes = layer.aes;\n }\n }\n\n // updating grouping to update linked aes\n this.calculatedData.primaryGrouping = getGroupingData(this.data, primaryGrouping);\n this.calculatedData.secondaryGrouping = getGroupingData(this.data, secondaryGrouping);\n\n // updating for possibly changed facetSettings.order\n this.calculatedData.facetKeyLists = facetBy.length\n ? getKeysCombinations(\n facetBy.map(column => getGroupingKeys(this.data, column, facetSettings?.order?.[column.value]))\n )\n : [[NO_GROUPED]];\n }\n\n _updateChart() {\n if (!this.calculatedData) {\n return;\n }\n const { id, chartSettings, keyColumn, facetSettings } = this.settings;\n\n const facetKeys = this.calculatedData.facetKeyLists.map(getFacetStringKey);\n const facetLabels = this.calculatedData.facetKeyLists.map(v => v.map(v => v === NO_GROUPED ? 'null' : v)) as string[][];\n this.chartRenderer.render(\n this.data,\n id,\n chartSettings,\n this.calculatedData.primaryGrouping,\n this.calculatedData.secondaryGrouping,\n facetSettings,\n facetKeys,\n facetLabels,\n this.calculatedData.layersData,\n this.calculatedData.statsLayersData,\n keyColumn,\n this.calculatedData.nonEmptyGroupsByFacets,\n this.calculatedData.onlyPositive,\n this.onTooltipHintSwitch\n );\n }\n}\n"],"names":["getGroupingKeys","data","column","order","groupingColumn","availableKeys","intersection","getKeysCombinations","keysLists","result","keys","nextResult","key","resultItem","getGroupingData","grouping","groupingColumnId","groupingColumnLabelId","categories","getValueLabel","category","res","ChartDiscrete","AbstractChart","settings","eventHandlers","__publicField","ChartRenderer","DiscreteSettingsImpl","node","err","isErrorInfo","getUnknownErrorInfo","previousSettings","previousData","_field","_value","renderToString","prevSettings","_a","_b","_c","_d","_e","_f","_g","_h","arraysAreDifferent","_i","_j","_k","_l","el","idx","l","prevData","prevKeys","chartSettings","y","keyColumn","facetBy","layers","facetSettings","yAxis","onlyPositive","v","primaryGrouping","secondaryGrouping","facetGroupingValues","hasLogoOrBarLayer","MAX_GROUPS_COUNT","errorInfo","facetKeyLists","NO_GROUPED","MAX_FACETS_COUNT","groupingKeys","nonEmptyGroupsByFacets","facetKey","getFacetStringKey","primaryKey","layersData","layer","StatLayer","BoxLayer","getBoxesData","ViolinLayer","getViolinsData","DotLayer","getDotsData","LineLayer","getLinesData","ErrorBarLayer","getErrorBarsData","BarLayer","getBarsData","StackedBarLayer","getStackedBarsData","StackedAreaLayer","getStackedAreaData","BinnedDotsLayer","getBinnedDotsData","PairedPointsLayer","getPairedPointsData","SinaLayer","getSinaData","LogoPlotLayer","getLogoData","statsLayersData","getStatsData","noStatLayers","i","id","facetKeys","facetLabels"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/discrete/index.ts"],"sourcesContent":["import { intersection } from 'lodash';\nimport { renderToString } from 'react-dom/server';\nimport { AbstractChart } from '../AbstractChart';\nimport type { DataFrame, GroupKey } from '../DataFrame';\nimport { NO_GROUPED } from '../DataFrame';\nimport {\n type Category, type ColumnName, type DataValue, type DiscreteEventHandlers,\n type DiscreteSettings, type ErrorInfoFacets, type ErrorInfoPrimaryGroups,\n type ErrorInfoSecondaryGroups, getUnknownErrorInfo, type GroupingData, isErrorInfo\n} from '../types';\nimport ChartRenderer from './ChartRenderer';\nimport { MAX_FACETS_COUNT, MAX_GROUPS_COUNT } from '../constants';\nimport {\n BarLayer,\n BinnedDotsLayer,\n BoxLayer,\n DiscreteSettingsImpl,\n DotLayer,\n ErrorBarLayer,\n LineLayer,\n LogoPlotLayer,\n PairedPointsLayer,\n SinaLayer, StackedAreaLayer,\n StackedBarLayer,\n StatLayer,\n ViolinLayer,\n} from './DiscreteSettingsImpl';\nimport {\n getBarsData,\n getBinnedDotsData,\n getBoxesData,\n getDotsData,\n getErrorBarsData,\n getLinesData,\n getPairedPointsData,\n getSinaData,\n getStackedBarsData,\n getStatsData,\n getViolinsData,\n} from './layers';\nimport { getLogoData } from './layers/logo';\nimport { getStackedAreaData } from './layers/stackedArea';\nimport type { LayerData, StatsData } from './layers/types';\nimport { getFacetStringKey } from './utils/getFacetStringKey';\nimport { arraysAreDifferent } from '../utils/arraysAreDifferent';\n\nfunction getGroupingKeys(data: DataFrame, column: ColumnName, order: DataValue[] | null = null) {\n const groupingColumn = column.value;\n const availableKeys = data.getColumnCategories(groupingColumn);\n return intersection(order ?? availableKeys, availableKeys).map(String);\n}\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 getGroupingData(\n data: DataFrame,\n grouping: DiscreteSettingsImpl['primaryGrouping' | 'secondaryGrouping']\n): GroupingData {\n if (!grouping) {\n return {\n keys: ['null'],\n value: null,\n label: '',\n valueLabels: { null: '' },\n inheritedAes: null,\n };\n }\n\n const groupingColumnId = grouping.columnName.value;\n const groupingColumnLabelId = grouping.columnName.valueLabels;\n const categories = data.getColumnCategories(groupingColumnId, false);\n const getValueLabel = (category: Category) => {\n return groupingColumnLabelId\n ? String(\n data.getColumnValue(\n groupingColumnLabelId,\n data.getColumnCategoryRowIndex(groupingColumnId, category)\n )\n )\n : category;\n };\n\n const keys = data.getColumnCategories(groupingColumnId, !grouping.allowNullGroup);\n const orderedKeys = grouping.order === undefined ? keys : intersection(grouping.order.map(String), keys);\n\n return {\n keys: orderedKeys,\n value: groupingColumnId,\n label: grouping.columnName.label ?? groupingColumnId,\n valueLabels: categories.reduce((res: Record<string, string>, category: Category) => {\n res[category] = getValueLabel(category);\n return res;\n }, {}),\n inheritedAes: grouping.inheritedAes ?? null,\n };\n}\n\nexport class ChartDiscrete extends AbstractChart {\n settings: DiscreteSettingsImpl;\n chartRenderer = new ChartRenderer();\n\n onTooltipHintSwitch: (v: boolean) => void = () => undefined;\n calculatedData: {\n layersData: LayerData[];\n statsLayersData: StatsData[];\n primaryGrouping: GroupingData;\n secondaryGrouping: GroupingData;\n facetKeyLists: GroupKey[][];\n nonEmptyGroupsByFacets: Record<string, string[]>;\n onlyPositive: boolean;\n } | null = null;\n\n constructor(data: DataFrame, settings: DiscreteSettings, eventHandlers?: DiscreteEventHandlers) {\n super(data, settings);\n\n this.settings = new DiscreteSettingsImpl(settings);\n if (eventHandlers) {\n this.onTooltipHintSwitch = eventHandlers[0];\n }\n }\n\n mount(node: HTMLElement) {\n try {\n this.chartRenderer.init(node);\n this._updateData();\n this._updateChart();\n this.hasError = false;\n this.errorInfo = null;\n } catch (err) {\n this.hasError = true;\n if (err instanceof Error) {\n this.errorInfo = isErrorInfo(err.cause) ? err.cause : getUnknownErrorInfo(err);\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: DiscreteSettings) {\n try {\n const previousSettings = this.settings;\n const previousData = this.data;\n this.settings = new DiscreteSettingsImpl(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 this.hasError = false;\n this.errorInfo = null;\n } catch (err) {\n this.hasError = true;\n if (err instanceof Error) {\n this.errorInfo = isErrorInfo(err.cause) ? err.cause : getUnknownErrorInfo(err);\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 discrete');\n }\n\n export(): string {\n this._updateChart();\n return renderToString(this.chartRenderer.component);\n }\n\n _needUpdateCalculatedDataBySettings(prevSettings: DiscreteSettingsImpl, settings: DiscreteSettingsImpl) {\n return (\n prevSettings.chartSettings.yAxis.scale !== settings.chartSettings.yAxis.scale ||\n (prevSettings.primaryGrouping?.columnName.value ?? '') !==\n (settings.primaryGrouping?.columnName.value ?? '') ||\n (prevSettings.secondaryGrouping?.columnName.value ?? '') !==\n (settings.secondaryGrouping?.columnName.value ?? '') ||\n (prevSettings.primaryGrouping?.allowNullGroup ?? '') !==\n (settings.primaryGrouping?.allowNullGroup ?? '') ||\n (prevSettings.secondaryGrouping?.allowNullGroup ?? '') !==\n (settings.secondaryGrouping?.allowNullGroup ?? '') ||\n arraysAreDifferent(prevSettings.primaryGrouping?.order, settings.primaryGrouping?.order, { ignoreOrder: true }) ||\n arraysAreDifferent(prevSettings.secondaryGrouping?.order, settings.secondaryGrouping?.order, { ignoreOrder: true }) ||\n prevSettings.facetBy.some((el, idx) => el.value !== settings.facetBy[idx]?.value) ||\n prevSettings.layers.length !== settings.layers.length ||\n prevSettings.layers.some((l, idx) => !l.isEqualForCalculation(settings.layers[idx] as typeof l))\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 { chartSettings, y, keyColumn, facetBy, layers, facetSettings } = this.settings;\n const { yAxis } = chartSettings;\n\n const onlyPositive = this.data.getColumn(y.value).every(v => {\n return v === null || !(Number(v) < 0);\n });\n // console.info('only positive Y:', onlyPositive);\n\n const primaryGrouping = getGroupingData(this.data, this.settings.primaryGrouping);\n const secondaryGrouping = getGroupingData(this.data, this.settings.secondaryGrouping);\n const facetGroupingValues = facetBy.map(column => column.value);\n\n if (!this.settings.primaryGrouping?.unlimitedGroupsCount && primaryGrouping.keys.length > MAX_GROUPS_COUNT) {\n const errorInfo: ErrorInfoPrimaryGroups = {\n type: 'tooManyPrimaryGroups',\n info: { count: primaryGrouping.keys.length, maxCount: MAX_GROUPS_COUNT }\n };\n throw Error(errorInfo.type, { cause: errorInfo });\n }\n if (!this.settings.secondaryGrouping?.unlimitedGroupsCount && secondaryGrouping.keys.length > MAX_GROUPS_COUNT) {\n const errorInfo: ErrorInfoSecondaryGroups = {\n type: 'tooManySecondaryGroups',\n info: { count: secondaryGrouping.keys.length, maxCount: MAX_GROUPS_COUNT }\n };\n throw Error(errorInfo.type, { cause: errorInfo });\n }\n\n // if facet created by more than 1 data column facet key contains all of them, and all keys are used in data grouping;\n // after data preparing we need only complex keys from concatenated strings\n const facetKeyLists: (GroupKey)[][] = facetBy.length\n ? getKeysCombinations(\n facetBy.map(column => getGroupingKeys(this.data, column, facetSettings?.order?.[column.value]))\n )\n : [[NO_GROUPED]];\n\n if (facetKeyLists.length > MAX_FACETS_COUNT) {\n const errorInfo: ErrorInfoFacets = {\n type: 'tooManyFacets',\n info: { count: facetKeyLists.length, maxCount: MAX_FACETS_COUNT }\n };\n throw Error(errorInfo.type, { cause: errorInfo });\n }\n this.data.setGrouping([...facetGroupingValues, primaryGrouping.value, secondaryGrouping.value]);\n const groupingKeys = {\n facet: facetKeyLists,\n primary: (primaryGrouping.value !== null ? primaryGrouping.keys : [NO_GROUPED]) as GroupKey[],\n secondary: (secondaryGrouping.value !== null ? secondaryGrouping.keys : [NO_GROUPED]) as GroupKey[],\n };\n\n const nonEmptyGroupsByFacets = groupingKeys.facet.reduce((res: Record<string, string[]>, facetKey) => {\n res[getFacetStringKey(facetKey)] = groupingKeys.primary.filter(\n primaryKey => this.data.getRowsByGrouping([...facetKey, primaryKey]).length > 0\n ).map(String);\n return res;\n }, {});\n\n const layersData = layers\n .filter(layer => !(layer instanceof StatLayer))\n .map(layer => {\n if (layer instanceof BoxLayer) {\n return getBoxesData(layer, groupingKeys, this.data, y, keyColumn, yAxis);\n }\n if (layer instanceof ViolinLayer) {\n return getViolinsData(layer, groupingKeys, this.data, y, yAxis);\n }\n if (layer instanceof DotLayer) {\n return getDotsData(layer, groupingKeys, this.data, y, yAxis, keyColumn);\n }\n if (layer instanceof LineLayer) {\n return getLinesData(layer, groupingKeys, this.data, y, yAxis);\n }\n if (layer instanceof ErrorBarLayer) {\n return getErrorBarsData(layer, groupingKeys, this.data, y, yAxis);\n }\n if (layer instanceof BarLayer) {\n return getBarsData(layer, groupingKeys, this.data, y, yAxis);\n }\n if (layer instanceof StackedBarLayer) {\n return getStackedBarsData(layer, groupingKeys, this.data, y);\n }\n if (layer instanceof StackedAreaLayer) {\n return getStackedAreaData(layer, groupingKeys, this.data, y);\n }\n if (layer instanceof BinnedDotsLayer) {\n return getBinnedDotsData(layer, groupingKeys, this.data, y, yAxis);\n }\n if (layer instanceof PairedPointsLayer) {\n return getPairedPointsData(layer, groupingKeys, this.data, y, yAxis);\n }\n if (layer instanceof SinaLayer) {\n return getSinaData(layer, groupingKeys, this.data, y, yAxis);\n }\n if (layer instanceof LogoPlotLayer) {\n return getLogoData(layer, groupingKeys, this.data, y);\n }\n throw new Error('Unknown layer type');\n });\n const statsLayersData = layers\n .filter(layer => layer instanceof StatLayer)\n .map(layer => {\n if (primaryGrouping.value === null) {\n throw new Error('Cannot calculate p-value without data grouping');\n }\n return getStatsData(layer as StatLayer, groupingKeys.facet, groupingKeys.primary, y, this.data);\n });\n this.calculatedData = {\n layersData,\n statsLayersData,\n primaryGrouping,\n secondaryGrouping,\n facetKeyLists,\n nonEmptyGroupsByFacets,\n onlyPositive,\n };\n }\n\n _updateAesInData() {\n if (this.calculatedData === null) {\n return;\n }\n const { layers, facetBy, primaryGrouping, secondaryGrouping, facetSettings } = this.settings;\n\n // updating aes in layers (except for stat layers with p-value), layers data is not recalculating\n const noStatLayers = layers.filter(layer => !(layer instanceof StatLayer));\n for (let i = 0; i < noStatLayers.length; i++) {\n const layer = noStatLayers[i];\n if ('aes' in layer) {\n this.calculatedData.layersData[i].aes = layer.aes;\n }\n }\n\n // updating grouping to update linked aes\n this.calculatedData.primaryGrouping = getGroupingData(this.data, primaryGrouping);\n this.calculatedData.secondaryGrouping = getGroupingData(this.data, secondaryGrouping);\n\n // updating for possibly changed facetSettings.order\n this.calculatedData.facetKeyLists = facetBy.length\n ? getKeysCombinations(\n facetBy.map(column => getGroupingKeys(this.data, column, facetSettings?.order?.[column.value]))\n )\n : [[NO_GROUPED]];\n }\n\n _updateChart() {\n if (!this.calculatedData) {\n return;\n }\n const { id, chartSettings, keyColumn, facetSettings } = this.settings;\n\n const facetKeys = this.calculatedData.facetKeyLists.map(getFacetStringKey);\n const facetLabels = this.calculatedData.facetKeyLists.map(v => v.map(v => v === NO_GROUPED ? 'null' : v)) as string[][];\n this.chartRenderer.render(\n this.data,\n id,\n chartSettings,\n this.calculatedData.primaryGrouping,\n this.calculatedData.secondaryGrouping,\n facetSettings,\n facetKeys,\n facetLabels,\n this.calculatedData.layersData,\n this.calculatedData.statsLayersData,\n keyColumn,\n this.calculatedData.nonEmptyGroupsByFacets,\n this.calculatedData.onlyPositive,\n this.onTooltipHintSwitch\n );\n }\n}\n"],"names":["getGroupingKeys","data","column","order","groupingColumn","availableKeys","intersection","getKeysCombinations","keysLists","result","keys","nextResult","key","resultItem","getGroupingData","grouping","groupingColumnId","groupingColumnLabelId","categories","getValueLabel","category","res","ChartDiscrete","AbstractChart","settings","eventHandlers","__publicField","ChartRenderer","DiscreteSettingsImpl","node","err","isErrorInfo","getUnknownErrorInfo","previousSettings","previousData","_field","_value","renderToString","prevSettings","_a","_b","_c","_d","_e","_f","_g","_h","arraysAreDifferent","_i","_j","_k","_l","el","idx","l","prevData","prevKeys","chartSettings","y","keyColumn","facetBy","layers","facetSettings","yAxis","onlyPositive","v","primaryGrouping","secondaryGrouping","facetGroupingValues","MAX_GROUPS_COUNT","errorInfo","facetKeyLists","NO_GROUPED","MAX_FACETS_COUNT","groupingKeys","nonEmptyGroupsByFacets","facetKey","getFacetStringKey","primaryKey","layersData","layer","StatLayer","BoxLayer","getBoxesData","ViolinLayer","getViolinsData","DotLayer","getDotsData","LineLayer","getLinesData","ErrorBarLayer","getErrorBarsData","BarLayer","getBarsData","StackedBarLayer","getStackedBarsData","StackedAreaLayer","getStackedAreaData","BinnedDotsLayer","getBinnedDotsData","PairedPointsLayer","getPairedPointsData","SinaLayer","getSinaData","LogoPlotLayer","getLogoData","statsLayersData","getStatsData","noStatLayers","i","id","facetKeys","facetLabels"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8CA,SAASA,EAAgBC,GAAiBC,GAAoBC,IAA4B,MAAM;AAC5F,QAAMC,IAAiBF,EAAO,OACxBG,IAAgBJ,EAAK,oBAAoBG,CAAc;AAC7D,SAAOE,EAAAA,aAAaH,KAASE,GAAeA,CAAa,EAAE,IAAI,MAAM;AACzE;AAGA,SAASE,EAAoBC,GAAuB;AAChD,MAAI,CAACA,EAAU;AACX,WAAO,CAAA;AAEX,MAAIC,IAAqB,CAAC,EAAE;AAC5B,SAAAD,EAAU,QAAQ,CAAAE,MAAQ;AACtB,UAAMC,IAAyB,CAAA;AAC/B,IAAAD,EAAK,QAAQ,CAAAE,MAAO;AAChB,MAAAD,EAAW,KAAK,GAAGF,EAAO,IAAI,CAAAI,MAAc,CAAC,GAAGA,GAAYD,CAAG,CAAC,CAAC;AAAA,IACrE,CAAC,GACDH,IAASE;AAAA,EACb,CAAC,GACMF;AACX;AAEA,SAASK,EACLb,GACAc,GACY;AACZ,MAAI,CAACA;AACD,WAAO;AAAA,MACH,MAAM,CAAC,MAAM;AAAA,MACb,OAAO;AAAA,MACP,OAAO;AAAA,MACP,aAAa,EAAE,MAAM,GAAA;AAAA,MACrB,cAAc;AAAA,IAAA;AAItB,QAAMC,IAAmBD,EAAS,WAAW,OACvCE,IAAwBF,EAAS,WAAW,aAC5CG,IAAajB,EAAK,oBAAoBe,GAAkB,EAAK,GAC7DG,IAAgB,CAACC,MACZH,IACD;AAAA,IACEhB,EAAK;AAAA,MACDgB;AAAA,MACAhB,EAAK,0BAA0Be,GAAkBI,CAAQ;AAAA,IAAA;AAAA,EAC7D,IAEFA,GAGJV,IAAOT,EAAK,oBAAoBe,GAAkB,CAACD,EAAS,cAAc;AAGhF,SAAO;AAAA,IACH,MAHgBA,EAAS,UAAU,SAAYL,IAAOJ,eAAaS,EAAS,MAAM,IAAI,MAAM,GAAGL,CAAI;AAAA,IAInG,OAAOM;AAAA,IACP,OAAOD,EAAS,WAAW,SAASC;AAAA,IACpC,aAAaE,EAAW,OAAO,CAACG,GAA6BD,OACzDC,EAAID,CAAQ,IAAID,EAAcC,CAAQ,GAC/BC,IACR,CAAA,CAAE;AAAA,IACL,cAAcN,EAAS,gBAAgB;AAAA,EAAA;AAE/C;AAEO,MAAMO,WAAsBC,EAAc;AAAA,EAe7C,YAAYtB,GAAiBuB,GAA4BC,GAAuC;AAC5F,UAAMxB,GAAMuB,CAAQ;AAfxB,IAAAE,EAAA;AACA,IAAAA,EAAA,uBAAgB,IAAIC,EAAA;AAEpB,IAAAD,EAAA,6BAA4C,MAAA;AAAA;AAC5C,IAAAA,EAAA,wBAQW;AAKP,SAAK,WAAW,IAAIE,EAAqBJ,CAAQ,GAC7CC,MACA,KAAK,sBAAsBA,EAAc,CAAC;AAAA,EAElD;AAAA,EAEA,MAAMI,GAAmB;AACrB,QAAI;AACA,WAAK,cAAc,KAAKA,CAAI,GAC5B,KAAK,YAAA,GACL,KAAK,aAAA,GACL,KAAK,WAAW,IAChB,KAAK,YAAY;AAAA,IACrB,SAASC,GAAK;AACV,WAAK,WAAW,IACZA,aAAe,UACf,KAAK,YAAYC,EAAYD,EAAI,KAAK,IAAIA,EAAI,QAAQE,EAAoBF,CAAG,GAC7E,KAAK,cAAc,YAAYA,EAAI,OAAiB,GACpD,QAAQ,MAAMA,CAAG;AAAA,IAEzB;AAAA,EACJ;AAAA,EAEA,UAAU;AACN,SAAK,cAAc,MAAA;AAAA,EACvB;AAAA,EAEA,sBAAsB7B,GAAiBuB,GAA4B;AAC/D,QAAI;AACA,YAAMS,IAAmB,KAAK,UACxBC,IAAe,KAAK;AAC1B,WAAK,WAAW,IAAIN,EAAqBJ,CAAQ,GACjD,KAAK,OAAOvB,GAER,KAAK,oCAAoCgC,GAAkB,KAAK,QAAQ,KACxE,KAAK,gCAAgCC,GAAc,KAAK,IAAI,IAE5D,KAAK,YAAA,IAEL,KAAK,iBAAA,GAET,KAAK,aAAA,GACL,KAAK,WAAW,IAChB,KAAK,YAAY;AAAA,IACrB,SAASJ,GAAK;AACV,WAAK,WAAW,IACZA,aAAe,UACf,KAAK,YAAYC,EAAYD,EAAI,KAAK,IAAIA,EAAI,QAAQE,EAAoBF,CAAG,GAC7E,KAAK,cAAc,YAAYA,EAAI,OAAiB,GACpD,QAAQ,MAAMA,CAAG;AAAA,IAEzB;AAAA,EACJ;AAAA,EAEA,iBAAiBK,GAAgBC,GAAiB;AAC9C,YAAQ,KAAK,6BAA6B;AAAA,EAC9C;AAAA,EAEA,SAAiB;AACb,gBAAK,aAAA,GACEC,iBAAe,KAAK,cAAc,SAAS;AAAA,EACtD;AAAA,EAEA,oCAAoCC,GAAoCd,GAAgC;;AACpG,WACIc,EAAa,cAAc,MAAM,UAAUd,EAAS,cAAc,MAAM,YACvEe,IAAAD,EAAa,oBAAb,gBAAAC,EAA8B,WAAW,UAAS,WAClDC,IAAAhB,EAAS,oBAAT,gBAAAgB,EAA0B,WAAW,UAAS,UAC9CC,IAAAH,EAAa,sBAAb,gBAAAG,EAAgC,WAAW,UAAS,WACpDC,IAAAlB,EAAS,sBAAT,gBAAAkB,EAA4B,WAAW,UAAS,UAChDC,IAAAL,EAAa,oBAAb,gBAAAK,EAA8B,mBAAkB,WAChDC,IAAApB,EAAS,oBAAT,gBAAAoB,EAA0B,mBAAkB,UAC5CC,IAAAP,EAAa,sBAAb,gBAAAO,EAAgC,mBAAkB,WAClDC,IAAAtB,EAAS,sBAAT,gBAAAsB,EAA4B,mBAAkB,OAC/CC,GAAmBC,IAAAV,EAAa,oBAAb,gBAAAU,EAA8B,QAAOC,IAAAzB,EAAS,oBAAT,gBAAAyB,EAA0B,OAAO,EAAE,aAAa,IAAM,KAC9GF,GAAmBG,IAAAZ,EAAa,sBAAb,gBAAAY,EAAgC,QAAOC,IAAA3B,EAAS,sBAAT,gBAAA2B,EAA4B,OAAO,EAAE,aAAa,GAAA,CAAM,KAClHb,EAAa,QAAQ,KAAK,CAACc,GAAIC,MAAA;;AAAQ,aAAAD,EAAG,YAAUb,IAAAf,EAAS,QAAQ6B,CAAG,MAApB,gBAAAd,EAAuB;AAAA,KAAK,KAChFD,EAAa,OAAO,WAAWd,EAAS,OAAO,UAC/Cc,EAAa,OAAO,KAAK,CAACgB,GAAGD,MAAQ,CAACC,EAAE,sBAAsB9B,EAAS,OAAO6B,CAAG,CAAa,CAAC;AAAA,EAEvG;AAAA,EAEA,gCAAgCE,GAAqBtD,GAAiB;AAClE,UAAMuD,IAAW,OAAO,KAAKD,EAAS,IAAI,GACpC7C,IAAO,OAAO,KAAKT,EAAK,IAAI;AAClC,WACIsD,EAAS,OAAOtD,EAAK,MACrBuD,EAAS,WAAW9C,EAAK,UACzB8C,EAAS,KAAK;;AAAO,aAAAD,EAAS,KAAK3C,CAAG,EAAE,aAAW2B,IAAAtC,EAAK,KAAKW,CAAG,MAAb,gBAAA2B,EAAgB;AAAA,KAAM;AAAA,EAEjF;AAAA,EAEA,cAAc;;AACV,UAAM,EAAE,eAAAkB,GAAe,GAAAC,GAAG,WAAAC,GAAW,SAAAC,GAAS,QAAAC,GAAQ,eAAAC,MAAkB,KAAK,UACvE,EAAE,OAAAC,MAAUN,GAEZO,IAAe,KAAK,KAAK,UAAUN,EAAE,KAAK,EAAE,MAAM,CAAAO,MAC7CA,MAAM,QAAQ,EAAE,OAAOA,CAAC,IAAI,EACtC,GAGKC,IAAkBpD,EAAgB,KAAK,MAAM,KAAK,SAAS,eAAe,GAC1EqD,IAAoBrD,EAAgB,KAAK,MAAM,KAAK,SAAS,iBAAiB,GAC9EsD,IAAsBR,EAAQ,IAAI,CAAA1D,MAAUA,EAAO,KAAK;AAE9D,QAAI,GAACqC,IAAA,KAAK,SAAS,oBAAd,QAAAA,EAA+B,yBAAwB2B,EAAgB,KAAK,SAASG,GAAkB;AACxG,YAAMC,IAAoC;AAAA,QACtC,MAAM;AAAA,QACN,MAAM,EAAE,OAAOJ,EAAgB,KAAK,QAAQ,UAAUG,EAAA;AAAA,MAAiB;AAE3E,YAAM,MAAMC,EAAU,MAAM,EAAE,OAAOA,GAAW;AAAA,IACpD;AACA,QAAI,GAAC9B,IAAA,KAAK,SAAS,sBAAd,QAAAA,EAAiC,yBAAwB2B,EAAkB,KAAK,SAASE,GAAkB;AAC5G,YAAMC,IAAsC;AAAA,QACxC,MAAM;AAAA,QACN,MAAM,EAAE,OAAOH,EAAkB,KAAK,QAAQ,UAAUE,EAAA;AAAA,MAAiB;AAE7E,YAAM,MAAMC,EAAU,MAAM,EAAE,OAAOA,GAAW;AAAA,IACpD;AAIA,UAAMC,IAAgCX,EAAQ,SACxCrD;AAAA,MACEqD,EAAQ,IAAI,CAAA1D,MAAA;;AAAU,eAAAF,EAAgB,KAAK,MAAME,IAAQqC,IAAAuB,KAAA,gBAAAA,EAAe,UAAf,gBAAAvB,EAAuBrC,EAAO,MAAM;AAAA,OAAC;AAAA,IAAA,IAEhG,CAAC,CAACsE,CAAU,CAAC;AAEnB,QAAID,EAAc,SAASE,GAAkB;AACzC,YAAMH,IAA6B;AAAA,QAC/B,MAAM;AAAA,QACN,MAAM,EAAE,OAAOC,EAAc,QAAQ,UAAUE,EAAA;AAAA,MAAiB;AAEpE,YAAM,MAAMH,EAAU,MAAM,EAAE,OAAOA,GAAW;AAAA,IACpD;AACA,SAAK,KAAK,YAAY,CAAC,GAAGF,GAAqBF,EAAgB,OAAOC,EAAkB,KAAK,CAAC;AAC9F,UAAMO,IAAe;AAAA,MACjB,OAAOH;AAAA,MACP,SAAUL,EAAgB,UAAU,OAAOA,EAAgB,OAAO,CAACM,CAAU;AAAA,MAC7E,WAAYL,EAAkB,UAAU,OAAOA,EAAkB,OAAO,CAACK,CAAU;AAAA,IAAA,GAGjFG,IAAyBD,EAAa,MAAM,OAAO,CAACrD,GAA+BuD,OACrFvD,EAAIwD,EAAkBD,CAAQ,CAAC,IAAIF,EAAa,QAAQ;AAAA,MACpD,CAAAI,MAAc,KAAK,KAAK,kBAAkB,CAAC,GAAGF,GAAUE,CAAU,CAAC,EAAE,SAAS;AAAA,IAAA,EAChF,IAAI,MAAM,GACLzD,IACR,CAAA,CAAE,GAEC0D,IAAalB,EACd,OAAO,CAAAmB,MAAS,EAAEA,aAAiBC,EAAU,EAC7C,IAAI,CAAAD,MAAS;AACV,UAAIA,aAAiBE;AACjB,eAAOC,GAAaH,GAAON,GAAc,KAAK,MAAMhB,GAAGC,GAAWI,CAAK;AAE3E,UAAIiB,aAAiBI;AACjB,eAAOC,GAAeL,GAAON,GAAc,KAAK,MAAMhB,GAAGK,CAAK;AAElE,UAAIiB,aAAiBM;AACjB,eAAOC,GAAYP,GAAON,GAAc,KAAK,MAAMhB,GAAGK,GAAOJ,CAAS;AAE1E,UAAIqB,aAAiBQ;AACjB,eAAOC,GAAaT,GAAON,GAAc,KAAK,MAAMhB,GAAGK,CAAK;AAEhE,UAAIiB,aAAiBU;AACjB,eAAOC,GAAiBX,GAAON,GAAc,KAAK,MAAMhB,GAAGK,CAAK;AAEpE,UAAIiB,aAAiBY;AACjB,eAAOC,GAAYb,GAAON,GAAc,KAAK,MAAMhB,GAAGK,CAAK;AAE/D,UAAIiB,aAAiBc;AACjB,eAAOC,GAAmBf,GAAON,GAAc,KAAK,MAAMhB,CAAC;AAE/D,UAAIsB,aAAiBgB;AACjB,eAAOC,GAAmBjB,GAAON,GAAc,KAAK,MAAMhB,CAAC;AAE/D,UAAIsB,aAAiBkB;AACjB,eAAOC,GAAkBnB,GAAON,GAAc,KAAK,MAAMhB,GAAGK,CAAK;AAErE,UAAIiB,aAAiBoB;AACjB,eAAOC,GAAoBrB,GAAON,GAAc,KAAK,MAAMhB,GAAGK,CAAK;AAEvE,UAAIiB,aAAiBsB;AACjB,eAAOC,GAAYvB,GAAON,GAAc,KAAK,MAAMhB,GAAGK,CAAK;AAE/D,UAAIiB,aAAiBwB;AACjB,eAAOC,GAAYzB,GAAON,GAAc,KAAK,MAAMhB,CAAC;AAExD,YAAM,IAAI,MAAM,oBAAoB;AAAA,IACxC,CAAC,GACCgD,IAAkB7C,EACnB,OAAO,CAAAmB,MAASA,aAAiBC,CAAS,EAC1C,IAAI,CAAAD,MAAS;AACV,UAAId,EAAgB,UAAU;AAC1B,cAAM,IAAI,MAAM,gDAAgD;AAEpE,aAAOyC,GAAa3B,GAAoBN,EAAa,OAAOA,EAAa,SAAShB,GAAG,KAAK,IAAI;AAAA,IAClG,CAAC;AACL,SAAK,iBAAiB;AAAA,MAClB,YAAAqB;AAAA,MACA,iBAAA2B;AAAA,MACA,iBAAAxC;AAAA,MACA,mBAAAC;AAAA,MACA,eAAAI;AAAA,MACA,wBAAAI;AAAA,MACA,cAAAX;AAAA,IAAA;AAAA,EAER;AAAA,EAEA,mBAAmB;AACf,QAAI,KAAK,mBAAmB;AACxB;AAEJ,UAAM,EAAE,QAAAH,GAAQ,SAAAD,GAAS,iBAAAM,GAAiB,mBAAAC,GAAmB,eAAAL,EAAA,IAAkB,KAAK,UAG9E8C,IAAe/C,EAAO,OAAO,CAAAmB,MAAS,EAAEA,aAAiBC,EAAU;AACzE,aAAS4B,IAAI,GAAGA,IAAID,EAAa,QAAQC,KAAK;AAC1C,YAAM7B,IAAQ4B,EAAaC,CAAC;AAC5B,MAAI,SAAS7B,MACT,KAAK,eAAe,WAAW6B,CAAC,EAAE,MAAM7B,EAAM;AAAA,IAEtD;AAGA,SAAK,eAAe,kBAAkBlE,EAAgB,KAAK,MAAMoD,CAAe,GAChF,KAAK,eAAe,oBAAoBpD,EAAgB,KAAK,MAAMqD,CAAiB,GAGpF,KAAK,eAAe,gBAAgBP,EAAQ,SACtCrD;AAAA,MACEqD,EAAQ,IAAI,CAAA1D,MAAA;;AAAU,eAAAF,EAAgB,KAAK,MAAME,IAAQqC,IAAAuB,KAAA,gBAAAA,EAAe,UAAf,gBAAAvB,EAAuBrC,EAAO,MAAM;AAAA,OAAC;AAAA,IAAA,IAEhG,CAAC,CAACsE,CAAU,CAAC;AAAA,EACvB;AAAA,EAEA,eAAe;AACX,QAAI,CAAC,KAAK;AACN;AAEJ,UAAM,EAAE,IAAAsC,GAAI,eAAArD,GAAe,WAAAE,GAAW,eAAAG,EAAA,IAAkB,KAAK,UAEvDiD,IAAY,KAAK,eAAe,cAAc,IAAIlC,CAAiB,GACnEmC,IAAc,KAAK,eAAe,cAAc,IAAI,CAAA/C,MAAKA,EAAE,IAAI,CAAAA,MAAKA,MAAMO,IAAa,SAASP,CAAC,CAAC;AACxG,SAAK,cAAc;AAAA,MACf,KAAK;AAAA,MACL6C;AAAA,MACArD;AAAA,MACA,KAAK,eAAe;AAAA,MACpB,KAAK,eAAe;AAAA,MACpBK;AAAA,MACAiD;AAAA,MACAC;AAAA,MACA,KAAK,eAAe;AAAA,MACpB,KAAK,eAAe;AAAA,MACpBrD;AAAA,MACA,KAAK,eAAe;AAAA,MACpB,KAAK,eAAe;AAAA,MACpB,KAAK;AAAA,IAAA;AAAA,EAEb;AACJ;"}
|
|
@@ -1,41 +1,44 @@
|
|
|
1
1
|
import { exhaustive as d } from "../../utils/index.js";
|
|
2
2
|
import { getFacetStringKey as x } from "../utils/getFacetStringKey.js";
|
|
3
|
-
import S from "../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/
|
|
4
|
-
import
|
|
5
|
-
import M from "../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/
|
|
6
|
-
import w from "../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/
|
|
7
|
-
|
|
3
|
+
import S from "../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/sum.js";
|
|
4
|
+
import b from "../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/mean.js";
|
|
5
|
+
import { quantileSorted as M } from "../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/quantile.js";
|
|
6
|
+
import w from "../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/min.js";
|
|
7
|
+
import B from "../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/max.js";
|
|
8
|
+
function E(t, o, n) {
|
|
8
9
|
if (t.length === 0)
|
|
9
10
|
throw Error("Unable to create bar on empty data");
|
|
10
|
-
const i = (r) =>
|
|
11
|
-
switch (
|
|
11
|
+
const i = (r) => o === "log" ? Math.log10(r) : r, c = (r) => o === "log" ? Math.pow(10, r) : r;
|
|
12
|
+
switch (n) {
|
|
12
13
|
case "max":
|
|
13
|
-
return
|
|
14
|
+
return B(t) ?? t[0];
|
|
14
15
|
case "min":
|
|
15
|
-
return
|
|
16
|
+
return w(t) ?? t[0];
|
|
16
17
|
case "median": {
|
|
17
18
|
const r = t.map(i).sort((a, e) => a - e);
|
|
18
|
-
return c(
|
|
19
|
+
return c(M(r, 0.5));
|
|
19
20
|
}
|
|
20
21
|
case "mean":
|
|
21
|
-
return
|
|
22
|
+
return b(t) ?? t[0];
|
|
23
|
+
case "sum":
|
|
24
|
+
return S(t);
|
|
22
25
|
default:
|
|
23
|
-
d(
|
|
26
|
+
d(n, `Unknown bar height function ${n}`);
|
|
24
27
|
}
|
|
25
28
|
}
|
|
26
|
-
function
|
|
29
|
+
function V(t, o, n, i, c) {
|
|
27
30
|
let r = -1 / 0, a = 1 / 0;
|
|
28
31
|
return {
|
|
29
32
|
type: "bar",
|
|
30
|
-
geoms:
|
|
31
|
-
const
|
|
32
|
-
return e[
|
|
33
|
-
|
|
34
|
-
const
|
|
35
|
-
if (!
|
|
33
|
+
geoms: o.facet.reduce((e, f) => {
|
|
34
|
+
const s = x(f);
|
|
35
|
+
return e[s] = [], o.primary.forEach((u) => {
|
|
36
|
+
o.secondary.forEach((p) => {
|
|
37
|
+
const h = n.getRowsByGrouping([...f, u, p]);
|
|
38
|
+
if (!h.length)
|
|
36
39
|
return;
|
|
37
|
-
const
|
|
38
|
-
r = Math.max(r, m, 0), a = Math.min(a, m, 0), e[
|
|
40
|
+
const g = Array.from(h).map((l) => n.getColumnValue(i.value, l)), m = E(g, c.scale, t.height);
|
|
41
|
+
r = Math.max(r, m, 0), a = Math.min(a, m, 0), e[s].push({
|
|
39
42
|
key: `bar_${String(u)}_${String(p)}`,
|
|
40
43
|
value: m,
|
|
41
44
|
primaryGrouping: u,
|
|
@@ -50,6 +53,6 @@ function C(t, n, o, i, c) {
|
|
|
50
53
|
};
|
|
51
54
|
}
|
|
52
55
|
export {
|
|
53
|
-
|
|
56
|
+
V as getBarsData
|
|
54
57
|
};
|
|
55
58
|
//# sourceMappingURL=bar.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bar.js","sources":["../../../src/discrete/layers/bar.ts"],"sourcesContent":["import { max as d3Max, min as d3Min, mean, quantileSorted } from 'd3-array';\nimport type { DataFrame, GroupKey } from '../../DataFrame';\nimport type { ColumnName } from '../../types';\nimport { exhaustive } from '../../utils';\nimport type { BarLayer, DiscreteSettingsImpl } from '../DiscreteSettingsImpl';\nimport { getFacetStringKey } from '../utils/getFacetStringKey';\nimport type { BarsData } from './types';\n\nfunction calculateBarUpperBound(\n values: number[],\n scale: 'linear' | 'log',\n heightFunc:
|
|
1
|
+
{"version":3,"file":"bar.js","sources":["../../../src/discrete/layers/bar.ts"],"sourcesContent":["import { max as d3Max, min as d3Min, mean, quantileSorted, sum } from 'd3-array';\nimport type { DataFrame, GroupKey } from '../../DataFrame';\nimport type { AggregationMethod, ColumnName } from '../../types';\nimport { exhaustive } from '../../utils';\nimport type { BarLayer, DiscreteSettingsImpl } from '../DiscreteSettingsImpl';\nimport { getFacetStringKey } from '../utils/getFacetStringKey';\nimport type { BarsData } from './types';\n\nfunction calculateBarUpperBound(\n values: number[],\n scale: 'linear' | 'log',\n heightFunc: AggregationMethod\n):number {\n if (values.length === 0) {\n throw Error('Unable to create bar on empty data');\n }\n const convertToScale = (v: number) => (scale === 'log' ? Math.log10(v) : v);\n const convertFromScale = (v: number) => (scale === 'log' ? Math.pow(10, v) : v);\n\n switch (heightFunc) {\n case 'max':\n return d3Max(values) ?? values[0];\n case 'min':\n return d3Min(values) ?? values[0];\n case 'median': {\n const valuesSortedConverted = values\n .map(convertToScale)\n .sort((a, b) => a - b);\n return convertFromScale(quantileSorted(valuesSortedConverted, 0.5) as number);\n }\n case 'mean': {\n return mean(values) ?? values[0];\n }\n case 'sum': {\n return sum(values) as number;\n }\n default: exhaustive(heightFunc, `Unknown bar height function ${heightFunc}`);\n }\n}\n\nexport type Bar = {\n key: string;\n value: number;\n primaryGrouping: string;\n secondaryGrouping: string;\n boundsY: {\n min: number;\n max: number;\n };\n};\n\nexport function getBarsData(\n layer: BarLayer,\n groupingKeys: {\n facet: GroupKey[][],\n primary: GroupKey[],\n secondary: GroupKey[]\n },\n data: DataFrame,\n y: ColumnName,\n yAxis: DiscreteSettingsImpl['chartSettings']['yAxis']\n): BarsData {\n let maxY = -Infinity;\n let minY = Infinity;\n\n return {\n type: 'bar',\n geoms: groupingKeys.facet.reduce((res: Record<string, Bar[]>, facetKey) => {\n const strFacetKey = getFacetStringKey(facetKey);\n res[strFacetKey] = [];\n groupingKeys.primary.forEach(primaryKey => {\n groupingKeys.secondary.forEach(secondaryKey => {\n const idx = data.getRowsByGrouping([...facetKey, primaryKey, secondaryKey]);\n if (!idx.length) {\n return;\n }\n const values = Array.from(idx).map(i => data.getColumnValue(y.value, i) as number);\n const upperBoundValue = calculateBarUpperBound(values, yAxis.scale, layer.height);\n maxY = Math.max(maxY, upperBoundValue, 0);\n minY = Math.min(minY, upperBoundValue, 0);\n res[strFacetKey].push({\n key: `bar_${String(primaryKey)}_${String(secondaryKey)}`,\n value: upperBoundValue,\n primaryGrouping: primaryKey,\n secondaryGrouping: secondaryKey,\n boundsY: {min: Math.min(0, upperBoundValue), max: Math.max(0, upperBoundValue)},\n } as Bar);\n });\n });\n return res;\n }, {}),\n meta: {minY, maxY},\n aes: layer.aes,\n };\n}\n"],"names":["calculateBarUpperBound","values","scale","heightFunc","convertToScale","v","convertFromScale","d3Max","d3Min","valuesSortedConverted","b","quantileSorted","mean","sum","exhaustive","getBarsData","layer","groupingKeys","data","y","yAxis","maxY","minY","res","facetKey","strFacetKey","getFacetStringKey","primaryKey","secondaryKey","idx","i","upperBoundValue"],"mappings":";;;;;;;AAQA,SAASA,EACLC,GACAC,GACAC,GACK;AACL,MAAIF,EAAO,WAAW;AAClB,UAAM,MAAM,oCAAoC;AAEpD,QAAMG,IAAiB,CAACC,MAAeH,MAAU,QAAQ,KAAK,MAAMG,CAAC,IAAIA,GACnEC,IAAmB,CAACD,MAAeH,MAAU,QAAQ,KAAK,IAAI,IAAIG,CAAC,IAAIA;AAE7E,UAAQF,GAAA;AAAA,IACJ,KAAK;AACD,aAAOI,EAAMN,CAAM,KAAKA,EAAO,CAAC;AAAA,IACpC,KAAK;AACD,aAAOO,EAAMP,CAAM,KAAKA,EAAO,CAAC;AAAA,IACpC,KAAK,UAAU;AACX,YAAMQ,IAAwBR,EACzB,IAAIG,CAAc,EAClB,KAAK,CAAC,GAAGM,MAAM,IAAIA,CAAC;AACzB,aAAOJ,EAAiBK,EAAeF,GAAuB,GAAG,CAAW;AAAA,IAChF;AAAA,IACA,KAAK;AACD,aAAOG,EAAKX,CAAM,KAAKA,EAAO,CAAC;AAAA,IAEnC,KAAK;AACD,aAAOY,EAAIZ,CAAM;AAAA,IAErB;AAAS,MAAAa,EAAWX,GAAY,+BAA+BA,CAAU,EAAE;AAAA,EAAA;AAEnF;AAaO,SAASY,EACZC,GACAC,GAKAC,GACAC,GACAC,GACQ;AACR,MAAIC,IAAO,QACPC,IAAO;AAEX,SAAO;AAAA,IACH,MAAM;AAAA,IACN,OAAOL,EAAa,MAAM,OAAO,CAACM,GAA4BC,MAAa;AACvE,YAAMC,IAAcC,EAAkBF,CAAQ;AAC9C,aAAAD,EAAIE,CAAW,IAAI,CAAA,GACnBR,EAAa,QAAQ,QAAQ,CAAAU,MAAc;AACvC,QAAAV,EAAa,UAAU,QAAQ,CAAAW,MAAgB;AAC3C,gBAAMC,IAAMX,EAAK,kBAAkB,CAAC,GAAGM,GAAUG,GAAYC,CAAY,CAAC;AAC1E,cAAI,CAACC,EAAI;AACL;AAEJ,gBAAM5B,IAAS,MAAM,KAAK4B,CAAG,EAAE,IAAI,CAAAC,MAAKZ,EAAK,eAAeC,EAAE,OAAOW,CAAC,CAAW,GAC3EC,IAAkB/B,EAAuBC,GAAQmB,EAAM,OAAOJ,EAAM,MAAM;AAChF,UAAAK,IAAO,KAAK,IAAIA,GAAMU,GAAiB,CAAC,GACxCT,IAAO,KAAK,IAAIA,GAAMS,GAAiB,CAAC,GACxCR,EAAIE,CAAW,EAAE,KAAK;AAAA,YAClB,KAAK,OAAO,OAAOE,CAAU,CAAC,IAAI,OAAOC,CAAY,CAAC;AAAA,YACtD,OAAOG;AAAA,YACP,iBAAiBJ;AAAA,YACjB,mBAAmBC;AAAA,YACnB,SAAS,EAAC,KAAK,KAAK,IAAI,GAAGG,CAAe,GAAG,KAAK,KAAK,IAAI,GAAGA,CAAe,EAAA;AAAA,UAAC,CAC1E;AAAA,QACZ,CAAC;AAAA,MACL,CAAC,GACMR;AAAA,IACX,GAAG,CAAA,CAAE;AAAA,IACL,MAAM,EAAC,MAAAD,GAAM,MAAAD,EAAA;AAAA,IACb,KAAKL,EAAM;AAAA,EAAA;AAEnB;"}
|
|
@@ -1,67 +1,76 @@
|
|
|
1
|
-
import { getFacetStringKey as
|
|
2
|
-
import { exhaustive as
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
import { getFacetStringKey as q } from "../utils/getFacetStringKey.js";
|
|
2
|
+
import { exhaustive as I } from "../../utils/index.js";
|
|
3
|
+
import v from "../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/quantile.js";
|
|
4
|
+
import l from "../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/mean.js";
|
|
5
|
+
import D from "../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/min.js";
|
|
6
|
+
import F from "../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/max.js";
|
|
7
|
+
import G from "../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/sum.js";
|
|
8
|
+
function V(n) {
|
|
9
|
+
const t = l(n);
|
|
10
|
+
return l(n.map((e) => Math.pow(e - t, 2)));
|
|
8
11
|
}
|
|
9
|
-
function s(
|
|
10
|
-
return Math.sqrt(
|
|
12
|
+
function s(n) {
|
|
13
|
+
return Math.sqrt(V(n));
|
|
11
14
|
}
|
|
12
|
-
function
|
|
13
|
-
return s(
|
|
15
|
+
function Y(n) {
|
|
16
|
+
return s(n) / Math.sqrt(n.length);
|
|
14
17
|
}
|
|
15
|
-
function
|
|
16
|
-
return 1.96 * s(
|
|
18
|
+
function g(n) {
|
|
19
|
+
return 1.96 * s(n);
|
|
17
20
|
}
|
|
18
|
-
function
|
|
19
|
-
if (
|
|
20
|
-
return
|
|
21
|
-
if (
|
|
22
|
-
return
|
|
23
|
-
|
|
21
|
+
function B(n, t) {
|
|
22
|
+
if (t === "median")
|
|
23
|
+
return v(n, 0.5);
|
|
24
|
+
if (t === "mean")
|
|
25
|
+
return l(n);
|
|
26
|
+
if (t === "min")
|
|
27
|
+
return D(n);
|
|
28
|
+
if (t === "max")
|
|
29
|
+
return F(n);
|
|
30
|
+
if (t === "sum")
|
|
31
|
+
return G(n);
|
|
32
|
+
I(t, "Unknown points calculation");
|
|
24
33
|
}
|
|
25
|
-
function
|
|
26
|
-
if (
|
|
27
|
-
return s(
|
|
28
|
-
if (
|
|
29
|
-
return
|
|
30
|
-
if (
|
|
31
|
-
return
|
|
32
|
-
|
|
34
|
+
function C(n, t) {
|
|
35
|
+
if (t === "sd")
|
|
36
|
+
return s(n);
|
|
37
|
+
if (t === "se")
|
|
38
|
+
return Y(n);
|
|
39
|
+
if (t === "ci")
|
|
40
|
+
return g(n);
|
|
41
|
+
I(t, "Unknown error interval calculation");
|
|
33
42
|
}
|
|
34
|
-
function
|
|
35
|
-
let
|
|
43
|
+
function H(n, t, e, b, p) {
|
|
44
|
+
let c = 1 / 0, a = -1 / 0;
|
|
36
45
|
return {
|
|
37
46
|
type: "errorbar",
|
|
38
|
-
geoms:
|
|
39
|
-
const
|
|
40
|
-
|
|
41
|
-
const
|
|
42
|
-
return
|
|
43
|
-
|
|
44
|
-
const
|
|
45
|
-
if (!
|
|
47
|
+
geoms: t.facet.reduce((m, S) => {
|
|
48
|
+
const x = q(S);
|
|
49
|
+
m[x] = [];
|
|
50
|
+
const k = (r) => p.scale === "log" ? Math.log10(r) : r, h = (r) => p.scale === "log" ? Math.pow(10, r) : r;
|
|
51
|
+
return t.primary.forEach((r) => {
|
|
52
|
+
t.secondary.forEach((u) => {
|
|
53
|
+
const d = e.getColumnByGrouping([...S, r, u], b.value);
|
|
54
|
+
if (!d.length)
|
|
46
55
|
return;
|
|
47
|
-
const
|
|
48
|
-
o <
|
|
49
|
-
key: `errorbar_${String(r)}_${String(
|
|
56
|
+
const w = d.map(k), f = h(B(w, n.pointsValues)), E = h(C(w, n.interval)), o = f - E, i = f + E;
|
|
57
|
+
o < c && (c = o), i > a && (a = i), m[x].push({
|
|
58
|
+
key: `errorbar_${String(r)}_${String(u)}`,
|
|
50
59
|
primaryGrouping: String(r),
|
|
51
|
-
secondaryGrouping: String(
|
|
52
|
-
value:
|
|
60
|
+
secondaryGrouping: String(u),
|
|
61
|
+
value: f,
|
|
53
62
|
min: o,
|
|
54
|
-
max:
|
|
55
|
-
boundsY: { min: o, max:
|
|
63
|
+
max: i,
|
|
64
|
+
boundsY: { min: o, max: i }
|
|
56
65
|
});
|
|
57
66
|
});
|
|
58
|
-
}),
|
|
67
|
+
}), m;
|
|
59
68
|
}, {}),
|
|
60
|
-
meta: { minY:
|
|
61
|
-
aes:
|
|
69
|
+
meta: { minY: c, maxY: a },
|
|
70
|
+
aes: n.aes
|
|
62
71
|
};
|
|
63
72
|
}
|
|
64
73
|
export {
|
|
65
|
-
|
|
74
|
+
H as getErrorBarsData
|
|
66
75
|
};
|
|
67
76
|
//# sourceMappingURL=errorbars.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errorbars.js","sources":["../../../src/discrete/layers/errorbars.ts"],"sourcesContent":["import type {GroupKey} from '../../DataFrame';\nimport type {DataFrame} from '../../DataFrame';\nimport type {ErrorBarLayer} from '../DiscreteSettingsImpl';\nimport type {DiscreteSettingsImpl} from '../DiscreteSettingsImpl';\nimport type {ErrorBarsData} from './types';\nimport {getFacetStringKey} from '../utils/getFacetStringKey';\nimport type {SummaryErrorValue, SummaryGroupValue} from '../../types';\nimport {exhaustive} from '../../utils';\nimport {mean, quantile} from 'd3-array';\n\nexport interface ErrorBar {\n min: number;\n max: number;\n value: number;\n key: string;\n primaryGrouping: string;\n secondaryGrouping: string;\n boundsY: {\n min: number;\n max: number;\n };\n}\n\nfunction getVariance(arr: number[]) {\n const vMean = mean(arr) as number;\n return mean(arr.map(v => Math.pow(v - vMean, 2))) as number;\n}\nfunction getStandardDeviation(arr: number[]) {\n return Math.sqrt(getVariance(arr));\n}\nfunction getStandardError(arr: number[]) {\n return getStandardDeviation(arr) / Math.sqrt(arr.length);\n}\nfunction getConfidentInterval95(arr: number[]) {\n return 1.96 * getStandardDeviation(arr);\n}\n\nfunction calculateDot(values: number[],
|
|
1
|
+
{"version":3,"file":"errorbars.js","sources":["../../../src/discrete/layers/errorbars.ts"],"sourcesContent":["import type {GroupKey} from '../../DataFrame';\nimport type {DataFrame} from '../../DataFrame';\nimport type {ErrorBarLayer} from '../DiscreteSettingsImpl';\nimport type {DiscreteSettingsImpl} from '../DiscreteSettingsImpl';\nimport type {ErrorBarsData} from './types';\nimport {getFacetStringKey} from '../utils/getFacetStringKey';\nimport type {SummaryErrorValue, SummaryGroupValue} from '../../types';\nimport {exhaustive} from '../../utils';\nimport {max, mean, min, quantile, sum} from 'd3-array';\n\nexport interface ErrorBar {\n min: number;\n max: number;\n value: number;\n key: string;\n primaryGrouping: string;\n secondaryGrouping: string;\n boundsY: {\n min: number;\n max: number;\n };\n}\n\nfunction getVariance(arr: number[]) {\n const vMean = mean(arr) as number;\n return mean(arr.map(v => Math.pow(v - vMean, 2))) as number;\n}\nfunction getStandardDeviation(arr: number[]) {\n return Math.sqrt(getVariance(arr));\n}\nfunction getStandardError(arr: number[]) {\n return getStandardDeviation(arr) / Math.sqrt(arr.length);\n}\nfunction getConfidentInterval95(arr: number[]) {\n return 1.96 * getStandardDeviation(arr);\n}\n\nfunction calculateDot(values: number[], aggregationMethod: SummaryGroupValue): number {\n if (aggregationMethod === 'median') {\n return quantile(values, 0.5) as number;\n }\n if (aggregationMethod === 'mean') {\n return mean(values) as number;\n }\n if (aggregationMethod === 'min') {\n return min(values) as number;\n }\n if (aggregationMethod === 'max') {\n return max(values) as number;\n }\n if (aggregationMethod === 'sum') {\n return sum(values) as number;\n }\n exhaustive(aggregationMethod, 'Unknown points calculation');\n}\nfunction calculateInterval(values: number[], interval: SummaryErrorValue): number {\n if (interval === 'sd') {\n return getStandardDeviation(values);\n }\n if (interval === 'se') {\n return getStandardError(values);\n }\n if (interval === 'ci') {\n return getConfidentInterval95(values);\n }\n exhaustive(interval, 'Unknown error interval calculation');\n}\n\nexport function getErrorBarsData(\n layer: ErrorBarLayer,\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): ErrorBarsData {\n let minY = Infinity;\n let maxY = -Infinity;\n\n return {\n type: 'errorbar',\n geoms: groupingKeys.facet.reduce((res: Record<string, ErrorBar[]>, facetKey) => {\n const strFacetKey = getFacetStringKey(facetKey);\n res[strFacetKey] = [];\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 groupingKeys.secondary.forEach(secondaryKey => {\n const values = data.getColumnByGrouping([...facetKey, primaryKey, secondaryKey], y.value);\n if (!values.length) {\n return;\n }\n const convertedValues = values.map(convertToScale);\n const value = convertFromScale(calculateDot(convertedValues, layer.pointsValues));\n const interval = convertFromScale(calculateInterval(convertedValues, layer.interval));\n const min = value - interval;\n const max = value + interval;\n\n if (min < minY) {\n minY = min;\n }\n if (max > maxY) {\n maxY = max;\n }\n res[strFacetKey].push({\n key: `errorbar_${String(primaryKey)}_${String(secondaryKey)}`,\n primaryGrouping: String(primaryKey),\n secondaryGrouping: String(secondaryKey),\n value,\n min,\n max,\n boundsY: {min, max},\n });\n });\n });\n return res;\n }, {}),\n meta: {minY, maxY},\n aes: layer.aes\n };\n}\n"],"names":["getVariance","arr","vMean","mean","v","getStandardDeviation","getStandardError","getConfidentInterval95","calculateDot","values","aggregationMethod","quantile","min","max","sum","exhaustive","calculateInterval","interval","getErrorBarsData","layer","groupingKeys","data","y","yAxis","minY","maxY","res","facetKey","strFacetKey","getFacetStringKey","convertToScale","convertFromScale","primaryKey","secondaryKey","convertedValues","value"],"mappings":";;;;;;;AAuBA,SAASA,EAAYC,GAAe;AAChC,QAAMC,IAAQC,EAAKF,CAAG;AACtB,SAAOE,EAAKF,EAAI,IAAI,CAAAG,MAAK,KAAK,IAAIA,IAAIF,GAAO,CAAC,CAAC,CAAC;AACpD;AACA,SAASG,EAAqBJ,GAAe;AACzC,SAAO,KAAK,KAAKD,EAAYC,CAAG,CAAC;AACrC;AACA,SAASK,EAAiBL,GAAe;AACrC,SAAOI,EAAqBJ,CAAG,IAAI,KAAK,KAAKA,EAAI,MAAM;AAC3D;AACA,SAASM,EAAuBN,GAAe;AAC3C,SAAO,OAAOI,EAAqBJ,CAAG;AAC1C;AAEA,SAASO,EAAaC,GAAkBC,GAA8C;AAClF,MAAIA,MAAsB;AACtB,WAAOC,EAASF,GAAQ,GAAG;AAE/B,MAAIC,MAAsB;AACtB,WAAOP,EAAKM,CAAM;AAEtB,MAAIC,MAAsB;AACtB,WAAOE,EAAIH,CAAM;AAErB,MAAIC,MAAsB;AACtB,WAAOG,EAAIJ,CAAM;AAErB,MAAIC,MAAsB;AACtB,WAAOI,EAAIL,CAAM;AAErB,EAAAM,EAAWL,GAAmB,4BAA4B;AAC9D;AACA,SAASM,EAAkBP,GAAkBQ,GAAqC;AAC9E,MAAIA,MAAa;AACb,WAAOZ,EAAqBI,CAAM;AAEtC,MAAIQ,MAAa;AACb,WAAOX,EAAiBG,CAAM;AAElC,MAAIQ,MAAa;AACb,WAAOV,EAAuBE,CAAM;AAExC,EAAAM,EAAWE,GAAU,oCAAoC;AAC7D;AAEO,SAASC,EACZC,GACAC,GAKAC,GACAC,GACAC,GACa;AACb,MAAIC,IAAO,OACPC,IAAO;AAEX,SAAO;AAAA,IACH,MAAM;AAAA,IACN,OAAOL,EAAa,MAAM,OAAO,CAACM,GAAiCC,MAAa;AAC5E,YAAMC,IAAcC,EAAkBF,CAAQ;AAC9C,MAAAD,EAAIE,CAAW,IAAI,CAAA;AACnB,YAAME,IAAiB,CAAC1B,MAAemB,EAAM,UAAU,QAAQ,KAAK,MAAMnB,CAAC,IAAIA,GACzE2B,IAAmB,CAAC3B,MAAemB,EAAM,UAAU,QAAQ,KAAK,IAAI,IAAInB,CAAC,IAAIA;AAEnF,aAAAgB,EAAa,QAAQ,QAAQ,CAAAY,MAAc;AACvC,QAAAZ,EAAa,UAAU,QAAQ,CAAAa,MAAgB;AAC3C,gBAAMxB,IAASY,EAAK,oBAAoB,CAAC,GAAGM,GAAUK,GAAYC,CAAY,GAAGX,EAAE,KAAK;AACxF,cAAI,CAACb,EAAO;AACR;AAEJ,gBAAMyB,IAAkBzB,EAAO,IAAIqB,CAAc,GAC3CK,IAAQJ,EAAiBvB,EAAa0B,GAAiBf,EAAM,YAAY,CAAC,GAC1EF,IAAWc,EAAiBf,EAAkBkB,GAAiBf,EAAM,QAAQ,CAAC,GAC9EP,IAAMuB,IAAQlB,GACdJ,IAAMsB,IAAQlB;AAEpB,UAAIL,IAAMY,MACNA,IAAOZ,IAEPC,IAAMY,MACNA,IAAOZ,IAEXa,EAAIE,CAAW,EAAE,KAAK;AAAA,YAClB,KAAK,YAAY,OAAOI,CAAU,CAAC,IAAI,OAAOC,CAAY,CAAC;AAAA,YAC3D,iBAAiB,OAAOD,CAAU;AAAA,YAClC,mBAAmB,OAAOC,CAAY;AAAA,YACtC,OAAAE;AAAA,YACA,KAAAvB;AAAAA,YACA,KAAAC;AAAAA,YACA,SAAS,EAAC,KAAAD,GAAK,KAAAC,EAAAA;AAAAA,UAAG,CACrB;AAAA,QACL,CAAC;AAAA,MACL,CAAC,GACMa;AAAA,IACX,GAAG,CAAA,CAAE;AAAA,IACL,MAAM,EAAC,MAAAF,GAAM,MAAAC,EAAA;AAAA,IACb,KAAKN,EAAM;AAAA,EAAA;AAEnB;"}
|
|
@@ -1,47 +1,56 @@
|
|
|
1
|
-
import { getOutliersBounds as
|
|
1
|
+
import { getOutliersBounds as F } from "../utils/getOutliersBounds.js";
|
|
2
2
|
import "../../utils/TextMeasurer/TextMeasurer.js";
|
|
3
|
-
import { getFacetStringKey as
|
|
4
|
-
import { exhaustive as
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
3
|
+
import { getFacetStringKey as h } from "../utils/getFacetStringKey.js";
|
|
4
|
+
import { exhaustive as B } from "../../utils/index.js";
|
|
5
|
+
import G from "../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/quantile.js";
|
|
6
|
+
import O from "../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/mean.js";
|
|
7
|
+
import k from "../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/min.js";
|
|
8
|
+
import C from "../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/max.js";
|
|
9
|
+
import D from "../../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/sum.js";
|
|
10
|
+
function E(n, t) {
|
|
11
|
+
if (t === "median")
|
|
12
|
+
return G(n, 0.5);
|
|
13
|
+
if (t === "mean")
|
|
14
|
+
return O(n);
|
|
15
|
+
if (t === "min")
|
|
16
|
+
return k(n);
|
|
17
|
+
if (t === "max")
|
|
18
|
+
return C(n);
|
|
19
|
+
if (t === "sum")
|
|
20
|
+
return D(n);
|
|
21
|
+
B(t, `Unknown line points calculation for dot layer: ${t}`);
|
|
13
22
|
}
|
|
14
|
-
function
|
|
15
|
-
let
|
|
23
|
+
function z(n, t, c, a, r) {
|
|
24
|
+
let e = 1 / 0, u = -1 / 0;
|
|
16
25
|
return {
|
|
17
26
|
type: "line",
|
|
18
|
-
geoms:
|
|
19
|
-
const
|
|
20
|
-
|
|
21
|
-
let
|
|
22
|
-
return n.aes.showOutliers || ([
|
|
23
|
-
const
|
|
24
|
-
key: `${String(
|
|
27
|
+
geoms: t.facet.reduce((f, l) => {
|
|
28
|
+
const p = h(l);
|
|
29
|
+
f[p] = [];
|
|
30
|
+
let d = -1 / 0, b = 1 / 0;
|
|
31
|
+
return n.aes.showOutliers || ([d, b] = F(c.getColumnByGrouping([...l], a.value), r.scale)), t.secondary.forEach((x) => {
|
|
32
|
+
const m = {
|
|
33
|
+
key: `${String(x)}`,
|
|
25
34
|
boundsY: {
|
|
26
35
|
min: 1 / 0,
|
|
27
36
|
max: -1 / 0
|
|
28
37
|
},
|
|
29
38
|
dots: {}
|
|
30
|
-
},
|
|
31
|
-
|
|
32
|
-
const
|
|
33
|
-
let
|
|
34
|
-
n.aes.showOutliers || (
|
|
35
|
-
const
|
|
36
|
-
|
|
37
|
-
}),
|
|
38
|
-
}),
|
|
39
|
+
}, S = (o) => r.scale === "log" ? Math.log10(o) : o, w = (o) => r.scale === "log" ? Math.pow(10, o) : o;
|
|
40
|
+
t.primary.forEach((o) => {
|
|
41
|
+
const Y = c.getColumnByGrouping([...l, o, x], a.value);
|
|
42
|
+
let s = Y;
|
|
43
|
+
n.aes.showOutliers || (s = Y.filter((I) => I >= d && I <= b));
|
|
44
|
+
const i = s.length ? w(E(s.map(S), n.pointsValues)) : n.emptyGroupValue;
|
|
45
|
+
m.dots[String(o)] = i, i < e && (e = i), i > u && (u = i), i < m.boundsY.min && (m.boundsY.min = i), i > m.boundsY.max && (m.boundsY.max = i);
|
|
46
|
+
}), f[p].push(m);
|
|
47
|
+
}), f;
|
|
39
48
|
}, {}),
|
|
40
|
-
meta: { minY:
|
|
49
|
+
meta: { minY: e, maxY: u },
|
|
41
50
|
aes: n.aes
|
|
42
51
|
};
|
|
43
52
|
}
|
|
44
53
|
export {
|
|
45
|
-
|
|
54
|
+
z as getLinesData
|
|
46
55
|
};
|
|
47
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[],
|
|
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 {max, mean, min, quantile, sum} 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[], aggregationMethod: LineLayer['pointsValues']): number {\n if (aggregationMethod === 'median') {\n return quantile(values, 0.5) as number;\n }\n if (aggregationMethod === 'mean') {\n return mean(values) as number;\n }\n if (aggregationMethod === 'min') {\n return min(values) as number;\n }\n if (aggregationMethod === 'max') {\n return max(values) as number;\n }\n if (aggregationMethod === 'sum') {\n return sum(values) as number;\n }\n exhaustive(aggregationMethod, `Unknown line points calculation for dot layer: ${aggregationMethod}`);\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 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 let valuesFiltered = values;\n if (!layer.aes.showOutliers) {\n valuesFiltered = values.filter((v) => v >= boundMin && v <= boundMax);\n }\n\n const dot = valuesFiltered.length\n ? convertFromScale(calculateDot(valuesFiltered.map(convertToScale), layer.pointsValues))\n : layer.emptyGroupValue;\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 res[strFacetKey].push(line);\n });\n return res;\n }, {}),\n meta: {minY, maxY},\n aes: layer.aes\n };\n}\n"],"names":["calculateDot","values","aggregationMethod","quantile","mean","min","max","sum","exhaustive","getLinesData","layer","groupingKeys","data","y","yAxis","minY","maxY","res","facetKey","strFacetKey","getFacetStringKey","boundMin","boundMax","getOutliersBounds","secondaryKey","line","convertToScale","v","convertFromScale","primaryKey","valuesFiltered","dot"],"mappings":";;;;;;;;;AAkBA,SAASA,EAAaC,GAAkBC,GAAsD;AAC1F,MAAIA,MAAsB;AACtB,WAAOC,EAASF,GAAQ,GAAG;AAE/B,MAAIC,MAAsB;AACtB,WAAOE,EAAKH,CAAM;AAEtB,MAAIC,MAAsB;AACtB,WAAOG,EAAIJ,CAAM;AAErB,MAAIC,MAAsB;AACtB,WAAOI,EAAIL,CAAM;AAErB,MAAIC,MAAsB;AACtB,WAAOK,EAAIN,CAAM;AAErB,EAAAO,EAAWN,GAAmB,kDAAkDA,CAAiB,EAAE;AACvG;AAEO,SAASO,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,GAELE,IAAiB,CAACC,MAAeb,EAAM,UAAU,QAAQ,KAAK,MAAMa,CAAC,IAAIA,GACzEC,IAAmB,CAACD,MAAeb,EAAM,UAAU,QAAQ,KAAK,IAAI,IAAIa,CAAC,IAAIA;AAEnF,QAAAhB,EAAa,QAAQ,QAAQ,CAAAkB,MAAc;AACvC,gBAAM5B,IAASW,EAAK,oBAAoB,CAAC,GAAGM,GAAUW,GAAYL,CAAY,GAAGX,EAAE,KAAK;AACxF,cAAIiB,IAAiB7B;AACrB,UAAKS,EAAM,IAAI,iBACXoB,IAAiB7B,EAAO,OAAO,CAAC0B,MAAMA,KAAKN,KAAYM,KAAKL,CAAQ;AAGxE,gBAAMS,IAAMD,EAAe,SACrBF,EAAiB5B,EAAa8B,EAAe,IAAIJ,CAAc,GAAGhB,EAAM,YAAY,CAAC,IACrFA,EAAM;AACZ,UAAAe,EAAK,KAAK,OAAOI,CAAU,CAAC,IAAIE,GAC5BA,IAAMhB,MACNA,IAAOgB,IAEPA,IAAMf,MACNA,IAAOe,IAEPA,IAAMN,EAAK,QAAQ,QACnBA,EAAK,QAAQ,MAAMM,IAEnBA,IAAMN,EAAK,QAAQ,QACnBA,EAAK,QAAQ,MAAMM;AAAA,QAE3B,CAAC,GACDd,EAAIE,CAAW,EAAE,KAAKM,CAAI;AAAA,MAC9B,CAAC,GACMR;AAAA,IACX,GAAG,CAAA,CAAE;AAAA,IACL,MAAM,EAAC,MAAAF,GAAM,MAAAC,EAAA;AAAA,IACb,KAAKN,EAAM;AAAA,EAAA;AAEnB;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stackedBar.js","sources":["../../../src/discrete/layers/stackedBar.ts"],"sourcesContent":["import { max as d3Max, min as d3Min, mean, quantileSorted, sum } from 'd3-array';\nimport type { DataFrame, GroupKey } from '../../DataFrame';\nimport { NO_GROUPED } from '../../DataFrame';\nimport type { ColumnName } from '../../types';\nimport type { StackedBarLayer } from '../DiscreteSettingsImpl';\nimport { getFacetStringKey } from '../utils/getFacetStringKey';\nimport type { StackedBarsData } from './types';\nimport { exhaustive } from '../../utils';\n\ntype BarPart = {\n height: number;\n key: string;\n};\n\nexport type StackedBar = {\n key: string;\n valuesMap: Record<string, BarPart>;\n primaryGrouping: string;\n boundsY: {\n min: number;\n max: number;\n };\n};\n\nfunction calculateHeight(\n indexes: Uint32Array,\n getter: (idx: number) => number,\n heightFunc:
|
|
1
|
+
{"version":3,"file":"stackedBar.js","sources":["../../../src/discrete/layers/stackedBar.ts"],"sourcesContent":["import { max as d3Max, min as d3Min, mean, quantileSorted, sum } from 'd3-array';\nimport type { DataFrame, GroupKey } from '../../DataFrame';\nimport { NO_GROUPED } from '../../DataFrame';\nimport type { AggregationMethod, ColumnName } from '../../types';\nimport type { StackedBarLayer } from '../DiscreteSettingsImpl';\nimport { getFacetStringKey } from '../utils/getFacetStringKey';\nimport type { StackedBarsData } from './types';\nimport { exhaustive } from '../../utils';\n\ntype BarPart = {\n height: number;\n key: string;\n};\n\nexport type StackedBar = {\n key: string;\n valuesMap: Record<string, BarPart>;\n primaryGrouping: string;\n boundsY: {\n min: number;\n max: number;\n };\n};\n\nfunction calculateHeight(\n indexes: Uint32Array,\n getter: (idx: number) => number,\n heightFunc: AggregationMethod,\n):number {\n if (indexes.length === 0) {\n throw Error('Unable to create bar on empty data');\n }\n\n switch (heightFunc) {\n case 'sum':\n return sum(indexes, getter);\n case 'max':\n return d3Max(indexes, getter) ?? getter(0);\n case 'min':\n return d3Min(indexes, getter) ?? getter(0);\n case 'median': {\n const valuesSorted = [...indexes].map(getter).sort((a, b) => a - b);\n return quantileSorted(valuesSorted, 0.5) ?? getter(0);\n }\n case 'mean': {\n return mean(indexes, getter) ?? getter(0);\n }\n default: exhaustive(heightFunc, `Unknown bar height function ${heightFunc}`);\n }\n}\n\nexport function getStackedBarsData(\n layer: StackedBarLayer,\n groupingKeys: {\n facet: GroupKey[][],\n primary: GroupKey[],\n secondary: GroupKey[]\n },\n data: DataFrame,\n y: ColumnName,\n): StackedBarsData {\n let maxY = -Infinity;\n let minY = Infinity;\n\n return {\n type: 'stackedBar',\n geoms: groupingKeys.facet.reduce((res: Record<string, StackedBar[]>, facetKey) => {\n const strFacetKey = getFacetStringKey(facetKey);\n res[strFacetKey] = [];\n groupingKeys.primary.forEach(primaryKey => {\n let currentHeight = 0;\n const barParts:Record<string, BarPart> = {};\n groupingKeys.secondary.forEach(secondaryKey => {\n const secondaryKeyStr = secondaryKey === NO_GROUPED ? 'null' : secondaryKey;\n const indexes = data.getRowsByGrouping([...facetKey, primaryKey, secondaryKey]);\n if (!indexes.length) {\n return;\n }\n const height = calculateHeight(indexes, (i) => Number(data.getColumnValue(y.value, i)), layer.height);\n barParts[secondaryKeyStr] = {\n height,\n key: String(secondaryKeyStr),\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 const secondaryKeyStr = secondaryKey === NO_GROUPED ? 'null' : secondaryKey;\n if (!barParts[secondaryKeyStr]) {\n return;\n }\n barParts[secondaryKeyStr].height = barParts[secondaryKeyStr].height / maxStackHeight * 100;\n });\n }\n maxY = Math.max(maxY, 0, currentHeight);\n minY = Math.min(minY, 0, currentHeight);\n const bound = layer.normalize ? 100 : maxStackHeight;\n res[strFacetKey].push({\n key: `stackedBar_${String(primaryKey)}`,\n valuesMap: barParts,\n primaryGrouping: primaryKey,\n boundsY: {min: Math.min(bound, 0), max: Math.max(bound, 0)},\n } as StackedBar);\n });\n return res;\n }, {}),\n meta: {minY: layer.normalize ? 0 : minY, maxY: layer.normalize ? 100 : maxY, normalize: layer.normalize},\n aes: layer.aes,\n };\n}\n"],"names":["calculateHeight","indexes","getter","heightFunc","sum","d3Max","d3Min","valuesSorted","a","b","quantileSorted","mean","exhaustive","getStackedBarsData","layer","groupingKeys","data","y","maxY","minY","res","facetKey","strFacetKey","getFacetStringKey","primaryKey","currentHeight","barParts","secondaryKey","secondaryKeyStr","NO_GROUPED","height","i","maxStackHeight","bound"],"mappings":";;;;;;;;AAwBA,SAASA,EACLC,GACAC,GACAC,GACK;AACL,MAAIF,EAAQ,WAAW;AACnB,UAAM,MAAM,oCAAoC;AAGpD,UAAQE,GAAA;AAAA,IACJ,KAAK;AACD,aAAOC,EAAIH,GAASC,CAAM;AAAA,IAC9B,KAAK;AACD,aAAOG,EAAMJ,GAASC,CAAM,KAAKA,EAAO,CAAC;AAAA,IAC7C,KAAK;AACD,aAAOI,EAAML,GAASC,CAAM,KAAKA,EAAO,CAAC;AAAA,IAC7C,KAAK,UAAU;AACX,YAAMK,IAAe,CAAC,GAAGN,CAAO,EAAE,IAAIC,CAAM,EAAE,KAAK,CAACM,GAAGC,MAAMD,IAAIC,CAAC;AAClE,aAAOC,EAAeH,GAAc,GAAG,KAAKL,EAAO,CAAC;AAAA,IACxD;AAAA,IACA,KAAK;AACD,aAAOS,EAAKV,GAASC,CAAM,KAAKA,EAAO,CAAC;AAAA,IAE5C;AAAS,MAAAU,EAAWT,GAAY,+BAA+BA,CAAU,EAAE;AAAA,EAAA;AAEnF;AAEO,SAASU,EACZC,GACAC,GAKAC,GACAC,GACe;AACf,MAAIC,IAAO,QACPC,IAAO;AAEX,SAAO;AAAA,IACH,MAAM;AAAA,IACN,OAAOJ,EAAa,MAAM,OAAO,CAACK,GAAmCC,MAAa;AAC9E,YAAMC,IAAcC,EAAkBF,CAAQ;AAC9C,aAAAD,EAAIE,CAAW,IAAI,CAAA,GACnBP,EAAa,QAAQ,QAAQ,CAAAS,MAAc;AACvC,YAAIC,IAAgB;AACpB,cAAMC,IAAmC,CAAA;AACzC,QAAAX,EAAa,UAAU,QAAQ,CAAAY,MAAgB;AAC3C,gBAAMC,IAAkBD,MAAiBE,IAAa,SAASF,GACzD1B,IAAUe,EAAK,kBAAkB,CAAC,GAAGK,GAAUG,GAAYG,CAAY,CAAC;AAC9E,cAAI,CAAC1B,EAAQ;AACT;AAEJ,gBAAM6B,IAAS9B,EAAgBC,GAAS,CAAC8B,MAAM,OAAOf,EAAK,eAAeC,EAAE,OAAOc,CAAC,CAAC,GAAGjB,EAAM,MAAM;AACpG,UAAAY,EAASE,CAAe,IAAI;AAAA,YACxB,QAAAE;AAAA,YACA,KAAK,OAAOF,CAAe;AAAA,UAAA,GAE/BH,KAAiBK;AAAA,QACrB,CAAC;AACD,cAAME,IAAiBP;AACvB,QAAIX,EAAM,aACNC,EAAa,UAAU,QAAQ,CAAAY,MAAgB;AAC3C,gBAAMC,IAAkBD,MAAiBE,IAAa,SAASF;AAC/D,UAAKD,EAASE,CAAe,MAG7BF,EAASE,CAAe,EAAE,SAASF,EAASE,CAAe,EAAE,SAAUI,IAAiB;AAAA,QAC5F,CAAC,GAELd,IAAO,KAAK,IAAIA,GAAM,GAAGO,CAAa,GACtCN,IAAO,KAAK,IAAIA,GAAM,GAAGM,CAAa;AACtC,cAAMQ,IAAQnB,EAAM,YAAY,MAAMkB;AACtC,QAAAZ,EAAIE,CAAW,EAAE,KAAK;AAAA,UAClB,KAAK,cAAc,OAAOE,CAAU,CAAC;AAAA,UACrC,WAAWE;AAAA,UACX,iBAAiBF;AAAA,UACjB,SAAS,EAAC,KAAK,KAAK,IAAIS,GAAO,CAAC,GAAG,KAAK,KAAK,IAAIA,GAAO,CAAC,EAAA;AAAA,QAAC,CAC/C;AAAA,MACnB,CAAC,GACMb;AAAA,IACX,GAAG,CAAA,CAAE;AAAA,IACL,MAAM,EAAC,MAAMN,EAAM,YAAY,IAAIK,GAAM,MAAML,EAAM,YAAY,MAAMI,GAAM,WAAWJ,EAAM,UAAA;AAAA,IAC9F,KAAKA,EAAM;AAAA,EAAA;AAEnB;"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import l from "../../../_virtual/
|
|
2
|
-
import s from "../../../_virtual/
|
|
3
|
-
import f from "../../../_virtual/
|
|
4
|
-
import m from "../../../_virtual/
|
|
5
|
-
import h from "../../../_virtual/
|
|
1
|
+
import l from "../../../_virtual/index5.js";
|
|
2
|
+
import s from "../../../_virtual/index6.js";
|
|
3
|
+
import f from "../../../_virtual/index7.js";
|
|
4
|
+
import m from "../../../_virtual/index8.js";
|
|
5
|
+
import h from "../../../_virtual/index9.js";
|
|
6
6
|
import { MannWhitneyU as c } from "./MannWhitneyU.js";
|
|
7
7
|
import n from "../../../_virtual/lodash.js";
|
|
8
8
|
function u(t, a, r) {
|