Chartjs v2.5 - 只显示最小值和最大值,绝对定位
Chartjs v2.5 - only show min and max on scale, absolute positioning on scale
我创建了一个非常简单的折线图,用于移动设备。我发现当我包括比例尺时,它在图表的一侧占据了很多 space。
相反,我在其他移动图表上看到的只是显示最小值和最大值。用户可以使用工具提示来查找细节。
无论如何,我希望有人能告诉我如何创建一个像这里这样的音阶:
这个量表的两个主要内容:
- 只显示最小值和最大值
- 它们以绝对定位显示在大约左上角和右下角。
我的思考过程可能是使用 scaleOverride
,然后用 scaleStepWidth
定义 scaleSteps : 1
等于我的数据的最小值和最大值之间的差值。即使这是在正确的轨道上,我也不知道如何将比例尺的定位覆盖为绝对值而不是 space 远离直线本身。
我已将此答案分解为使您的图表看起来像提供的图像所需的步骤:
1。只显示最大和最小标签
首先,使用JavaScriptmax()
and min()
方法确定数据数组中的最高值和最低值:
var min = Math.min(...data);
var max = Math.max(...data);
然后,将以下选项添加到 yAxes
ticks configuration 部分:
- 将
max
和 min
值设置为数据数组的最大值和最小值。
- 设置
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。更改标签字体格式
这不在你的问题中,但如果你想更改标签字体颜色和大小,只需使用 fontColor
和 fontSize
勾选配置选项。
最终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/
我创建了一个非常简单的折线图,用于移动设备。我发现当我包括比例尺时,它在图表的一侧占据了很多 space。
相反,我在其他移动图表上看到的只是显示最小值和最大值。用户可以使用工具提示来查找细节。
无论如何,我希望有人能告诉我如何创建一个像这里这样的音阶:
这个量表的两个主要内容:
- 只显示最小值和最大值
- 它们以绝对定位显示在大约左上角和右下角。
我的思考过程可能是使用 scaleOverride
,然后用 scaleStepWidth
定义 scaleSteps : 1
等于我的数据的最小值和最大值之间的差值。即使这是在正确的轨道上,我也不知道如何将比例尺的定位覆盖为绝对值而不是 space 远离直线本身。
我已将此答案分解为使您的图表看起来像提供的图像所需的步骤:
1。只显示最大和最小标签
首先,使用JavaScriptmax()
and min()
方法确定数据数组中的最高值和最低值:
var min = Math.min(...data);
var max = Math.max(...data);
然后,将以下选项添加到 yAxes
ticks configuration 部分:
- 将
max
和min
值设置为数据数组的最大值和最小值。 - 设置
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。更改标签字体格式
这不在你的问题中,但如果你想更改标签字体颜色和大小,只需使用 fontColor
和 fontSize
勾选配置选项。
最终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/