【问题标题】:Chartjs v2.5 - only show min and max on scale, absolute positioning on scaleChartjs v2.5 - 仅按比例显示最小值和最大值,按比例显示绝对定位
【发布时间】:2017-05-16 21:47:47
【问题描述】:

我创建了一个非常简单的折线图,用于移动设备。我发现当我包含比例尺时,它会占用图表一侧的大量空间。

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

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

这个规模的两个主要内容:

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

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

【问题讨论】:

  • 您可以添加您的代码或 JSFiddle 吗?
  • jsfiddle.net/ujsg9w8r ... 这是我现在存在的图表的小提琴。我把秤弄乱了,但运气不太好,所以我把它留在了现在。

标签: javascript chart.js chart.js2


【解决方案1】:

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

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

首先,使用 JavaScript max()min() 方法来确定数据数组中的最大值和最小值:

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

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

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

2。将标签移到图表右侧

这可以分两步完成:

  • 添加position: "right" 将对齐刻度yAxes 移动到图表的右侧。
  • 在刻度配置中设置mirror: true 以将标签翻转到yAxes 上,使其显示在图表中。

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

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

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

请参阅How To Format Scale Numbers in Chart.js v2Formatting 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/

【讨论】:

  • 谢谢! JS 不是我的强项,所以我很欣赏这一点。两个快速跟进:我注意到在你的小提琴中,数字的格式是12.3,没有任何多余的 JS。我怎样才能让它显示为$12.30 ...其次,知道如何更改黑色yaxis线的颜色吗?设置color: "#ffffff" 只会更改文本,不会更改行。
  • @itwasluck3 我已经更新了我的答案以包括后续问题。我还更新了 JSFiddle 链接。
  • 太棒了。非常感谢!从学习的角度来看,你的一步一步是非常有价值的。干杯!
猜你喜欢
  • 2013-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-04
  • 2012-01-19
  • 1970-01-01
  • 2013-08-25
  • 1970-01-01
相关资源
最近更新 更多