ChartJs右侧Y轴配置:刻度仅显示半长且覆盖全数值范围
实现Chart.js右侧Y轴刻度仅显示在轴长一半区域且覆盖全数值区间
需求:让Chart.js的右侧Y轴(y1轴)刻度仅展示在轴长度的一半范围内,同时确保刻度覆盖该轴的全部数值区间。
修改后的Y轴配置代码如下:
y1: { type: 'linear', position: 'right', title: { display: true, text: document.getElementById('inputY1Title').value || 'Energy Absorption (kNm)', font: { size: 16, weight: 'bold', family: "'Noto Sans SC', 'SimHei', sans-serif" }, color: 'black', }, grid: { drawOnChartArea: false }, // 调整轴的显示区域,让刻度仅占轴长一半 afterFit: function(scale) { // 将轴高度压缩为原高度的一半(示例为显示在上半部分) scale.height = scale.height / 2; // 保持轴顶部位置不变,刻度会集中在上半区域 scale.top = scale.top; }, // 确保刻度覆盖全部数值区间 ticks: { autoSkip: false, maxRotation: 0 } }
关键配置说明:
afterFit回调:在轴完成尺寸计算后修改其显示区域。上述代码将轴高度减半,保持顶部位置不变,刻度就会集中在轴的上半部分;若要显示在下半部分,只需把scale.top改为scale.top + scale.height(此时height已为减半后的值)。ticks中的autoSkip: false:强制显示所有必要刻度,避免因空间不足自动跳过,保证数值区间的完整覆盖;maxRotation: 0让刻度文字水平显示,避免排版混乱。
内容的提问来源于stack exchange,提问作者hu wu
相关产品推荐
相关产品推荐

