0

我用 LightningChart JS 创建了一个图表,并想格式化我的 y 轴刻度标签。

正常的做法应该是使用该tickStrategy.formatValue功能:

const axisY = chart.getDefaultAxisY()

axisY.tickStrategy.formatValue = (value, range) => {
      return value + ' Y';
};

如果我这样做,两个轴标签都被格式化为 (X, Y) 而不仅仅是 y 轴。

LightningChartJS 刻度标签格式化程序示例

所以我的问题是如何仅将格式化程序应用于一个轴?

请查看我的片段,我尝试更改 x 和 y 的标签。但是一个在两个轴上都覆盖了另一个。

const {
    lightningChart,
} = lcjs

const chart = lightningChart().ChartXY()

const axisX = chart.getDefaultAxisX()
const axisY = chart.getDefaultAxisY()

const tickX = axisX.tickStrategy.formatValue = (value, range) => {
             return value + ' X';
             };
             
const tickY = axisY.tickStrategy.formatValue = (value, range) => {
             return value + ' Y';
             };
<script src="https://unpkg.com/@arction/lcjs@1.3.1/dist/lcjs.iife.js"></script>

4

1 回答 1

2

好吧,解决方案很简单,但不是很明显。

我必须创建一个默认轴策略并使用Object.assign({}).

const chart = lightningChart().ChartXY({
    defaultAxisXTickStrategy: Object.assign({}, AxisTickStrategies.Numeric)
})

之后,格式化程序函数具有预期的行为。

const {
    lightningChart,
    AxisTickStrategies
} = lcjs

const chart = lightningChart().ChartXY({
    defaultAxisXTickStrategy: Object.assign({}, AxisTickStrategies.Numeric)
});

const axisX = chart.getDefaultAxisX();
const axisY = chart.getDefaultAxisY();

const tickX = axisX.tickStrategy.formatValue = (value, range) => {
             return value + ' X';
             };
             
const tickY = axisY.tickStrategy.formatValue = (value, range) => {
             return value + ' Y';
             };
<script src="https://unpkg.com/@arction/lcjs@1.3.1/dist/lcjs.iife.js"></script>

于 2020-07-29T13:07:49.603 回答