根据垂直条形图柱高设置数据标签的位置
set the position of data label according to vertical bar chart column height
我正在使用带有图表 js 2.9.4 包的 vue chat js。并且还插入了图表 js 插件 datalabels 以显示数据标签。我创建了一个垂直条形图,当某些列的高度较低时,数据标签与 x 轴重叠。为了避免这种情况,我做了如下操作。
plugins: {
datalabels: {
align(context) {
const index = context.dataIndex
const value = context.dataset.data[index]
return value < 10 ? 'top' : 'center'
},
}
}
如您所见,我不得不手动添加一个条件来设置数据标签的位置。如果该值小于 10,则数据标签应位于顶部,如果大于或等于 10,则应位于中心。但是您知道条件中的值 10 应该是动态的。那么有什么方法可以识别所用插件中的这种重叠行为,或者有什么好的方程式来解决这个问题吗?
取您显示的数据集的最大值
const data = context.dataset.data
const max = Math.max( ...data )
然后,如果对于给定的条柱,它低于最大条柱值的 10%(或其他百分位),那么就按照您的操作进行。
总计:
const index = context.dataIndex
const data = context.dataset.data
const max = Math.max( ...data )
const percentil = 0.10
const value = data[index]
return value < max * percentil ? 'top' : 'center'
我正在使用带有图表 js 2.9.4 包的 vue chat js。并且还插入了图表 js 插件 datalabels 以显示数据标签。我创建了一个垂直条形图,当某些列的高度较低时,数据标签与 x 轴重叠。为了避免这种情况,我做了如下操作。
plugins: {
datalabels: {
align(context) {
const index = context.dataIndex
const value = context.dataset.data[index]
return value < 10 ? 'top' : 'center'
},
}
}
如您所见,我不得不手动添加一个条件来设置数据标签的位置。如果该值小于 10,则数据标签应位于顶部,如果大于或等于 10,则应位于中心。但是您知道条件中的值 10 应该是动态的。那么有什么方法可以识别所用插件中的这种重叠行为,或者有什么好的方程式来解决这个问题吗?
取您显示的数据集的最大值
const data = context.dataset.data
const max = Math.max( ...data )
然后,如果对于给定的条柱,它低于最大条柱值的 10%(或其他百分位),那么就按照您的操作进行。
总计:
const index = context.dataIndex
const data = context.dataset.data
const max = Math.max( ...data )
const percentil = 0.10
const value = data[index]
return value < max * percentil ? 'top' : 'center'