Canvas 如何在图表旁边的画布(不使用HTML)上放置额外的文本?

Canvas 如何在图表旁边的画布(不使用HTML)上放置额外的文本?,canvas,chart.js,Canvas,Chart.js,我正在使用chart.js版本2制作不同的图表。有一些固定的位置可以放置信息,如标题和图例。但如果我想在画布的“未使用区域”中放置一些文本,那么在动画完成后仅使用标准的self.Context.fillText调用似乎不起作用。编写图表插件是唯一的方法吗?如果有,有什么帮助吗 我有一个在onComplete事件中调用的函数,该函数启用打印按钮。由于打印功能复制画布,我需要将信息作为画布的一部分,而不是作为HTML完成 语境是在自我语境中。我只是放了几行测试: self.Context.fillS

我正在使用chart.js版本2制作不同的图表。有一些固定的位置可以放置信息,如标题和图例。但如果我想在画布的“未使用区域”中放置一些文本,那么在动画完成后仅使用标准的self.Context.fillText调用似乎不起作用。编写图表插件是唯一的方法吗?如果有,有什么帮助吗

我有一个在onComplete事件中调用的函数,该函数启用打印按钮。由于打印功能复制画布,我需要将信息作为画布的一部分,而不是作为HTML完成

语境是在自我语境中。我只是放了几行测试:

self.Context.fillStyle = "blue";
self.Context.font = "bold 16px Arial";
self.Context.fillText("Tommy", 10, self.chart.canvas.height - 50);
……但什么也没有显示。看来chart.js“拥有”了画布,我需要用插件来扩展chart.js的功能

在这个(测试数据)图表画布上有很多白色的调味品,如果能够使用它为用户提供更多信息,那将是一件好事

chart.js插件是唯一的非HTML方式吗?
如果是这样的话,有什么可用的示例可以帮助我编写吗?

我发现您可以为每种不同的图表类型创建一个扩展函数(例如,您可能希望根据图表类型将文本放置在不同的位置),下面是一个折线图示例:

            let myLineExtend = Chart.controllers.line.prototype.draw;
            Chart.helpers.extend(Chart.controllers.line.prototype, {
                draw: function () {
                    myLineExtend.apply(this, arguments);
                    self.Context.save();
                    self.Context.fillStyle = "#032f55";
                    var ctx = self.Context;
                    ctx.textAlign = "left";
                    ctx.textBaseline = "middle";
                    ctx.font = "12px arial";
                    ctx.fillText("Random text", (self.chart.canvas.width * 1) / 10, (self.chart.canvas.height * 3) / 4);
                    self.Context.restore();
                }
            });

从我的谷歌搜索结果来看,我得出结论,做我想做的事情的唯一方法是扩展chart.js的绘图例程。因为我的显示例程是通用的,不知道从哪里获取数据,所以我需要创建一个带有坐标和文本字符串的数组。然后,绘图例程将检查字符串是否为非空,如果为空,则在给定坐标下显示它们。