我正在学习如何使用Chart JS创建图形。这是我的脚本HTML:
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="Chart.js"></script>
</head>
<body>
<style type="text/css">
body{
font-family: roboto;
}
</style>
<h2>Example of Chart JS</h2>
<div style="width: 500px;height: 500px">
<canvas id="myChart"></canvas>
</div>
<script>
new Chart(document.getElementById("myChart"), {
type: 'bar',
data: {
labels: ["1900", "1950", "1999", "2050"],
datasets: [
{
label: "Australia",
backgroundColor: "#3e95cd",
data: [130,212,252,241]
}, {
label: "Asia",
backgroundColor: "#8e5ea2",
data: [348,705,1075,2034]
}
]
},
options: {
title: {
display: true,
text: 'Population growth (millions)'
}
}
});
</script>
</body>
</html>
图形的结果如上图所示。
我想使用curl或wget命令获取图形的图像,但是它失败,因为单击鼠标时没有复制链接地址。如下图所示,在选项中仅图像另存为和复制图像:
因此,如何从使用图表JS创建的图表中获取图像?因为我想将图形嵌入到其他站点或将其发送到电子邮件。我真的对此事一无所知。
您绝对可以使用toDataURL
或内置的Chart.js函数toBase64Image
。答案here涵盖了如何做到这一点。这可能就足够了,特别是如果您的用例完全在浏览器中。
缺点是,您不能像上面提到的那样使用wget或curl轻松编写脚本。
此问题的解决方案是使用图表绘制服务,例如QuickChart,这是我构建的一个开放源代码项目,用于将Chart.js图形绘制为图像。
将您的图表配置并填充到API URL中(这使用公共端点,但是您也可以自己托管它:]]
默认情况下,此URL产生以下PNG图像:
QuickChart / Chart.js sandbox是测试Chart.js配置如何渲染到图像的好方法。
您可以使用curl或wget直接获取URL编码的图表。该URL非常详尽,但是它包含了整个图表配置(请注意,它是URL编码的):
curl -o mychart.png 'https://quickchart.io/chart?bkg=white&c=%7B%0A%20%20%20%20type%3A%20%27bar%27%2C%0A%20%20%20%20data%3A%20%7B%0A%20%20%20%20%20%20labels%3A%20%5B%221900%22%2C%20%221950%22%2C%20%221999%22%2C%20%222050%22%5D%2C%0A%20%20%20%20%20%20datasets%3A%20%5B%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20label%3A%20%22Australia%22%2C%0A%20%20%20%20%20%20%20%20%20%20backgroundColor%3A%20%22%233e95cd%22%2C%0A%20%20%20%20%20%20%20%20%20%20data%3A%20%5B130%2C212%2C252%2C241%5D%0A%20%20%20%20%20%20%20%20%7D%2C%20%7B%0A%20%20%20%20%20%20%20%20%20%20label%3A%20%22Asia%22%2C%0A%20%20%20%20%20%20%20%20%20%20backgroundColor%3A%20%22%238e5ea2%22%2C%0A%20%20%20%20%20%20%20%20%20%20data%3A%20%5B348%2C705%2C1075%2C2034%5D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%5D%0A%20%20%20%20%7D%2C%0A%20%20%20%20options%3A%20%7B%0A%20%20%20%20%20%20title%3A%20%7B%0A%20%20%20%20%20%20%20%20display%3A%20true%2C%0A%20%20%20%20%20%20%20%20text%3A%20%27Population%20growth%20(millions)%27%0A%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%7D'