in src/EnhancedScatterChart.ts [2895:2974]
public calculateAxesProperties(options: CalculateScaleAndDomainOptions): IAxisProperties[] {
const data: EnhancedScatterChartData = this.data,
dataPoints: EnhancedScatterChartDataPoint[] = data.dataPoints;
this.margin = options.margin;
this.viewport = options.viewport;
let minY: number = EnhancedScatterChart.MinAxisValue,
maxY: number = EnhancedScatterChart.MaxAxisValue,
minX: number = EnhancedScatterChart.MinAxisValue,
maxX: number = EnhancedScatterChart.MaxAxisValue;
if (dataPoints.length > 0) {
minY = d3.min<EnhancedScatterChartDataPoint, number>(dataPoints, dataPoint => dataPoint.y);
maxY = d3.max<EnhancedScatterChartDataPoint, number>(dataPoints, dataPoint => dataPoint.y);
minX = d3.min<EnhancedScatterChartDataPoint, number>(dataPoints, dataPoint => dataPoint.x);
maxX = d3.max<EnhancedScatterChartDataPoint, number>(dataPoints, dataPoint => dataPoint.x);
}
const xDomain: number[] = [minX, maxX];
const combinedXDomain: number[] = axis.combineDomain(
this.optimizeTranslateValues(options.forcedXDomain),
xDomain
);
const xAxisFormatString: string = valueFormatter.getFormatStringByColumn(data.xCol);
this.xAxisProperties = axis.createAxis({
pixelSpan: this.viewportIn.width,
dataDomain: combinedXDomain,
metaDataColumn: data.xCol,
formatString: xAxisFormatString,
outerPadding: EnhancedScatterChart.OuterPadding,
isScalar: true,
isVertical: false,
getValueFn: (index, dataType) => dataType.dateTime ? EnhancedScatterChart.displayTimestamp(index) : index,
forcedTickCount: options.forcedTickCount,
useTickIntervalForDisplayUnits: true,
isCategoryAxis: true, // scatter doesn"t have a categorical axis, but this is needed for the pane to react correctly to the x-axis toggle one/off
scaleType: options.categoryAxisScaleType,
axisDisplayUnits: options.categoryAxisDisplayUnits
});
this.xAxisProperties.axis
.tickSize(-this.viewportIn.height)
.tickSizeOuter(EnhancedScatterChart.OuterPadding);
this.xAxisProperties.axisLabel = this.data.axesLabels.x;
const combinedYDomain: number[] = axis.combineDomain(
this.optimizeTranslateValues(options.forcedYDomain),
[minY, maxY]
);
const yAxisFormatString: string = valueFormatter.getFormatStringByColumn(data.yCol);
this.yAxisProperties = axis.createAxis({
pixelSpan: this.viewportIn.height,
dataDomain: combinedYDomain,
metaDataColumn: data.yCol,
formatString: yAxisFormatString,
outerPadding: EnhancedScatterChart.OuterPadding,
isScalar: true,
isVertical: true,
getValueFn: (index, dataType) => dataType.dateTime ? EnhancedScatterChart.displayTimestamp(index) : index,
forcedTickCount: options.forcedTickCount,
useTickIntervalForDisplayUnits: true,
isCategoryAxis: false,
scaleType: options.valueAxisScaleType,
axisDisplayUnits: options.valueAxisDisplayUnits,
});
this.yAxisProperties.axisLabel = this.data.axesLabels.y;
return [
this.xAxisProperties,
this.yAxisProperties
];
}