@milaboratories/miplots4 1.0.174 → 1.0.175
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 +1 -1
- package/dist/DataFrame.d.ts.map +1 -1
- package/dist/DataFrame.js +52 -51
- package/dist/DataFrame.js.map +1 -1
- package/dist/bubble/BubbleSettingsImpl.d.ts +3 -0
- package/dist/bubble/BubbleSettingsImpl.d.ts.map +1 -1
- package/dist/bubble/BubbleSettingsImpl.js +16 -16
- package/dist/bubble/BubbleSettingsImpl.js.map +1 -1
- package/dist/bubble/getGroupedCellsData.d.ts +1 -1
- package/dist/bubble/getGroupedCellsData.d.ts.map +1 -1
- package/dist/bubble/getGroupedCellsData.js +12 -11
- package/dist/bubble/getGroupedCellsData.js.map +1 -1
- package/dist/bubble/index.d.ts.map +1 -1
- package/dist/bubble/index.js +61 -69
- package/dist/bubble/index.js.map +1 -1
- package/dist/constants.js +9 -11
- package/dist/constants.js.map +1 -1
- package/dist/discrete/DiscreteSettingsImpl.d.ts +2 -1
- package/dist/discrete/DiscreteSettingsImpl.d.ts.map +1 -1
- package/dist/discrete/DiscreteSettingsImpl.js.map +1 -1
- package/dist/discrete/index.d.ts.map +1 -1
- package/dist/discrete/index.js +137 -157
- package/dist/discrete/index.js.map +1 -1
- package/dist/heatmap/HeatmapSettingsImpl.d.ts +1 -0
- package/dist/heatmap/HeatmapSettingsImpl.d.ts.map +1 -1
- package/dist/heatmap/HeatmapSettingsImpl.js +29 -28
- package/dist/heatmap/HeatmapSettingsImpl.js.map +1 -1
- package/dist/heatmap/fillCellsData.d.ts +1 -1
- package/dist/heatmap/fillCellsData.d.ts.map +1 -1
- package/dist/heatmap/fillCellsData.js +172 -160
- package/dist/heatmap/fillCellsData.js.map +1 -1
- package/dist/heatmap/getCells.d.ts +1 -1
- package/dist/heatmap/getCells.d.ts.map +1 -1
- package/dist/heatmap/getCells.js +10 -9
- package/dist/heatmap/getCells.js.map +1 -1
- package/dist/heatmap/index.d.ts.map +1 -1
- package/dist/heatmap/index.js +95 -102
- package/dist/heatmap/index.js.map +1 -1
- package/dist/histogram/HistogramSettingsImpl.d.ts +1 -0
- package/dist/histogram/HistogramSettingsImpl.d.ts.map +1 -1
- package/dist/histogram/HistogramSettingsImpl.js +43 -43
- package/dist/histogram/HistogramSettingsImpl.js.map +1 -1
- package/dist/histogram/getHistogramData.d.ts +2 -2
- package/dist/histogram/getHistogramData.d.ts.map +1 -1
- package/dist/histogram/getHistogramData.js +47 -46
- package/dist/histogram/getHistogramData.js.map +1 -1
- package/dist/histogram/index.d.ts +0 -1
- package/dist/histogram/index.d.ts.map +1 -1
- package/dist/histogram/index.js +88 -89
- package/dist/histogram/index.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -4
- package/dist/index.js.map +1 -1
- package/dist/scatterplot/ScatterplotSettingsImpl.d.ts +2 -0
- package/dist/scatterplot/ScatterplotSettingsImpl.d.ts.map +1 -1
- package/dist/scatterplot/ScatterplotSettingsImpl.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 +17 -16
- package/dist/scatterplot/dots.js.map +1 -1
- package/dist/scatterplot/index.d.ts +0 -1
- package/dist/scatterplot/index.d.ts.map +1 -1
- package/dist/scatterplot/index.js +92 -101
- package/dist/scatterplot/index.js.map +1 -1
- package/dist/scatterplot/utils/createLegendInfo.d.ts.map +1 -1
- package/dist/scatterplot/utils/createLegendInfo.js +1 -1
- package/dist/scatterplot/utils/createLegendInfo.js.map +1 -1
- package/dist/types/bubble.d.ts +5 -0
- package/dist/types/bubble.d.ts.map +1 -1
- package/dist/types/bubble.js +19 -18
- package/dist/types/bubble.js.map +1 -1
- package/dist/types/dendro.d.ts +5 -0
- package/dist/types/dendro.d.ts.map +1 -1
- package/dist/types/dendro.js +10 -9
- package/dist/types/dendro.js.map +1 -1
- package/dist/types/discrete.d.ts +8 -5
- package/dist/types/discrete.d.ts.map +1 -1
- package/dist/types/discrete.js +12 -11
- package/dist/types/discrete.js.map +1 -1
- package/dist/types/heatmap.d.ts +5 -0
- package/dist/types/heatmap.d.ts.map +1 -1
- package/dist/types/heatmap.js +2 -1
- package/dist/types/heatmap.js.map +1 -1
- package/dist/types/histogram.d.ts +5 -0
- package/dist/types/histogram.d.ts.map +1 -1
- package/dist/types/histogram.js +43 -42
- package/dist/types/histogram.js.map +1 -1
- package/dist/types/scatterplot.d.ts +6 -0
- package/dist/types/scatterplot.d.ts.map +1 -1
- package/dist/types/scatterplot.js +21 -19
- package/dist/types/scatterplot.js.map +1 -1
- package/dist/utils/getFacetKeysFromValueLists.d.ts +6 -0
- package/dist/utils/getFacetKeysFromValueLists.d.ts.map +1 -0
- package/dist/utils/getFacetKeysFromValueLists.js +9 -0
- package/dist/utils/getFacetKeysFromValueLists.js.map +1 -0
- package/dist/utils/getPointShape.d.ts +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../src/heatmap/index.ts"],"sourcesContent":["import { renderToString } from 'react-dom/server.browser';\nimport { AbstractChart } from '../AbstractChart';\nimport type { DataFrame } from '../DataFrame';\nimport { type ColumnName, type DataValue, type ErrorInfoFacets, getUnknownErrorInfo, type HeatmapEventHandlers, type HeatmapSettings, isErrorInfo } from '../types';\nimport { isColumnName } from '../utils';\nimport ChartRenderer from './ChartRenderer';\nimport type { GroupedCellsHeatmap } from './getCells';\nimport { getCells } from './getCells';\nimport type { DendrogramsData } from './getDendrograms';\nimport { getDendrograms } from './getDendrograms';\nimport { HeatmapSettingsImpl } from './HeatmapSettingsImpl';\nimport { MAX_SVG_RENDERED_CELLS_COUNT } from './constants';\nimport { noop } from 'lodash';\nimport { MAX_FACETS_COUNT } from '../constants';\n\nexport class ChartHeatmap extends AbstractChart {\n settings: HeatmapSettingsImpl;\n chartRenderer = new ChartRenderer();\n\n onTooltipHintSwitch: (v:boolean) => void = noop;\n onLoadingChange: (v:boolean) => void = noop;\n\n calculatedData: {\n groupedCellsData: GroupedCellsHeatmap;\n dendrogramsData: DendrogramsData;\n cellUniqValues: DataValue[];\n } | null = null;\n\n clusteringCalculationsInProgress = false;\n\n constructor(data: DataFrame, settings: HeatmapSettings, eventHandlers?:HeatmapEventHandlers) {\n super(data, settings);\n\n this.settings = new HeatmapSettingsImpl(settings);\n if (eventHandlers) {\n this.onTooltipHintSwitch = eventHandlers.onTooltipHintSwitch ?? noop;\n this.onLoadingChange = eventHandlers.onLoadingChange ?? noop;\n }\n }\n\n mount(node: HTMLElement) {\n try {\n this.chartRenderer.init(node);\n this._updateData();\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: HeatmapSettings) {\n try {\n const previousSettings = this.settings;\n const previousData = this.data;\n this.settings = new HeatmapSettingsImpl(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.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 heatmap');\n }\n\n export(): string {\n this._updateChart();\n return renderToString(this.chartRenderer.component);\n }\n\n _needUpdateCalculatedDataBySettings(prevSettings: HeatmapSettingsImpl, settings: HeatmapSettingsImpl) {\n const {\n xColumn,\n yColumn,\n valueColumn,\n xGroupBy,\n yGroupBy,\n facetBy,\n annotations,\n chartSettings,\n facetSettings,\n dendrogramX,\n dendrogramY,\n normalization,\n aggregation,\n NAValueAs,\n } = settings;\n\n const prevDendrogramXColumns: ColumnName[] = Object.values(prevSettings.dendrogramX?.aes || {}).filter(\n isColumnName\n );\n const currentDendrogramXColumns: ColumnName[] = Object.values(dendrogramX?.aes || {}).filter(isColumnName);\n const prevDendrogramYColumns: ColumnName[] = Object.values(prevSettings.dendrogramY?.aes || {}).filter(\n isColumnName\n );\n const currentDendrogramYColumns: ColumnName[] = Object.values(dendrogramY?.aes || {}).filter(isColumnName);\n\n function compareColumnGroups(columns1: ColumnName[], columns2: ColumnName[]) {\n return (\n columns1.length !== columns2.length ||\n columns1.some((column, idx) => column.value !== columns2[idx].value)\n );\n }\n\n return (\n prevSettings.xColumn.value !== xColumn.value ||\n prevSettings.yColumn.value !== yColumn.value ||\n prevSettings.valueColumn.value !== valueColumn.value ||\n compareColumnGroups(prevSettings.xGroupBy, xGroupBy) ||\n compareColumnGroups(prevSettings.yGroupBy, yGroupBy) ||\n compareColumnGroups(prevSettings.facetBy, facetBy) ||\n compareColumnGroups(\n prevSettings.annotations.map(a => a.valueColumn),\n annotations.map(a => a.valueColumn)\n ) ||\n compareColumnGroups(prevDendrogramXColumns, currentDendrogramXColumns) ||\n compareColumnGroups(prevDendrogramYColumns, currentDendrogramYColumns) ||\n ((settings.dendrogramX || prevSettings.dendrogramX) &&\n (prevSettings.dendrogramX?.distance !== settings.dendrogramX?.distance ||\n prevSettings.dendrogramX?.linkage !== settings.dendrogramX?.linkage)) ||\n ((settings.dendrogramY || prevSettings.dendrogramY) &&\n (prevSettings.dendrogramY?.distance !== settings.dendrogramY?.distance ||\n prevSettings.dendrogramY?.linkage !== settings.dendrogramY?.linkage)) ||\n prevSettings.chartSettings.valueType !== chartSettings.valueType ||\n prevSettings.facetSettings.sharedX !== facetSettings.sharedX ||\n prevSettings.facetSettings.sharedY !== facetSettings.sharedY ||\n prevSettings.normalization?.method !== normalization?.method ||\n prevSettings.normalization?.direction !== normalization?.direction ||\n prevSettings.NAValueAs !== NAValueAs ||\n prevSettings.aggregation?.method !== aggregation?.method ||\n prevSettings.aggregation?.x !== aggregation?.x ||\n prevSettings.aggregation?.y !== aggregation?.y\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 async _updateData() {\n const {\n xColumn,\n yColumn,\n valueColumn,\n xGroupBy,\n yGroupBy,\n facetBy,\n chartSettings,\n facetSettings,\n annotations,\n dendrogramX,\n dendrogramY,\n normalization,\n NAValueAs,\n keysOrder,\n aggregation\n } = this.settings;\n\n const groupedCellsData = getCells(\n this.data,\n xColumn,\n yColumn,\n {dataSource: valueColumn},\n facetBy,\n xGroupBy,\n yGroupBy,\n annotations,\n dendrogramX,\n dendrogramY,\n normalization,\n NAValueAs,\n keysOrder,\n chartSettings.xAxis,\n chartSettings.yAxis,\n aggregation\n );\n\n if (groupedCellsData.meta.facetKeys.length > MAX_FACETS_COUNT) {\n const errorInfo: ErrorInfoFacets = {\n type: 'tooManyFacets',\n info: {count: groupedCellsData.meta.facetKeys.length, maxCount: MAX_FACETS_COUNT}\n };\n throw Error(errorInfo.type, {cause: errorInfo});\n }\n\n const cellUniqValues = chartSettings.valueType === 'discrete' ? this.data.getColumnCategories(valueColumn.value) : [];\n \n if (dendrogramX && facetSettings.sharedX && facetBy.length > 0) {\n throw Error('Dendrogram on X axis is not available with shared by facets X axis');\n }\n if (dendrogramY && facetSettings.sharedY && facetBy.length > 0) {\n throw Error('Dendrogram on Y axis is not available with shared by facets Y axis');\n }\n this.clusteringCalculationsInProgress = true;\n this.onLoadingChange(true);\n const dendrogramsData = await getDendrograms(groupedCellsData, dendrogramX, dendrogramY);\n this.clusteringCalculationsInProgress = false;\n this.onLoadingChange(false);\n\n this.calculatedData = {\n groupedCellsData,\n dendrogramsData,\n cellUniqValues,\n };\n \n this._updateChart();\n }\n\n _updateAesInData() {\n this._updateChart();\n }\n\n _updateChart() {\n if (!this.calculatedData || this.clusteringCalculationsInProgress) {\n return;\n }\n const {\n id,\n valueColumn,\n chartSettings,\n facetSettings,\n aes,\n annotations,\n dendrogramX,\n dendrogramY,\n inheritedDendrogramAes,\n normalization,\n keysOrder,\n xColumn,\n yColumn,\n xGroupBy,\n yGroupBy,\n } = this.settings;\n const customOrder = {\n x: keysOrder[xColumn.value]?.length > 0,\n y: keysOrder[yColumn.value]?.length > 0,\n xGroup: xGroupBy.some((v) => keysOrder[v.value]?.length > 0),\n yGroup: yGroupBy.some((v) => keysOrder[v.value]?.length > 0),\n };\n const dataSize = this.data.columnNames.length ? this.data.getColumn(this.data.columnNames[0]).length : 0;\n const cellsRenderingMode = this.settings.cellsRenderingMode ?? (dataSize > MAX_SVG_RENDERED_CELLS_COUNT ? 'canvas' : 'svg');\n \n this.chartRenderer.render(\n this.data,\n id,\n chartSettings,\n facetSettings,\n aes,\n this.calculatedData.groupedCellsData,\n annotations,\n valueColumn,\n dendrogramX,\n dendrogramY,\n this.calculatedData.dendrogramsData,\n inheritedDendrogramAes,\n this.calculatedData.cellUniqValues,\n normalization,\n this.onTooltipHintSwitch,\n customOrder,\n cellsRenderingMode\n );\n }\n}\n"],"names":["ChartHeatmap","AbstractChart","data","settings","eventHandlers","__publicField","ChartRenderer","noop","HeatmapSettingsImpl","node","err","isErrorInfo","getUnknownErrorInfo","previousSettings","previousData","_field","_value","renderToString","prevSettings","xColumn","yColumn","valueColumn","xGroupBy","yGroupBy","facetBy","annotations","chartSettings","facetSettings","dendrogramX","dendrogramY","normalization","aggregation","NAValueAs","prevDendrogramXColumns","_a","isColumnName","currentDendrogramXColumns","prevDendrogramYColumns","_b","currentDendrogramYColumns","compareColumnGroups","columns1","columns2","column","idx","a","_c","_d","_e","_f","_g","_h","_i","_j","_k","_l","_m","_n","_o","prevData","prevKeys","keys","key","keysOrder","groupedCellsData","getCells","MAX_FACETS_COUNT","errorInfo","cellUniqValues","dendrogramsData","getDendrograms","id","aes","inheritedDendrogramAes","customOrder","v","dataSize","cellsRenderingMode","MAX_SVG_RENDERED_CELLS_COUNT"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/heatmap/index.ts"],"sourcesContent":["import { renderToString } from 'react-dom/server.browser';\nimport { AbstractChart } from '../AbstractChart';\nimport type { DataFrame } from '../DataFrame';\nimport { type ColumnName, type DataValue, getUnknownErrorInfo, type HeatmapEventHandlers, type HeatmapSettings, isErrorInfo } from '../types';\nimport { isColumnName } from '../utils';\nimport ChartRenderer from './ChartRenderer';\nimport type { GroupedCellsHeatmap } from './getCells';\nimport { getCells } from './getCells';\nimport type { DendrogramsData } from './getDendrograms';\nimport { getDendrograms } from './getDendrograms';\nimport { HeatmapSettingsImpl } from './HeatmapSettingsImpl';\nimport { MAX_SVG_RENDERED_CELLS_COUNT } from './constants';\nimport { noop } from 'lodash';\nimport { arraysAreDifferent } from '../utils/arraysAreDifferent';\n\nexport class ChartHeatmap extends AbstractChart {\n settings: HeatmapSettingsImpl;\n chartRenderer = new ChartRenderer();\n\n onTooltipHintSwitch: (v:boolean) => void = noop;\n onLoadingChange: (v:boolean) => void = noop;\n\n calculatedData: {\n groupedCellsData: GroupedCellsHeatmap;\n dendrogramsData: DendrogramsData;\n cellUniqValues: DataValue[];\n } | null = null;\n\n clusteringCalculationsInProgress = false;\n\n constructor(data: DataFrame, settings: HeatmapSettings, eventHandlers?:HeatmapEventHandlers) {\n super(data, settings);\n\n this.settings = new HeatmapSettingsImpl(settings);\n if (eventHandlers) {\n this.onTooltipHintSwitch = eventHandlers.onTooltipHintSwitch ?? noop;\n this.onLoadingChange = eventHandlers.onLoadingChange ?? noop;\n }\n }\n\n mount(node: HTMLElement) {\n try {\n this.chartRenderer.init(node);\n this._updateData();\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: HeatmapSettings) {\n try {\n const previousSettings = this.settings;\n const previousData = this.data;\n this.settings = new HeatmapSettingsImpl(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.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 heatmap');\n }\n\n export(): string {\n this._updateChart();\n return renderToString(this.chartRenderer.component);\n }\n\n _needUpdateCalculatedDataBySettings(prevSettings: HeatmapSettingsImpl, settings: HeatmapSettingsImpl) {\n const {\n xColumn,\n yColumn,\n valueColumn,\n xGroupBy,\n yGroupBy,\n facetBy,\n annotations,\n chartSettings,\n facetSettings,\n dendrogramX,\n dendrogramY,\n normalization,\n aggregation,\n NAValueAs,\n } = settings;\n\n const prevDendrogramXColumns: ColumnName[] = Object.values(prevSettings.dendrogramX?.aes || {}).filter(\n isColumnName\n );\n const currentDendrogramXColumns: ColumnName[] = Object.values(dendrogramX?.aes || {}).filter(isColumnName);\n const prevDendrogramYColumns: ColumnName[] = Object.values(prevSettings.dendrogramY?.aes || {}).filter(\n isColumnName\n );\n const currentDendrogramYColumns: ColumnName[] = Object.values(dendrogramY?.aes || {}).filter(isColumnName);\n\n function compareColumnGroups(columns1: ColumnName[], columns2: ColumnName[]) {\n return (\n columns1.length !== columns2.length ||\n columns1.some((column, idx) => column.value !== columns2[idx].value)\n );\n }\n\n return (\n prevSettings.xColumn.value !== xColumn.value ||\n prevSettings.yColumn.value !== yColumn.value ||\n prevSettings.valueColumn.value !== valueColumn.value ||\n compareColumnGroups(prevSettings.xGroupBy, xGroupBy) ||\n compareColumnGroups(prevSettings.yGroupBy, yGroupBy) ||\n compareColumnGroups(prevSettings.facetBy, facetBy) ||\n compareColumnGroups(\n prevSettings.annotations.map(a => a.valueColumn),\n annotations.map(a => a.valueColumn)\n ) ||\n compareColumnGroups(prevDendrogramXColumns, currentDendrogramXColumns) ||\n compareColumnGroups(prevDendrogramYColumns, currentDendrogramYColumns) ||\n ((settings.dendrogramX || prevSettings.dendrogramX) &&\n (prevSettings.dendrogramX?.distance !== settings.dendrogramX?.distance ||\n prevSettings.dendrogramX?.linkage !== settings.dendrogramX?.linkage)) ||\n ((settings.dendrogramY || prevSettings.dendrogramY) &&\n (prevSettings.dendrogramY?.distance !== settings.dendrogramY?.distance ||\n prevSettings.dendrogramY?.linkage !== settings.dendrogramY?.linkage)) ||\n prevSettings.chartSettings.valueType !== chartSettings.valueType ||\n prevSettings.facetSettings.sharedX !== facetSettings.sharedX ||\n prevSettings.facetSettings.sharedY !== facetSettings.sharedY ||\n arraysAreDifferent(prevSettings.facetSettings?.order ?? [], settings.facetSettings?.order ?? []),\n prevSettings.normalization?.method !== normalization?.method ||\n prevSettings.normalization?.direction !== normalization?.direction ||\n prevSettings.NAValueAs !== NAValueAs ||\n prevSettings.aggregation?.method !== aggregation?.method ||\n prevSettings.aggregation?.x !== aggregation?.x ||\n prevSettings.aggregation?.y !== aggregation?.y\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 async _updateData() {\n const {\n xColumn,\n yColumn,\n valueColumn,\n xGroupBy,\n yGroupBy,\n facetBy,\n chartSettings,\n facetSettings,\n annotations,\n dendrogramX,\n dendrogramY,\n normalization,\n NAValueAs,\n keysOrder,\n aggregation\n } = this.settings;\n\n const groupedCellsData = getCells(\n this.data,\n xColumn,\n yColumn,\n {dataSource: valueColumn},\n facetBy,\n xGroupBy,\n yGroupBy,\n facetSettings,\n annotations,\n dendrogramX,\n dendrogramY,\n normalization,\n NAValueAs,\n keysOrder,\n chartSettings.xAxis,\n chartSettings.yAxis,\n aggregation\n );\n\n const cellUniqValues = chartSettings.valueType === 'discrete' ? this.data.getColumnCategories(valueColumn.value) : [];\n \n if (dendrogramX && facetSettings.sharedX && facetBy.length > 0) {\n throw Error('Dendrogram on X axis is not available with shared by facets X axis');\n }\n if (dendrogramY && facetSettings.sharedY && facetBy.length > 0) {\n throw Error('Dendrogram on Y axis is not available with shared by facets Y axis');\n }\n this.clusteringCalculationsInProgress = true;\n this.onLoadingChange(true);\n const dendrogramsData = await getDendrograms(groupedCellsData, dendrogramX, dendrogramY);\n this.clusteringCalculationsInProgress = false;\n this.onLoadingChange(false);\n\n this.calculatedData = {\n groupedCellsData,\n dendrogramsData,\n cellUniqValues,\n };\n \n this._updateChart();\n }\n\n _updateAesInData() {\n this._updateChart();\n }\n\n _updateChart() {\n if (!this.calculatedData || this.clusteringCalculationsInProgress) {\n return;\n }\n const {\n id,\n valueColumn,\n chartSettings,\n facetSettings,\n aes,\n annotations,\n dendrogramX,\n dendrogramY,\n inheritedDendrogramAes,\n normalization,\n keysOrder,\n xColumn,\n yColumn,\n xGroupBy,\n yGroupBy,\n } = this.settings;\n const customOrder = {\n x: keysOrder[xColumn.value]?.length > 0,\n y: keysOrder[yColumn.value]?.length > 0,\n xGroup: xGroupBy.some((v) => keysOrder[v.value]?.length > 0),\n yGroup: yGroupBy.some((v) => keysOrder[v.value]?.length > 0),\n };\n const dataSize = this.data.columnNames.length ? this.data.getColumn(this.data.columnNames[0]).length : 0;\n const cellsRenderingMode = this.settings.cellsRenderingMode ?? (dataSize > MAX_SVG_RENDERED_CELLS_COUNT ? 'canvas' : 'svg');\n \n this.chartRenderer.render(\n this.data,\n id,\n chartSettings,\n facetSettings,\n aes,\n this.calculatedData.groupedCellsData,\n annotations,\n valueColumn,\n dendrogramX,\n dendrogramY,\n this.calculatedData.dendrogramsData,\n inheritedDendrogramAes,\n this.calculatedData.cellUniqValues,\n normalization,\n this.onTooltipHintSwitch,\n customOrder,\n cellsRenderingMode\n );\n }\n}\n"],"names":["ChartHeatmap","AbstractChart","data","settings","eventHandlers","__publicField","ChartRenderer","noop","HeatmapSettingsImpl","node","err","isErrorInfo","getUnknownErrorInfo","previousSettings","previousData","_field","_value","renderToString","prevSettings","xColumn","yColumn","valueColumn","xGroupBy","yGroupBy","facetBy","annotations","chartSettings","facetSettings","dendrogramX","dendrogramY","normalization","aggregation","NAValueAs","prevDendrogramXColumns","_a","isColumnName","currentDendrogramXColumns","prevDendrogramYColumns","_b","currentDendrogramYColumns","compareColumnGroups","columns1","columns2","column","idx","a","_c","_d","_e","_f","_g","_h","_i","_j","arraysAreDifferent","_k","_l","_m","_n","_o","_p","_q","prevData","prevKeys","keys","key","keysOrder","groupedCellsData","getCells","cellUniqValues","dendrogramsData","getDendrograms","id","aes","inheritedDendrogramAes","customOrder","v","dataSize","cellsRenderingMode","MAX_SVG_RENDERED_CELLS_COUNT"],"mappings":"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"}
|
|
@@ -27,6 +27,7 @@ export declare class HistogramSettingsImpl implements SettingsInterface {
|
|
|
27
27
|
nRows?: number;
|
|
28
28
|
nCols?: number;
|
|
29
29
|
titlePosition: 'left' | 'center' | 'right';
|
|
30
|
+
order: string[] | null;
|
|
30
31
|
};
|
|
31
32
|
readonly facetBy: ColumnName[];
|
|
32
33
|
readonly grouping: ColumnName | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HistogramSettingsImpl.d.ts","sourceRoot":"","sources":["../../src/histogram/HistogramSettingsImpl.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACR,UAAU,EACV,SAAS,EACT,iBAAiB,EACjB,mBAAmB,EACnB,cAAc,EACd,SAAS,IAAI,cAAc,EAC3B,aAAa,IAAI,cAAc,EAC/B,iBAAiB,EACjB,aAAa,EAChB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,sBAAsB,EAA2B,MAAM,UAAU,CAAC;AAMhG,qBAAa,SAAS;IAClB,QAAQ,CAAC,IAAI,UAAU;IACvB,QAAQ,CAAC,GAAG,EAAE;QACV,SAAS,EAAE,mBAAmB,GAAG,MAAM,GAAG,sBAAsB,CAAC;QACjE,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;KACnB,CAIC;gBAEU,KAAK,EAAE,cAAc;CAMpC;AAED,qBAAa,aAAa;IACtB,QAAQ,CAAC,IAAI,cAAc;IAC3B,QAAQ,CAAC,GAAG,EAAE;QACV,OAAO,EAAE,MAAM,CAAC;KACnB,CAEC;gBAEU,KAAK,EAAE,cAAc;CAMpC;AAED,MAAM,MAAM,cAAc,GAAG,SAAS,CAAC;AAEvC,qBAAa,qBAAsB,YAAW,iBAAiB;IAC3D,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,eAAe;IAC5B,QAAQ,CAAC,WAAW,EAAE,UAAU,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,aAAa,EAAE;QACpB,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,EAAE,OAAO,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,aAAa,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"HistogramSettingsImpl.d.ts","sourceRoot":"","sources":["../../src/histogram/HistogramSettingsImpl.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACR,UAAU,EACV,SAAS,EACT,iBAAiB,EACjB,mBAAmB,EACnB,cAAc,EACd,SAAS,IAAI,cAAc,EAC3B,aAAa,IAAI,cAAc,EAC/B,iBAAiB,EACjB,aAAa,EAChB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,sBAAsB,EAA2B,MAAM,UAAU,CAAC;AAMhG,qBAAa,SAAS;IAClB,QAAQ,CAAC,IAAI,UAAU;IACvB,QAAQ,CAAC,GAAG,EAAE;QACV,SAAS,EAAE,mBAAmB,GAAG,MAAM,GAAG,sBAAsB,CAAC;QACjE,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;KACnB,CAIC;gBAEU,KAAK,EAAE,cAAc;CAMpC;AAED,qBAAa,aAAa;IACtB,QAAQ,CAAC,IAAI,cAAc;IAC3B,QAAQ,CAAC,GAAG,EAAE;QACV,OAAO,EAAE,MAAM,CAAC;KACnB,CAEC;gBAEU,KAAK,EAAE,cAAc;CAMpC;AAED,MAAM,MAAM,cAAc,GAAG,SAAS,CAAC;AAEvC,qBAAa,qBAAsB,YAAW,iBAAiB;IAC3D,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,eAAe;IAC5B,QAAQ,CAAC,WAAW,EAAE,UAAU,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,aAAa,EAAE;QACpB,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,EAAE,OAAO,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,aAAa,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;QAC3C,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;KAC1B,CAAC;IACF,QAAQ,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,UAAU,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,aAAa,EAAE,UAAU,GAAG,YAAY,CAAC;IAClD,QAAQ,CAAC,iBAAiB,EAAE,UAAU,GAAG,SAAS,CAAC;IACnD,QAAQ,CAAC,aAAa,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACxC,QAAQ,CAAC,aAAa,EAAE;QACpB,QAAQ,CAAC,IAAI,EAAE;YAAC,KAAK,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,WAAW,EAAE,MAAM,CAAC;YAAC,WAAW,EAAE,MAAM,CAAA;SAAC,CAAC;QACzF,QAAQ,CAAC,KAAK,EAAE;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,OAAO,CAAC;YAAC,QAAQ,EAAE,aAAa,CAAA;SAAC,CAAC;QACvE,QAAQ,CAAC,KAAK,EAAE;YAAC,QAAQ,EAAE,OAAO,CAAC;YAAC,SAAS,EAAE,OAAO,CAAC;YAAC,YAAY,EAAE,OAAO,CAAC;YAAC,KAAK,EAAE,QAAQ,GAAG,KAAK,CAAA;SAAC,CAAC;QACxG,QAAQ,CAAC,KAAK,EAAE;YAAC,QAAQ,EAAE,OAAO,CAAC;YAAC,SAAS,EAAE,OAAO,CAAC;YAAC,YAAY,EAAE,OAAO,CAAC;YAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAAC;YAAC,KAAK,EAAE,QAAQ,GAAG,KAAK,CAAA;SAAC,CAAC;QACpI,QAAQ,CAAC,KAAK,EAAE;YAAC,IAAI,EAAE,SAAS,CAAA;SAAC,CAAC;QAClC,QAAQ,CAAC,MAAM,EAAE;YAAC,IAAI,EAAE,OAAO,CAAC;YAAC,QAAQ,EAAE,cAAc,CAAA;SAAC,CAAC;KAC9D,CAAC;IACF,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACjD,QAAQ,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC;gBAEtB,QAAQ,EAAE,iBAAiB;CA6D1C"}
|
|
@@ -1,46 +1,46 @@
|
|
|
1
|
-
var
|
|
2
|
-
var
|
|
3
|
-
var e = (
|
|
4
|
-
import
|
|
5
|
-
import { DEFAULT_HEIGHT_SMALL as
|
|
1
|
+
var A = Object.defineProperty;
|
|
2
|
+
var y = (i, r, o) => r in i ? A(i, r, { enumerable: !0, configurable: !0, writable: !0, value: o }) : i[r] = o;
|
|
3
|
+
var e = (i, r, o) => y(i, typeof r != "symbol" ? r + "" : r, o);
|
|
4
|
+
import x from "../_virtual/lodash.js";
|
|
5
|
+
import { DEFAULT_HEIGHT_SMALL as L, DEFAULT_HEIGHT as S, DEFAULT_WIDTH_SMALL as w, DEFAULT_WIDTH as T, BLACK as C } from "../constants.js";
|
|
6
6
|
import "../types/common.js";
|
|
7
7
|
import "../types/discrete.js";
|
|
8
8
|
import "../types/scatterplot.js";
|
|
9
9
|
import "../types/heatmap.js";
|
|
10
10
|
import "../types/dendro.js";
|
|
11
|
-
import { HistogramSettingsSchema as
|
|
11
|
+
import { HistogramSettingsSchema as D } from "../types/histogram.js";
|
|
12
12
|
import "../types/bubble.js";
|
|
13
|
-
import { exhaustive as
|
|
14
|
-
import { PADDINGS as
|
|
15
|
-
const
|
|
16
|
-
class
|
|
17
|
-
constructor(
|
|
13
|
+
import { exhaustive as b } from "../utils/index.js";
|
|
14
|
+
import { PADDINGS as B, MIN_MARGIN as I } from "./constants.js";
|
|
15
|
+
const O = 10;
|
|
16
|
+
class _ {
|
|
17
|
+
constructor(r) {
|
|
18
18
|
e(this, "type", "bins");
|
|
19
19
|
e(this, "aes", {
|
|
20
20
|
fillColor: "white",
|
|
21
|
-
lineColor:
|
|
21
|
+
lineColor: C,
|
|
22
22
|
opacity: 1
|
|
23
23
|
});
|
|
24
24
|
this.aes = {
|
|
25
25
|
...this.aes,
|
|
26
|
-
...
|
|
26
|
+
...r.aes
|
|
27
27
|
};
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
|
-
class
|
|
31
|
-
constructor(
|
|
30
|
+
class v {
|
|
31
|
+
constructor(r) {
|
|
32
32
|
e(this, "type", "binsLine");
|
|
33
33
|
e(this, "aes", {
|
|
34
34
|
opacity: 1
|
|
35
35
|
});
|
|
36
36
|
this.aes = {
|
|
37
37
|
...this.aes,
|
|
38
|
-
...
|
|
38
|
+
...r.aes
|
|
39
39
|
};
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
|
-
class
|
|
43
|
-
constructor(
|
|
42
|
+
class K {
|
|
43
|
+
constructor(r) {
|
|
44
44
|
e(this, "id");
|
|
45
45
|
e(this, "type", "histogram");
|
|
46
46
|
e(this, "valueColumn");
|
|
@@ -54,53 +54,53 @@ class q {
|
|
|
54
54
|
e(this, "chartSettings");
|
|
55
55
|
e(this, "inheritedAes");
|
|
56
56
|
e(this, "layers");
|
|
57
|
-
var o, l, h, t, u,
|
|
58
|
-
|
|
57
|
+
var o, l, h, t, u, c, n, p, f, m, d, s;
|
|
58
|
+
D.parse(r), this.id = x.uniqueId("settings"), this.facetSettings = { sharedX: !0, sharedY: !0, titlePosition: "left", order: ((o = r.facetSettings) == null ? void 0 : o.order) ?? null, ...r.facetSettings }, this.valueColumn = r.valueColumn, this.binsCount = r.binsCount ?? O, this.facetBy = r.facetBy ?? [], this.grouping = r.grouping ?? null, this.groupingStack = r.groupingStack ?? "vertical", this.groupingDirection = r.groupingDirection ?? "straight", this.groupingOrder = r.groupingOrder ?? null, this.chartSettings = {
|
|
59
59
|
size: {
|
|
60
|
-
width: ((
|
|
61
|
-
height: ((
|
|
62
|
-
outerOffset: ((
|
|
63
|
-
innerOffset: ((
|
|
60
|
+
width: ((l = r == null ? void 0 : r.size) == null ? void 0 : l.width) ?? (this.facetBy.length ? w : T),
|
|
61
|
+
height: ((h = r == null ? void 0 : r.size) == null ? void 0 : h.height) ?? (this.facetBy.length ? L : S),
|
|
62
|
+
outerOffset: ((t = r == null ? void 0 : r.size) == null ? void 0 : t.outerOffset) ?? I,
|
|
63
|
+
innerOffset: ((u = r == null ? void 0 : r.size) == null ? void 0 : u.innerOffset) ?? B.TOP
|
|
64
64
|
},
|
|
65
65
|
title: {
|
|
66
66
|
position: "center",
|
|
67
67
|
show: !0,
|
|
68
|
-
...
|
|
69
|
-
name: ((
|
|
68
|
+
...r.title,
|
|
69
|
+
name: ((c = r.title) == null ? void 0 : c.name) ?? "Chart"
|
|
70
70
|
},
|
|
71
71
|
yAxis: {
|
|
72
72
|
showGrid: !0,
|
|
73
73
|
showTicks: !0,
|
|
74
|
-
scale: ((
|
|
74
|
+
scale: ((n = r.xAxis) == null ? void 0 : n.scale) ?? "linear",
|
|
75
75
|
hiddenLabels: !1,
|
|
76
|
-
...
|
|
76
|
+
...r.yAxis
|
|
77
77
|
},
|
|
78
78
|
xAxis: {
|
|
79
|
-
title:
|
|
80
|
-
scale: ((
|
|
81
|
-
showGrid: ((
|
|
82
|
-
showTicks: ((
|
|
83
|
-
hiddenLabels: ((
|
|
84
|
-
...
|
|
79
|
+
title: r.valueColumn.label ?? r.valueColumn.value ?? "",
|
|
80
|
+
scale: ((p = r.xAxis) == null ? void 0 : p.scale) ?? "linear",
|
|
81
|
+
showGrid: ((f = r.xAxis) == null ? void 0 : f.showGrid) ?? !0,
|
|
82
|
+
showTicks: ((m = r.xAxis) == null ? void 0 : m.showTicks) ?? !0,
|
|
83
|
+
hiddenLabels: ((d = r.xAxis) == null ? void 0 : d.hiddenLabels) ?? !1,
|
|
84
|
+
...r.xAxis
|
|
85
85
|
},
|
|
86
|
-
frame: { type: ((
|
|
86
|
+
frame: { type: ((s = r.frame) == null ? void 0 : s.type) ?? "full" },
|
|
87
87
|
legend: {
|
|
88
88
|
show: !0,
|
|
89
89
|
position: "right",
|
|
90
|
-
...
|
|
90
|
+
...r.legend
|
|
91
91
|
}
|
|
92
|
-
}, this.inheritedAes =
|
|
92
|
+
}, this.inheritedAes = r.inheritedAes ?? {}, this.layers = r.layers.map((a) => {
|
|
93
93
|
if (a.type === "bins")
|
|
94
|
-
return new O(a);
|
|
95
|
-
if (a.type === "binsLine")
|
|
96
94
|
return new _(a);
|
|
97
|
-
|
|
95
|
+
if (a.type === "binsLine")
|
|
96
|
+
return new v(a);
|
|
97
|
+
b(a, "Unknown layer type");
|
|
98
98
|
}).filter(Boolean);
|
|
99
99
|
}
|
|
100
100
|
}
|
|
101
101
|
export {
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
102
|
+
_ as BinsLayer,
|
|
103
|
+
v as BinsLineLayer,
|
|
104
|
+
K as HistogramSettingsImpl
|
|
105
105
|
};
|
|
106
106
|
//# sourceMappingURL=HistogramSettingsImpl.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HistogramSettingsImpl.js","sources":["../../src/histogram/HistogramSettingsImpl.ts"],"sourcesContent":["import lodash from 'lodash';\nimport { BLACK, DEFAULT_HEIGHT, DEFAULT_HEIGHT_SMALL, DEFAULT_WIDTH, DEFAULT_WIDTH_SMALL } from '../constants';\nimport type {\n ColumnName,\n FrameType,\n HistogramSettings,\n InheritAesHistogram,\n LegendPosition,\n BinsLayer as OuterBinsLayer,\n BinsLineLayer as OuterLineLayer,\n SettingsInterface,\n TitlePosition,\n} from '../types';\nimport { type AesRecord, type ContinuousAesHistogram, HistogramSettingsSchema } from '../types';\nimport { exhaustive } from '../utils';\nimport { MIN_MARGIN, PADDINGS } from './constants';\n\nconst DEFAULT_BINS_COUNT = 10;\n\nexport class BinsLayer {\n readonly type = 'bins';\n readonly aes: {\n fillColor: InheritAesHistogram | string | ContinuousAesHistogram;\n lineColor: string,\n opacity: number;\n } = {\n fillColor: 'white',\n lineColor: BLACK,\n opacity: 1,\n };\n\n constructor(layer: OuterBinsLayer) {\n this.aes = {\n ...this.aes,\n ...layer.aes,\n };\n }\n}\n\nexport class BinsLineLayer {\n readonly type = 'binsLine';\n readonly aes: {\n opacity: number;\n } = {\n opacity: 1,\n };\n\n constructor(layer: OuterLineLayer) {\n this.aes = {\n ...this.aes,\n ...layer.aes,\n };\n }\n}\n\nexport type HistogramLayer = BinsLayer;\n\nexport class HistogramSettingsImpl implements SettingsInterface {\n readonly id: string;\n readonly type = 'histogram';\n readonly valueColumn: ColumnName;\n readonly binsCount: number;\n readonly facetSettings: {\n sharedX: boolean;\n sharedY: boolean;\n nRows?: number;\n nCols?: number;\n titlePosition: 'left' | 'center' | 'right';\n };\n readonly facetBy: ColumnName[];\n readonly grouping: ColumnName | null;\n readonly groupingStack: 'vertical' | 'horizontal';\n readonly groupingDirection: 'straight' | 'reverse';\n readonly groupingOrder: string[] | null;\n readonly chartSettings: {\n readonly size: {width: number; height: number, innerOffset: number, outerOffset: number};\n readonly title: {name: string; show: boolean; position: TitlePosition};\n readonly yAxis: {showGrid: boolean; showTicks: boolean; hiddenLabels: boolean; scale: 'linear' | 'log'};\n readonly xAxis: {showGrid: boolean; showTicks: boolean; hiddenLabels: boolean; title: string | ColumnName; scale: 'linear' | 'log'};\n readonly frame: {type: FrameType};\n readonly legend: {show: boolean; position: LegendPosition};\n };\n readonly inheritedAes: Record<string, AesRecord>;\n readonly layers: HistogramLayer[];\n\n constructor(settings: HistogramSettings) {\n HistogramSettingsSchema.parse(settings);\n this.id = lodash.uniqueId('settings');\n this.facetSettings = {sharedX: true, sharedY: true, titlePosition: 'left', ...settings.facetSettings};\n this.valueColumn = settings.valueColumn;\n this.binsCount = settings.binsCount ?? DEFAULT_BINS_COUNT;\n this.facetBy = settings.facetBy ?? [];\n this.grouping = settings.grouping ?? null;\n this.groupingStack = settings.groupingStack ?? 'vertical';\n this.groupingDirection = settings.groupingDirection ?? 'straight';\n this.groupingOrder = settings.groupingOrder ?? null;\n this.chartSettings = {\n size: {\n width: settings?.size?.width ?? (this.facetBy.length ? DEFAULT_WIDTH_SMALL : DEFAULT_WIDTH),\n height: settings?.size?.height ?? (this.facetBy.length ? DEFAULT_HEIGHT_SMALL : DEFAULT_HEIGHT),\n outerOffset: settings?.size?.outerOffset ?? MIN_MARGIN,\n innerOffset: settings?.size?.innerOffset ?? PADDINGS.TOP\n },\n title: {\n position: 'center',\n show: true,\n ...settings.title,\n name: settings.title?.name ?? 'Chart',\n },\n yAxis: {\n showGrid: true,\n showTicks: true,\n scale: settings.xAxis?.scale ?? 'linear',\n hiddenLabels: false,\n ...settings.yAxis,\n },\n xAxis: {\n title: settings.valueColumn.label ?? settings.valueColumn.value ?? '',\n scale: settings.xAxis?.scale ?? 'linear',\n showGrid: settings.xAxis?.showGrid ?? true,\n showTicks: settings.xAxis?.showTicks ?? true,\n hiddenLabels: settings.xAxis?.hiddenLabels ?? false,\n ...settings.xAxis,\n },\n frame: {type: settings.frame?.type ?? 'full'},\n legend: {\n show: true,\n position: 'right',\n ...settings.legend,\n },\n };\n\n this.inheritedAes = settings.inheritedAes ?? {};\n\n this.layers = settings.layers\n .map(layer => {\n if (layer.type === 'bins') {\n return new BinsLayer(layer);\n }\n if (layer.type === 'binsLine') {\n return new BinsLineLayer(layer);\n }\n exhaustive(layer, 'Unknown layer type');\n })\n .filter(Boolean) as HistogramLayer[];\n }\n}\n"],"names":["DEFAULT_BINS_COUNT","BinsLayer","layer","__publicField","BLACK","BinsLineLayer","HistogramSettingsImpl","settings","HistogramSettingsSchema","lodash","_a","DEFAULT_WIDTH_SMALL","DEFAULT_WIDTH","
|
|
1
|
+
{"version":3,"file":"HistogramSettingsImpl.js","sources":["../../src/histogram/HistogramSettingsImpl.ts"],"sourcesContent":["import lodash from 'lodash';\nimport { BLACK, DEFAULT_HEIGHT, DEFAULT_HEIGHT_SMALL, DEFAULT_WIDTH, DEFAULT_WIDTH_SMALL } from '../constants';\nimport type {\n ColumnName,\n FrameType,\n HistogramSettings,\n InheritAesHistogram,\n LegendPosition,\n BinsLayer as OuterBinsLayer,\n BinsLineLayer as OuterLineLayer,\n SettingsInterface,\n TitlePosition,\n} from '../types';\nimport { type AesRecord, type ContinuousAesHistogram, HistogramSettingsSchema } from '../types';\nimport { exhaustive } from '../utils';\nimport { MIN_MARGIN, PADDINGS } from './constants';\n\nconst DEFAULT_BINS_COUNT = 10;\n\nexport class BinsLayer {\n readonly type = 'bins';\n readonly aes: {\n fillColor: InheritAesHistogram | string | ContinuousAesHistogram;\n lineColor: string,\n opacity: number;\n } = {\n fillColor: 'white',\n lineColor: BLACK,\n opacity: 1,\n };\n\n constructor(layer: OuterBinsLayer) {\n this.aes = {\n ...this.aes,\n ...layer.aes,\n };\n }\n}\n\nexport class BinsLineLayer {\n readonly type = 'binsLine';\n readonly aes: {\n opacity: number;\n } = {\n opacity: 1,\n };\n\n constructor(layer: OuterLineLayer) {\n this.aes = {\n ...this.aes,\n ...layer.aes,\n };\n }\n}\n\nexport type HistogramLayer = BinsLayer;\n\nexport class HistogramSettingsImpl implements SettingsInterface {\n readonly id: string;\n readonly type = 'histogram';\n readonly valueColumn: ColumnName;\n readonly binsCount: number;\n readonly facetSettings: {\n sharedX: boolean;\n sharedY: boolean;\n nRows?: number;\n nCols?: number;\n titlePosition: 'left' | 'center' | 'right';\n order: string[] | null;\n };\n readonly facetBy: ColumnName[];\n readonly grouping: ColumnName | null;\n readonly groupingStack: 'vertical' | 'horizontal';\n readonly groupingDirection: 'straight' | 'reverse';\n readonly groupingOrder: string[] | null;\n readonly chartSettings: {\n readonly size: {width: number; height: number, innerOffset: number, outerOffset: number};\n readonly title: {name: string; show: boolean; position: TitlePosition};\n readonly yAxis: {showGrid: boolean; showTicks: boolean; hiddenLabels: boolean; scale: 'linear' | 'log'};\n readonly xAxis: {showGrid: boolean; showTicks: boolean; hiddenLabels: boolean; title: string | ColumnName; scale: 'linear' | 'log'};\n readonly frame: {type: FrameType};\n readonly legend: {show: boolean; position: LegendPosition};\n };\n readonly inheritedAes: Record<string, AesRecord>;\n readonly layers: HistogramLayer[];\n\n constructor(settings: HistogramSettings) {\n HistogramSettingsSchema.parse(settings);\n this.id = lodash.uniqueId('settings');\n this.facetSettings = {sharedX: true, sharedY: true, titlePosition: 'left', order: settings.facetSettings?.order ?? null, ...settings.facetSettings};\n this.valueColumn = settings.valueColumn;\n this.binsCount = settings.binsCount ?? DEFAULT_BINS_COUNT;\n this.facetBy = settings.facetBy ?? [];\n this.grouping = settings.grouping ?? null;\n this.groupingStack = settings.groupingStack ?? 'vertical';\n this.groupingDirection = settings.groupingDirection ?? 'straight';\n this.groupingOrder = settings.groupingOrder ?? null;\n this.chartSettings = {\n size: {\n width: settings?.size?.width ?? (this.facetBy.length ? DEFAULT_WIDTH_SMALL : DEFAULT_WIDTH),\n height: settings?.size?.height ?? (this.facetBy.length ? DEFAULT_HEIGHT_SMALL : DEFAULT_HEIGHT),\n outerOffset: settings?.size?.outerOffset ?? MIN_MARGIN,\n innerOffset: settings?.size?.innerOffset ?? PADDINGS.TOP\n },\n title: {\n position: 'center',\n show: true,\n ...settings.title,\n name: settings.title?.name ?? 'Chart',\n },\n yAxis: {\n showGrid: true,\n showTicks: true,\n scale: settings.xAxis?.scale ?? 'linear',\n hiddenLabels: false,\n ...settings.yAxis,\n },\n xAxis: {\n title: settings.valueColumn.label ?? settings.valueColumn.value ?? '',\n scale: settings.xAxis?.scale ?? 'linear',\n showGrid: settings.xAxis?.showGrid ?? true,\n showTicks: settings.xAxis?.showTicks ?? true,\n hiddenLabels: settings.xAxis?.hiddenLabels ?? false,\n ...settings.xAxis,\n },\n frame: {type: settings.frame?.type ?? 'full'},\n legend: {\n show: true,\n position: 'right',\n ...settings.legend,\n },\n };\n\n this.inheritedAes = settings.inheritedAes ?? {};\n\n this.layers = settings.layers\n .map(layer => {\n if (layer.type === 'bins') {\n return new BinsLayer(layer);\n }\n if (layer.type === 'binsLine') {\n return new BinsLineLayer(layer);\n }\n exhaustive(layer, 'Unknown layer type');\n })\n .filter(Boolean) as HistogramLayer[];\n }\n}\n"],"names":["DEFAULT_BINS_COUNT","BinsLayer","layer","__publicField","BLACK","BinsLineLayer","HistogramSettingsImpl","settings","HistogramSettingsSchema","lodash","_a","_b","DEFAULT_WIDTH_SMALL","DEFAULT_WIDTH","_c","DEFAULT_HEIGHT_SMALL","DEFAULT_HEIGHT","_d","MIN_MARGIN","_e","PADDINGS","_f","_g","_h","_i","_j","_k","_l","exhaustive"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { DataFrame, RowIndex } from '../DataFrame';
|
|
1
|
+
import { DataFrame, GroupKey, RowIndex } from '../DataFrame';
|
|
2
2
|
import { ColumnName } from '../types';
|
|
3
3
|
export type BinData = {
|
|
4
4
|
indexes: RowIndex[];
|
|
@@ -26,5 +26,5 @@ export type GroupedHistogramData = {
|
|
|
26
26
|
};
|
|
27
27
|
export declare function createHistogramDataLinear(dataFrame: DataFrame, indexes: RowIndex[], column: ColumnName, binsCount: number, domain: [number, number], key: string, keyIdx: number): HistogramData;
|
|
28
28
|
export declare function createHistogramDataLog(dataFrame: DataFrame, indexes: RowIndex[], column: ColumnName, binsCount: number, domain: [number, number], key: string, keyIdx: number): HistogramData;
|
|
29
|
-
export declare function createHistogramDataByFacets(data: DataFrame, facetKeysCombinations:
|
|
29
|
+
export declare function createHistogramDataByFacets(data: DataFrame, facetKeysCombinations: GroupKey[][], groupingKeys: GroupKey[], valueColumn: ColumnName, binsCount: number, scale: 'linear' | 'log'): Record<string, GroupedHistogramData>;
|
|
30
30
|
//# sourceMappingURL=getHistogramData.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getHistogramData.d.ts","sourceRoot":"","sources":["../../src/histogram/getHistogramData.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"getHistogramData.d.ts","sourceRoot":"","sources":["../../src/histogram/getHistogramData.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAG3C,MAAM,MAAM,OAAO,GAAG;IAClB,OAAO,EAAE,QAAQ,EAAE,CAAC;IACpB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE;QACC,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAA;KAClB,CAAC;IACF,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAA;CAChB,CAAA;AACD,MAAM,MAAM,aAAa,GAAG;IACxB,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IAC/B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IACrD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB,EAAE,MAAM,CAAC;CAC9B,CAAA;AAiCD,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAC,MAAM,EAAE,MAAM,EAAC,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAC,MAAM,EAAE,MAAM,EAAC,MAAM,GAAE,aAAa,CAU3L;AACD,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAC,MAAM,EAAE,MAAM,EAAC,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAC,MAAM,EAAE,MAAM,EAAC,MAAM,GAAE,aAAa,CAaxL;AAED,wBAAgB,2BAA2B,CACvC,IAAI,EAAC,SAAS,EACd,qBAAqB,EAAE,QAAQ,EAAE,EAAE,EACnC,YAAY,EAAE,QAAQ,EAAE,EACxB,WAAW,EAAC,UAAU,EACtB,SAAS,EAAC,MAAM,EAChB,KAAK,EAAE,QAAQ,GAAG,KAAK,wCA6D1B"}
|
|
@@ -1,18 +1,19 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
import { getFacetStringKey as E } from "../discrete/utils/getFacetStringKey.js";
|
|
2
|
+
import S from "../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/bin.js";
|
|
3
|
+
import d from "../node_modules/.pnpm/d3-array@3.2.4/node_modules/d3-array/src/max.js";
|
|
4
|
+
import L from "../node_modules/.pnpm/d3-scale@4.0.2/node_modules/d3-scale/src/symlog.js";
|
|
5
|
+
const F = (e, a) => {
|
|
6
|
+
const r = Math.min(...a), t = Math.max(...a);
|
|
7
|
+
if (r === t)
|
|
8
|
+
return [r];
|
|
8
9
|
if (e < 2)
|
|
9
|
-
return [(
|
|
10
|
-
const
|
|
10
|
+
return [(r + t) / 2];
|
|
11
|
+
const s = (t - r) / e, g = [];
|
|
11
12
|
for (let n = 1; n < e; n++)
|
|
12
|
-
|
|
13
|
-
return
|
|
13
|
+
g.push(r + s * n);
|
|
14
|
+
return g;
|
|
14
15
|
};
|
|
15
|
-
function
|
|
16
|
+
function V(e, a, r) {
|
|
16
17
|
return e.map((t) => ({
|
|
17
18
|
indexes: t,
|
|
18
19
|
x: t.x0 ?? 0,
|
|
@@ -21,63 +22,63 @@ function D(e, c, o) {
|
|
|
21
22
|
reverse: t.length
|
|
22
23
|
},
|
|
23
24
|
count: t.length,
|
|
24
|
-
groupingKey:
|
|
25
|
-
groupingKeyIdx:
|
|
25
|
+
groupingKey: a,
|
|
26
|
+
groupingKeyIdx: r,
|
|
26
27
|
width: (t.x1 ?? 0) - (t.x0 ?? 0)
|
|
27
28
|
}));
|
|
28
29
|
}
|
|
29
|
-
function
|
|
30
|
-
const
|
|
30
|
+
function M(e, a, r, t, s, g, n) {
|
|
31
|
+
const y = F(t, s), o = S().domain(s).thresholds(y).value((c) => e.getColumnValue(r.value, c))(a);
|
|
31
32
|
return {
|
|
32
|
-
bins:
|
|
33
|
-
maxCount:
|
|
33
|
+
bins: V(o, g, n),
|
|
34
|
+
maxCount: d(o, (c) => c.length) ?? 0
|
|
34
35
|
};
|
|
35
36
|
}
|
|
36
|
-
function
|
|
37
|
-
const
|
|
37
|
+
function X(e, a, r, t, s, g, n) {
|
|
38
|
+
const y = F(t, s), o = L().domain(s).range(s), c = y.map((m) => o.invert(m)), l = S().domain(s).thresholds(c).value((m) => e.getColumnValue(r.value, m))(a);
|
|
38
39
|
return {
|
|
39
|
-
bins:
|
|
40
|
-
maxCount:
|
|
40
|
+
bins: V(l, g, n),
|
|
41
|
+
maxCount: d(l, (m) => m.length) ?? 0
|
|
41
42
|
};
|
|
42
43
|
}
|
|
43
|
-
function
|
|
44
|
+
function H(e, a, r, t, s, g) {
|
|
44
45
|
const n = {};
|
|
45
|
-
return
|
|
46
|
-
const
|
|
47
|
-
n[
|
|
48
|
-
groupingKeys:
|
|
46
|
+
return a.forEach((y) => {
|
|
47
|
+
const o = E(y);
|
|
48
|
+
n[o] = {
|
|
49
|
+
groupingKeys: r.map(String),
|
|
49
50
|
histogramByGroupingKey: {},
|
|
50
51
|
minX: 1 / 0,
|
|
51
52
|
maxX: -1 / 0,
|
|
52
53
|
maxCount: 0,
|
|
53
54
|
maxCountFromGroups: 0
|
|
54
55
|
};
|
|
55
|
-
let
|
|
56
|
-
for (let
|
|
57
|
-
const
|
|
58
|
-
|
|
56
|
+
let c, l;
|
|
57
|
+
for (let u = 0; u < e.getColumn(t.value).length; u++) {
|
|
58
|
+
const i = e.getColumnValue(t.value, u);
|
|
59
|
+
i !== null && (c === void 0 || c > i) && (c = i), i !== null && (l === void 0 || l < i) && (l = i);
|
|
59
60
|
}
|
|
60
|
-
const
|
|
61
|
-
|
|
62
|
-
const f = Array.from(e.getRowsByGrouping(
|
|
63
|
-
n[
|
|
64
|
-
const
|
|
65
|
-
x.bins.forEach((G,
|
|
66
|
-
G.y.straight = ((
|
|
61
|
+
const m = [c ?? 0, l ?? 0], B = [...r].reverse();
|
|
62
|
+
B.forEach((u, i) => {
|
|
63
|
+
const f = Array.from(e.getRowsByGrouping([...y, u])), p = r.indexOf(u), h = String(u), x = g === "linear" ? M(e, f, t, s, m, h, p) : X(e, f, t, s, m, h, p);
|
|
64
|
+
n[o].histogramByGroupingKey[h] = x, n[o].minX = m[0], n[o].maxX = m[1], n[o].maxCountFromGroups = Math.max(n[o].maxCountFromGroups, x.maxCount);
|
|
65
|
+
const v = i > 0 ? B[i - 1] : null, K = v !== null ? n[o].histogramByGroupingKey[String(v)] : null;
|
|
66
|
+
x.bins.forEach((G, D) => {
|
|
67
|
+
G.y.straight = ((K == null ? void 0 : K.bins[D].y.straight) ?? 0) + G.count, n[o].maxCount = Math.max(n[o].maxCount, G.y.straight);
|
|
67
68
|
});
|
|
68
69
|
});
|
|
69
|
-
const
|
|
70
|
-
|
|
71
|
-
const f =
|
|
72
|
-
|
|
73
|
-
|
|
70
|
+
const C = r;
|
|
71
|
+
C.forEach((u, i) => {
|
|
72
|
+
const f = i > 0 ? C[i - 1] : null, p = n[o].histogramByGroupingKey[String(u)], h = f !== null ? n[o].histogramByGroupingKey[String(f)] : null;
|
|
73
|
+
p.bins.forEach((x, v) => {
|
|
74
|
+
x.y.reverse = ((h == null ? void 0 : h.bins[v].y.reverse) ?? 0) + x.count;
|
|
74
75
|
});
|
|
75
76
|
});
|
|
76
77
|
}), n;
|
|
77
78
|
}
|
|
78
79
|
export {
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
80
|
+
H as createHistogramDataByFacets,
|
|
81
|
+
M as createHistogramDataLinear,
|
|
82
|
+
X as createHistogramDataLog
|
|
82
83
|
};
|
|
83
84
|
//# sourceMappingURL=getHistogramData.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getHistogramData.js","sources":["../../src/histogram/getHistogramData.ts"],"sourcesContent":["import type { Bin } from 'd3-array';\nimport { bin, max } from 'd3-array';\nimport { scaleSymlog } from 'd3-scale';\nimport type { DataFrame, RowIndex } from '../DataFrame';\nimport type { ColumnName } from '../types';\n\nexport type BinData = {\n indexes: RowIndex[];\n x: number,\n y: {\n straight: number,\n reverse: number\n },\n count: number,\n groupingKey: string,\n groupingKeyIdx: number,\n width: number\n}\nexport type HistogramData = {\n bins: BinData[];\n maxCount: number;\n};\n\nexport type GroupedHistogramData = {\n groupingKeys: string[],\n histogramByGroupingKey: Record<string, HistogramData>\n minX: number;\n maxX: number;\n maxCount: number;\n maxCountFromGroups: number;\n}\n\nconst getSteps = (count: number, valueExtent: number[]) => {\n const min = Math.min(...valueExtent);\n const max = Math.max(...valueExtent);\n if (min === max) {\n return [min];\n }\n if (count < 2) {\n return [(min + max) / 2];\n }\n const step = (max - min) / count;\n const steps = [];\n for (let i = 1; i < count; i++) {\n steps.push(min + step * i);\n }\n return steps;\n};\n\nfunction createBinData (bins:Bin<RowIndex, number>[], key:string, keyIdx:number):BinData[] {\n return bins.map((b) => ({\n indexes: b,\n x: b.x0 ?? 0,\n y: {\n straight: b.length,\n reverse: b.length\n },\n count: b.length,\n groupingKey: key,\n groupingKeyIdx: keyIdx,\n width: (b.x1 ?? 0) - (b.x0 ?? 0)\n }));\n}\nexport function createHistogramDataLinear(dataFrame: DataFrame, indexes: RowIndex[], column: ColumnName, binsCount:number, domain:[number, number], key:string, keyIdx:number):HistogramData {\n const ticks = getSteps(binsCount, domain);\n const bins = bin<RowIndex, number>()\n .domain(domain)\n .thresholds(ticks)\n .value((idx: RowIndex) => dataFrame.getColumnValue(column.value, idx) as number)(indexes);\n return {\n bins: createBinData(bins, key, keyIdx),\n maxCount: max(bins, (bin) => bin.length) ?? 0\n };\n}\nexport function createHistogramDataLog(dataFrame: DataFrame, indexes: RowIndex[], column: ColumnName, binsCount:number, domain:[number, number], key:string, keyIdx:number):HistogramData {\n const ticks= getSteps(binsCount, domain);\n const convertLog = scaleSymlog().domain(domain).range(domain);\n const ticksLog = ticks.map(t => convertLog.invert(t));\n const bins = bin<RowIndex, number>()\n .domain(domain)\n .thresholds(ticksLog)\n .value((idx: RowIndex) => dataFrame.getColumnValue(column.value, idx) as number)(indexes);\n\n return {\n bins: createBinData(bins, key, keyIdx),\n maxCount: max(bins, (bin) => bin.length) ?? 0\n };\n}\n\nexport function createHistogramDataByFacets(\n data:DataFrame,\n facetKeysCombinations:string[][],\n groupingKeys: string[],\n valueColumn:ColumnName,\n binsCount:number,\n scale: 'linear' | 'log'\n) {\n const result:Record<string, GroupedHistogramData> = {};\n facetKeysCombinations.forEach((facetKeys) => {\n const facetKey = facetKeys.join('_');\n result[facetKey] = {\n groupingKeys,\n histogramByGroupingKey: {},\n minX: Infinity,\n maxX: -Infinity,\n maxCount: 0,\n maxCountFromGroups: 0\n };\n let minV: number | undefined;\n let maxV: number | undefined;\n for (let i = 0; i < data.getColumn(valueColumn.value).length; i++) {\n const v = data.getColumnValue(valueColumn.value, i) as number;\n if (v !== null && (minV === undefined || minV > v)) {\n minV = v;\n }\n if (v !== null && (maxV === undefined || maxV < v)) {\n maxV = v;\n }\n }\n // minV ??= (data.getColumnValue(valueColumn.value, allFacetRowsIndexes[0]) ?? 0) as number;\n // maxV ??= (data.getColumnValue(valueColumn.value, allFacetRowsIndexes[0]) ?? 0) as number;\n const domain:[number, number] = [minV ?? 0, maxV ?? 0];\n const forwardKeys = [...groupingKeys].reverse();\n const isNoFacets = facetKeys.length === 1 && facetKeys[0] === 'null';\n const getGroupingPath = (groupingKey: string) => isNoFacets ? [groupingKey] : [...facetKeys, groupingKey];\n forwardKeys.forEach((groupingKey, _forwardIdx) => {\n const indexes = Array.from(data.getRowsByGrouping(getGroupingPath(groupingKey)));\n const groupingKeyIdx = groupingKeys.indexOf(groupingKey);\n const histogram = scale === 'linear'\n ? createHistogramDataLinear(data, indexes, valueColumn, binsCount, domain, groupingKey, groupingKeyIdx)\n : createHistogramDataLog(data, indexes, valueColumn, binsCount, domain, groupingKey, groupingKeyIdx);\n result[facetKey].histogramByGroupingKey[groupingKey] = histogram;\n result[facetKey].minX = domain[0];\n result[facetKey].maxX = domain[1];\n result[facetKey].maxCountFromGroups = Math.max(result[facetKey].maxCountFromGroups, histogram.maxCount);\n\n const previousKey = _forwardIdx > 0 ? forwardKeys[_forwardIdx - 1] : null;\n const previousHistogram = previousKey !== null ? result[facetKey].histogramByGroupingKey[previousKey] : null;\n\n histogram.bins.forEach((bin, binIdx) => {\n bin.y.straight = (previousHistogram?.bins[binIdx].y.straight ?? 0) + bin.count;\n result[facetKey].maxCount = Math.max(result[facetKey].maxCount, bin.y.straight);\n });\n });\n\n const reversedKeys = groupingKeys;\n reversedKeys.forEach((groupingKey, idx) => {\n const previousKey = idx > 0 ? reversedKeys[idx - 1] : null;\n const histogram = result[facetKey].histogramByGroupingKey[groupingKey];\n const previousHistogram = previousKey !== null ? result[facetKey].histogramByGroupingKey[previousKey] : null;\n\n histogram.bins.forEach((bin, binIdx) => {\n bin.y.reverse = (previousHistogram?.bins[binIdx].y.reverse ?? 0) + bin.count;\n });\n });\n });\n return result;\n}"],"names":["getSteps","count","valueExtent","min","max","step","steps","i","createBinData","bins","key","keyIdx","b","createHistogramDataLinear","dataFrame","indexes","column","binsCount","domain","ticks","bin","idx","createHistogramDataLog","convertLog","scaleSymlog","ticksLog","t","createHistogramDataByFacets","data","facetKeysCombinations","groupingKeys","valueColumn","scale","result","facetKeys","facetKey","minV","maxV","v","forwardKeys","isNoFacets","getGroupingPath","groupingKey","_forwardIdx","groupingKeyIdx","histogram","previousKey","previousHistogram","binIdx","reversedKeys"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"getHistogramData.js","sources":["../../src/histogram/getHistogramData.ts"],"sourcesContent":["import type { Bin } from 'd3-array';\nimport { bin, max } from 'd3-array';\nimport { scaleSymlog } from 'd3-scale';\nimport type { DataFrame, GroupKey, RowIndex } from '../DataFrame';\nimport type { ColumnName } from '../types';\nimport { getFacetStringKey } from '../discrete/utils/getFacetStringKey';\n\nexport type BinData = {\n indexes: RowIndex[];\n x: number,\n y: {\n straight: number,\n reverse: number\n },\n count: number,\n groupingKey: string,\n groupingKeyIdx: number,\n width: number\n}\nexport type HistogramData = {\n bins: BinData[];\n maxCount: number;\n};\n\nexport type GroupedHistogramData = {\n groupingKeys: string[],\n histogramByGroupingKey: Record<string, HistogramData>\n minX: number;\n maxX: number;\n maxCount: number;\n maxCountFromGroups: number;\n}\n\nconst getSteps = (count: number, valueExtent: number[]) => {\n const min = Math.min(...valueExtent);\n const max = Math.max(...valueExtent);\n if (min === max) {\n return [min];\n }\n if (count < 2) {\n return [(min + max) / 2];\n }\n const step = (max - min) / count;\n const steps = [];\n for (let i = 1; i < count; i++) {\n steps.push(min + step * i);\n }\n return steps;\n};\n\nfunction createBinData (bins:Bin<RowIndex, number>[], key:string, keyIdx:number):BinData[] {\n return bins.map((b) => ({\n indexes: b,\n x: b.x0 ?? 0,\n y: {\n straight: b.length,\n reverse: b.length\n },\n count: b.length,\n groupingKey: key,\n groupingKeyIdx: keyIdx,\n width: (b.x1 ?? 0) - (b.x0 ?? 0)\n }));\n}\nexport function createHistogramDataLinear(dataFrame: DataFrame, indexes: RowIndex[], column: ColumnName, binsCount:number, domain:[number, number], key:string, keyIdx:number):HistogramData {\n const ticks = getSteps(binsCount, domain);\n const bins = bin<RowIndex, number>()\n .domain(domain)\n .thresholds(ticks)\n .value((idx: RowIndex) => dataFrame.getColumnValue(column.value, idx) as number)(indexes);\n return {\n bins: createBinData(bins, key, keyIdx),\n maxCount: max(bins, (bin) => bin.length) ?? 0\n };\n}\nexport function createHistogramDataLog(dataFrame: DataFrame, indexes: RowIndex[], column: ColumnName, binsCount:number, domain:[number, number], key:string, keyIdx:number):HistogramData {\n const ticks= getSteps(binsCount, domain);\n const convertLog = scaleSymlog().domain(domain).range(domain);\n const ticksLog = ticks.map(t => convertLog.invert(t));\n const bins = bin<RowIndex, number>()\n .domain(domain)\n .thresholds(ticksLog)\n .value((idx: RowIndex) => dataFrame.getColumnValue(column.value, idx) as number)(indexes);\n\n return {\n bins: createBinData(bins, key, keyIdx),\n maxCount: max(bins, (bin) => bin.length) ?? 0\n };\n}\n\nexport function createHistogramDataByFacets(\n data:DataFrame,\n facetKeysCombinations: GroupKey[][],\n groupingKeys: GroupKey[],\n valueColumn:ColumnName,\n binsCount:number,\n scale: 'linear' | 'log'\n) {\n const result:Record<string, GroupedHistogramData> = {};\n facetKeysCombinations.forEach((facetKeyCombination) => {\n const facetKey = getFacetStringKey(facetKeyCombination);\n result[facetKey] = {\n groupingKeys: groupingKeys.map(String),\n histogramByGroupingKey: {},\n minX: Infinity,\n maxX: -Infinity,\n maxCount: 0,\n maxCountFromGroups: 0\n };\n let minV: number | undefined;\n let maxV: number | undefined;\n for (let i = 0; i < data.getColumn(valueColumn.value).length; i++) {\n const v = data.getColumnValue(valueColumn.value, i) as number;\n if (v !== null && (minV === undefined || minV > v)) {\n minV = v;\n }\n if (v !== null && (maxV === undefined || maxV < v)) {\n maxV = v;\n }\n }\n // minV ??= (data.getColumnValue(valueColumn.value, allFacetRowsIndexes[0]) ?? 0) as number;\n // maxV ??= (data.getColumnValue(valueColumn.value, allFacetRowsIndexes[0]) ?? 0) as number;\n const domain:[number, number] = [minV ?? 0, maxV ?? 0];\n const forwardKeys = [...groupingKeys].reverse();\n forwardKeys.forEach((groupingKey, _forwardIdx) => {\n const indexes = Array.from(data.getRowsByGrouping([...facetKeyCombination, groupingKey]));\n const groupingKeyIdx = groupingKeys.indexOf(groupingKey);\n const groupingKeyStr = String(groupingKey);\n const histogram = scale === 'linear'\n ? createHistogramDataLinear(data, indexes, valueColumn, binsCount, domain, groupingKeyStr, groupingKeyIdx)\n : createHistogramDataLog(data, indexes, valueColumn, binsCount, domain, groupingKeyStr, groupingKeyIdx);\n result[facetKey].histogramByGroupingKey[groupingKeyStr] = histogram;\n result[facetKey].minX = domain[0];\n result[facetKey].maxX = domain[1];\n result[facetKey].maxCountFromGroups = Math.max(result[facetKey].maxCountFromGroups, histogram.maxCount);\n\n const previousKey = _forwardIdx > 0 ? forwardKeys[_forwardIdx - 1] : null;\n const previousHistogram = previousKey !== null ? result[facetKey].histogramByGroupingKey[String(previousKey)] : null;\n\n histogram.bins.forEach((bin, binIdx) => {\n bin.y.straight = (previousHistogram?.bins[binIdx].y.straight ?? 0) + bin.count;\n result[facetKey].maxCount = Math.max(result[facetKey].maxCount, bin.y.straight);\n });\n });\n\n const reversedKeys = groupingKeys;\n reversedKeys.forEach((groupingKey, idx) => {\n const previousKey = idx > 0 ? reversedKeys[idx - 1] : null;\n const histogram = result[facetKey].histogramByGroupingKey[String(groupingKey)];\n const previousHistogram = previousKey !== null ? result[facetKey].histogramByGroupingKey[String(previousKey)] : null;\n\n histogram.bins.forEach((bin, binIdx) => {\n bin.y.reverse = (previousHistogram?.bins[binIdx].y.reverse ?? 0) + bin.count;\n });\n });\n });\n return result;\n}"],"names":["getSteps","count","valueExtent","min","max","step","steps","i","createBinData","bins","key","keyIdx","b","createHistogramDataLinear","dataFrame","indexes","column","binsCount","domain","ticks","bin","idx","createHistogramDataLog","convertLog","scaleSymlog","ticksLog","t","createHistogramDataByFacets","data","facetKeysCombinations","groupingKeys","valueColumn","scale","result","facetKeyCombination","facetKey","getFacetStringKey","minV","maxV","v","forwardKeys","groupingKey","_forwardIdx","groupingKeyIdx","groupingKeyStr","histogram","previousKey","previousHistogram","binIdx","reversedKeys"],"mappings":"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"}
|
|
@@ -11,7 +11,6 @@ export declare class ChartHistogram extends AbstractChart {
|
|
|
11
11
|
onTooltipHintSwitch: (v: boolean) => void;
|
|
12
12
|
calculatedData: {
|
|
13
13
|
facetKeys: string[];
|
|
14
|
-
facetKeysCombinations: string[][];
|
|
15
14
|
histogramDataByFacets: Record<string, GroupedHistogramData>;
|
|
16
15
|
legendInfo: HistogramLegendInfo;
|
|
17
16
|
facetLabels: Record<string, string[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/histogram/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/histogram/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAC,MAAM,cAAc,CAAC;AAG7C,OAAO,EAAuD,KAAK,sBAAsB,EAAE,KAAK,iBAAiB,EAAe,MAAM,UAAU,CAAC;AAEjJ,OAAO,aAAa,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AA0ChE,qBAAa,cAAe,SAAQ,aAAa;IAC7C,QAAQ,EAAE,qBAAqB,CAAC;IAChC,aAAa,gBAAuB;IAEpC,mBAAmB,EAAE,CAAC,CAAC,EAAC,OAAO,KAAK,IAAI,CAAmB;IAC3D,cAAc,EAAE;QACZ,SAAS,EAAE,MAAM,EAAE,CAAC;QACpB,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAA;QAC3D,UAAU,EAAE,mBAAmB,CAAC;QAChC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;KACzC,GAAG,IAAI,CAAQ;gBAEJ,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,iBAAiB,EAAE,aAAa,CAAC,EAAE,sBAAsB;IAShG,KAAK,CAAC,IAAI,EAAE,WAAW;IAiBvB,OAAO;IAIP,qBAAqB,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,iBAAiB;IA2BlE,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO;IAIhD,MAAM,IAAI,MAAM;IAKhB,mCAAmC,CAAC,YAAY,EAAE,qBAAqB,EAAE,QAAQ,EAAE,qBAAqB;IAgBxG,+BAA+B,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS;IAUpE,WAAW;IA2CX,gBAAgB;IAOhB,YAAY;CA0Bf"}
|