javascript - 如何在 vue 中将 chart.js 图形导出为 svg?
问题描述
我的应用程序中有一个图表,它是使用 Chart.js 库创建的。我的 graph.js 文件如下所示:
import { Line, mixins } from 'vue-chartjs';
const { reactiveProp } = mixins;
export default {
extends: Line,
mixins: [reactiveProp],
data() {
return {
options: {
maintainAspectRatio: false,
responsive: true,
legend: {
display: true,
position: 'bottom',
},
scales: {
yAxes: [
{
ticks: {
suggestedMin: 0,
callback(tick) {
return `${tick}%`;
},
},
},
],
},
tooltips: {
callbacks: {
label(tooltipItem, data) {
const dataset = data.datasets[tooltipItem.datasetIndex];
const currentValue = dataset.data[tooltipItem.index];
return ` ${dataset.label}: ${currentValue}%`;
},
},
},
},
};
},
mounted() {
this.renderChart(this.chartData, this.options);
},
};
以及负责渲染它的组件(我已经删除了一些不相关的细节):
<template>
<div
class="container">
<b>
...
</b>
<div
class="graph">
<graph
:styles="graphStyle"
:chart-data=graphData">
</graph>
</div>
</div>
</template>
<script>
import { mapGetters } from 'vuex';
import Graph from './graph';
import {
...
} from '../../constants';
export default {
name: '...',
components: {
Graph,
},
data() {
return {
...
};
},
watch: {
...
},
methods: {
...
},
computed: {
...
},
};
</script>
我想将其导出为 svg,然后将其发布到我的 api。我需要将它序列化为一个字符串,然后在 json 正文中使用 post 方法发送。我必须使用另一个外部库吗?如何将其序列化为 svg?感谢您的任何回答。
解决方案
如果png
您可以接受,可能有办法做到这一点。请记住,我没有对此进行测试,但它应该可以通过它的外观工作。
查看 的文档vue-chartjs
,这里说您可以使用以下命令访问 chartjs 对象:
this.$data._chart
从那里,您应该能够使用它的方法将图表保存为 png - toBase64Image()
:
this.$data._chart.toBase64Image()
推荐阅读
- android - 三星galaxy s7上的Android studio Camera Access,图像模糊
- javascript - 带有剃须刀页面的动态 javascript
- matlab - MATLAB水平的sobel滤波器
- objective-c - 如何将 Float64 分配给 NSInteger 变量?
- c# - Discord.net GetMessagesAsync() 返回 null
- javascript - 如何在 javascript 中使用 textarea 打乱数字
- javascript - 语法错误:执行 TS 应用程序时出现意外的令牌 {
- math - 资质,为什么400年有0个奇数年?
- python - 带有默认标签的 Pandas 标签编码列,用于无效行值
- javascript - 使用 Node.js util 模块承诺所有方法