Chartjs v2.5 - 只显示最小值和最大值,绝对定位

Chartjs v2.5 - only show min and max on scale, absolute positioning on scale

我创建了一个非常简单的折线图,用于移动设备。我发现当我包括比例尺时,它在图表的一侧占据了很多 space。

相反,我在其他移动图表上看到的只是显示最小值和最大值。用户可以使用工具提示来查找细节。

无论如何,我希望有人能告诉我如何创建一个像这里这样的音阶:

这个量表的两个主要内容:

  1. 只显示最小值和最大值
  2. 它们以绝对定位显示在大约左上角和右下角。

我的思考过程可能是使用 scaleOverride,然后用 scaleStepWidth 定义 scaleSteps : 1 等于我的数据的最小值和最大值之间的差值。即使这是在正确的轨道上,我也不知道如何将比例尺的定位覆盖为绝对值而不是 space 远离直线本身。

我已将此答案分解为使您的图表看起来像提供的图像所需的步骤:

1。只显示最大和最小标签

首先,使用JavaScriptmax() and min()方法确定数据数组中的最高值和最低值:

var min = Math.min(...data);
var max = Math.max(...data);

然后,将以下选项添加到 yAxes ticks configuration 部分:

  • maxmin 值设置为数据数组的最大值和最小值。
  • 设置stepSize为最大值和最小值之差。这将确保它只显示标签中的最高和最低数字。

2。将标签移动到图表右侧内部

这可以分两步完成:

  • 添加 position: "right" 以将比例 yAxes 移动到图表的右侧。
  • 在 ticks 配置中设置 mirror: true 以翻转 yAxes 上的标签,让它们显示在图表内。

3。使用美元符号和 2 个小数位格式化数字

要使用美元符号和两位小数来格式化数字,请将 callback 函数添加到刻度选项:

callback: function(value) {
    return '$' + value.toFixed(2);
}

有关详细信息,请参阅 How To Format Scale Numbers in Chart.js v2 and Formatting a number with exactly two decimals in JavaScript

4。更改颜色或隐藏 yAxes 网格线

尽管您的问题是关于更改网格线的颜色,但根据提供的图像,我假设您要删除 yAxes 线。要删除网格线,请在 grid line configuration 设置中将 drawBorder 设置为 false

如果您确实想将网格线颜色更改为白色,color: "#fff" 将起作用,您只需要确保将该行放在 gridLines 配置部分中,例如:

gridLines: {
    color: "#fff"
}

5。更改标签字体格式

这不在你的问题中,但如果你想更改标签字体颜色和大小,只需使用 fontColorfontSize 勾选配置选项。

最终yAxes代码:

yAxes: [{
    id: 'share_price',
    type: 'linear',
    position: "right",
    gridLines: {
        display: false,
        drawBorder: false,
        //color: "#fff"
    },
    ticks: {
        stepSize: max - min,
        min: min,
        max: max,
        mirror: true,
        fontColor: "#fff",
        fontSize: 18,
        callback: function(value) {
            return '$' + value.toFixed(2);
        }
    }
}]

JSFiddle 演示:https://jsfiddle.net/ujsg9w8r/5/