Chart.js需安装chartjs-plugin-annotation插件才能添加基准线(官方称annotation),配置中启用plugins.annotation.annotations并设yMin=yMax画水平线,否则静默失效。

Chart.js 里怎么加警戒线(基准线)
Chart.js 本身不叫“警戒线”,官方术语是 annotation,得装 chartjs-plugin-annotation 插件才能加。不装插件直接写 plugins: { annotation: { ... } } 会静默失效,控制台也不报错——这是最常踩的坑。
安装后,在配置中启用:
plugins: {
annotation: {
annotations: [{
type: 'line',
yMin: 75,
yMax: 75,
borderColor: '#e74c3c',
borderWidth: 2,
label: {
content: '达标线',
display: true
}
}]
}
}
-
yMin和yMax必须相等才画水平线;设成不同值会变成带高度的色块区域 - 如果图表是时间轴(
xAxis.type: 'time'),要用xMin/xMax+type: 'line'配合value写时间戳,别传字符串日期 - 多个基准线就往
annotations: []里 push 多个对象,别嵌套或覆盖 - label 文字默认居左上角,想右对齐得加
position: 'end'和align: 'end'
Canvas 手绘仪表盘如何画基准弧线
Canvas 没有“插件”概念,基准线就是你手动多画一条弧。关键不是“怎么画”,而是“怎么算角度和半径”——它必须和主进度弧用同一套映射逻辑,否则视觉错位。
假设你的仪表盘量程是 minVal = 0、maxVal = 100,物理角度范围是 startAngle = -Math.PI/6(-30°)到 endAngle = Math.PI*7/6(210°),那么基准值 75 对应的角度就是:
const baseAngle = startAngle + (75 - minVal) / (maxVal - minVal) * (endAngle - startAngle);
- 别用
ctx.arc()画整圆再裁剪,直接用ctx.arc()的startAngle和endAngle参数画短弧更干净 - 基准弧半径建议比主弧小 8–12px,避免重叠干扰读数
- 如果要加文字标注(如“75%”),别用
fillText硬写坐标,先用三角函数算出弧中点:x = centerX + Math.cos(baseAngle) * (radius - 5),再配textAlign = 'center'+textBaseline = 'middle'
SVG 仪表盘里用 模拟基准刻度
SVG 没有内置基准线,但你可以把基准值当做一个特殊刻度来画:用 从圆心出发,按基准值对应的角度延伸出去,再加一个 标注。前提是角度公式和指针完全一致。
实现 Markdown↔ HTML 互转,支持导出 PDF,用于用户请求的文档格式转换。
例如基准值 80,当前量程 0–100,角度扇区 -30° 到 210°(共 240°):
const angle = -30 + (80 / 100) * 240; // = 162° const rad = angle * Math.PI / 180; const x2 = Math.cos(rad) * 90; const y2 = Math.sin(rad) * 90;
- 别在
上直接写transform="rotate(162)",那会绕 SVG 左上角转;必须用x2/y2显式定义端点 - 基准刻度线建议用
stroke-dasharray="4,3"区别于主刻度,颜色也换一个(比如#9b59b6) -
的text-anchor设为"middle",dominant-baseline设为"middle",再把x/y定在(x2 * 1.1, y2 * 1.1),就能稳稳悬在刻度外侧 - 如果基准值会变(比如从 75 动态切到 85),不要
innerHTML = ""清空重画,用baseLineElement.setAttribute('x2', new_x2)直接改属性更轻量
为什么 ECharts 基准线设置后不显示
ECharts 的 markLine 或 data 中的 type: 'average' 不生效,大概率是因为数据系列没配 encode 或坐标轴类型不匹配。
最稳妥写法是明确指定 yAxisIndex: 0 并用数值型 data:
markLine: {
data: [{ yAxis: 75, name: '达标线' }, { yAxis: 90, name: '优秀线' }]
}
- 如果 Y 轴是类目轴(
type: 'category'),yAxis: 75会被当成索引下标,而不是数值——必须改成type: 'value' - 折线图/柱状图可用
markLine,但饼图、雷达图、仪表图(gauge)不支持,它们得用detail或axisLine的lineStyle模拟 - 基准线颜色默认灰色,容易被忽略,务必显式设
lineStyle.color - 移动端缩放后线变虚?加
lineStyle.width: 2和lineStyle.shadowBlur: 0强制清晰
真正难的不是“加一条线”,而是让这条线在数据变化、缩放、主题切换时始终语义准确、视觉稳定。所有方案都绕不开统一的角度/数值映射逻辑——漏掉这步,基准线就成了装饰画。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










