我使用Chart.js渲染的折线图 . 我使用多个数据集,而数据集仅包含一个数据点(x,y)(从业务域给出) .
图表显示了悬停时每个点(x,y,标签)的信息,但是我希望默认情况下/每个点旁边都有一个标签,每次显示相应的标签 .
我在研究期间找不到任何解决方案 .
有什么指针吗?这实际上可以用Chart.js实现吗?
可以使用plugins API使用chart.js执行此操作 . 以下是我在 生产环境 中使用的插件示例,用于在图表呈现时显示所有数据点的标签 .
请注意,我目前只使用条形图,因此您可能需要为折线图调整一些内容 . 正如您将看到的,我添加了一个名为 showDatapoints 的新选项属性,我可以设置为true以便在某些图形上使用该插件 .
showDatapoints
Chart.plugins.register({ afterDraw: function(chartInstance) { if (chartInstance.config.options.showDatapoints) { var helpers = Chart.helpers; var ctx = chartInstance.chart.ctx; var fontColor = helpers.getValueOrDefault(chartInstance.config.options.showDatapoints.fontColor, chartInstance.config.options.defaultFontColor); // render the value of the chart above the bar ctx.font = Chart.helpers.fontString(Chart.defaults.global.defaultFontSize, 'normal', Chart.defaults.global.defaultFontFamily); ctx.textAlign = 'center'; ctx.textBaseline = 'bottom'; ctx.fillStyle = fontColor; chartInstance.data.datasets.forEach(function (dataset) { for (var i = 0; i < dataset.data.length; i++) { var model = dataset._meta[Object.keys(dataset._meta)[0]].data[i]._model; var scaleMax = dataset._meta[Object.keys(dataset._meta)[0]].data[i]._yScale.maxHeight; var yPos = (scaleMax - model.y) / scaleMax >= 0.93 ? model.y + 20 : model.y - 5; ctx.fillText(dataset.data[i], model.x, yPos); } }); } } });
1 回答
可以使用plugins API使用chart.js执行此操作 . 以下是我在 生产环境 中使用的插件示例,用于在图表呈现时显示所有数据点的标签 .
请注意,我目前只使用条形图,因此您可能需要为折线图调整一些内容 . 正如您将看到的,我添加了一个名为
showDatapoints
的新选项属性,我可以设置为true以便在某些图形上使用该插件 .