HTML in Chart.js labels
HTML in Chart.js labels
我想把一些图像和/或链接在我的图表的标签。下面是示例代码和jsFiddle:
var data = {
labels: ['January', '<s>February</s>',
'<img src="http://jsfiddle.net/favicon.png">',
'<a href="http://jsfiddle.net/">A Link</a>'],
datasets: [{
data: [65, 59, 90, 81]
}]
}
var ctx = document.getElementById("myChart").getContext("2d");
var myNewChart = new Chart(ctx).Bar(data);
jsFiddle联系
如您所见,HTML不会在标签内部被解析。有没有办法在图表的标签中有工作图像和/或链接?
查看Chart.js源代码,似乎标签是使用fillText
命令呈现的。fillText(text, x, y [, maxWidth])
只接受纯文本字符串,所以你的HTML字符串将被呈现为纯文本,所有的标签将被忽略。
一个可能的选择是考虑修改Chart.js代码使用<foreignObject>
(见这篇文章在MDN和这一个是基于)。例如:
ctx.translate(xPos,(isRotated) ? this.endPoint + 12 : this.endPoint + 8);
ctx.rotate(toRadians(this.xLabelRotation)*-1);
var data = "data:image/svg+xml," +
"<svg xmlns='http://www.w3.org/2000/svg' width='200' height='200'>" +
"<foreignObject width='100%' height='100%'>" +
"<div xmlns='http://www.w3.org/1999/xhtml'>" +
label +
"</div>" +
"</foreignObject>" +
"</svg>";
var img = new Image();
img.src = data;
img.onload = function() { ctx.drawImage(img, 0, 0); }
ctx.restore();
(大部分代码都是直接复制Robert O'Callahan在这里展示的演示,只是修改为接受标签字符串并替换现有的Chart.js x标签绘制代码。)
相关文章:
- 可以't让我的if语句处理js中的html表单输入
- 使用agility.js进行页面布局和合成
- 使用Clipboard.js复制span文本
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- 强制模板刷新ember.js
- 如何编写HTML输入的JS内联
- Angular JS IE9 Hashbang url rewriting
- 使用JS将数组转换为json对象
- Node.js v6.2.0类扩展不是函数错误
- 当js函数's已执行
- 要求未定义JS回调参数
- 在自定义mean.io包中使用angular-chart.js作为依赖项
- 无法在数据endVal中设置值=“”;{{ucount}}”;使用Angular JS的CountUp
- 如何从Java/scala调用js美化程序
- 如何更改<svg>标记为<img>用js标记
- 如何使用 node.js 比较两个 json 数组
- chrome扩展:尽管运行了at:documentidle,js脚本还是过早启动
- Chart.js multiTooltip labels
- HTML in Chart.js labels
- 如何将字符串变量传递到Morris.js中的labels选项