问题描述
有时我的折线图位于屏幕的右下角,这使得阅读起来有点困难。如何在多个折线图周围设置内边距?
// Bind X Axes together.
const HandleScaleChangeX = (chartIndex) => {
return (start,end) => {
for (let i = 0; i < charts.length; i++) {
const axis = charts[i].getDefaultAxisX()
if (end !== xVal) {
axis.setInterval(start,xVal+50,false,true)
}
}
}
}
for (let i = 0; i < charts.length; i++) {
const chart = charts[i]
chart.getDefaultAxisX()
.onScaleChange(HandleScaleChangeX(i))
}
而以下行(其中 xVal
是图表的长度)工作正常:
axis.setInterval(start,xVal,true)
解决方法
您真的很接近实现带有固定 X 结束值的右侧填充的代码。您只需要更改 if(end !== xVal)
检查以检查 end
是否与 xVal + padding
相同,其中 padding
是您想要作为填充的数量。然后在设置新间隔时,您可以将结束值设置为 xVal + padding
。
let padding = 50
if (end !== xVal + padding) {
axis.setInterval(start,xVal + padding,false,true)
}
在 Y 轴上,您希望控制轴间隔的开始和结束,因此 onScaleChange
中间隔的更改必须汇总到对 setInterval
的单个调用。填充的应用与刚才在 X 轴上的方法相同,事件附加到 Y 轴。
const axisY = chart.getDefaultAxisY()
let yMaxVal = 15
let yMinVal = 0
axisY.onScaleChange((start,end) => {
let newScaleStart = start
let newScaleEnd = end
let updateInterval = false
if (end < yMaxVal + padding) {
newScaleEnd = yMaxVal + padding
updateInterval = true
}
if (start > yMinVal - padding) {
newScaleStart = yMinVal - padding
updateInterval = true
}
if (updateInterval) {
axisY.setInterval(newScaleStart,newScaleEnd,true)
}
})
如果您想将 Y 开始和结束固定为特定值,您可以在使用 {{1} 将开始和结束与填充值进行比较时更改 <
和 >
比较} 比较。
!==
这将使 Y 轴最小值保持在包含填充的固定点上。