折线图(Line)
数据集属性
折线图允许为每个数据集指定多个属性以显示特定数据集。所有 point *属性都可以被指定为一个数组。如果这些设置为数组值,则第一个值应用于第一个点,第二个值应用于第二个点,依此类推。
支持以下插值模式:
- 'default'
- 'monotone'.
“default”使用自定义加权立方插值,为所有类型的数据集生成曲线。
“monotone”更适合于y = f(x)
数据集:它保留被插值数据集的单调性(或分段单调性),并确保局部极值(如果有的话)停留在输入数据点。
如果保持不变(undefined
),则使用全局·options.elements.line.cubicInterpolationMode
属性。
stepsLine
支持以下值:
false
: 不设置 (默认)'before'
: 之前'after'
: 之后
如果设置stepsLine
值为 false 以外的任何值,lineTension
将被忽略。
配置选项
折线图定义了以下配置选项。这些选项与全局图表配置选项Chart.defaults.global
合并,形成最终传递给图表的选项。
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
showLines | Boolean | true | 如果为 false,则在数据点之间不显示线条 |
spanGaps | Boolean | false | 如果为 false, NaN 数据会在折线中间显示一个间断 |
例如,要使用spanGaps = true
配置所有折线图,应该这样:
Chart.defaults.line.spanGaps = true;
数据结构
线形图数据集的data
属性可以使用两种方式。
当数据是数字数组时,x 轴通常是一个category。数据点则按照在数组中的索引,依次显示在图表上。使用 category 轴创建折线图时,必须指定数据对象的labels
属性。
{
x: 10,
y: 20
},
{
x: 15,
y: 10
}
];
此项用于稀疏数据集,例如中的数据集。每个数据点都使用包含x
和 y
属性的对象来指定。
堆积面积图
通过更改 y
轴上的设置以启用堆叠,折线图可以配置为堆积面积图。堆积面积图可以用来显示一个数据趋势是如何由多个小块组成的。
高性能折线图
绘制大量数据时,图表渲染时间可能会开始变得相当长。在这种情况下,可以使用以下策略来提高性能。
数据抽取
数据抽取有许多方法,算法的选择取决于你的数据和你想要达到的结果。例如,抽取将保留数据中的峰值,但每个像素最多可能需要 4 个点。这种类型的抽取对于在非常嘈杂的数据中查看峰值数据很有效。
在图表上绘制直线比贝塞尔曲线更高效,因此禁用贝塞尔曲线将提高渲染时间。
要为整个图表禁用贝塞尔曲线,执行以下操作:
new Chart(ctx, {
type: "line",
data: data,
options: {
elements: {
tension: 0 // 禁用贝塞尔曲线
}
}
}
});
不渲染线条
如果有很多数据点,那么可以禁用线条的的渲染并仅绘制点。这样做意味着在画布上绘画将会减少更多渲染,从而提高性能。
要禁用线条渲染,可执行以下操作:
禁用动画
如果你的图表渲染需要很长时间,那么禁用动画是一个好办法。这样做意味着图表只需要在更新期间渲染而不是多次渲染。这将减少 CPU 使用率并改善一般页面的性能。
new Chart(ctx, {
type: "line",
data: data,
options: {
animation: {
duration: 0 // 一般动画时间
},
hover: {
animationDuration: 0 // 悬停项目时动画的持续时间
},
responsiveAnimationDuration: 0 // 调整大小后的动画持续时间
}
});