我想在我的Vue-chart.js折线图上有一个线性渐变背景。看在上帝的份上,我找不到任何有用的例子,文档也没有提供。
我从vue-chartjs
加载了Line组件,并设置了如下模板:
<template>
<Line
:chartData="chartData"
:chartOptions="chartOptions"
:chartId="chartId"
:width="width"
:height="height"
:cssClasses="cssClasses"
:styles="styles"
:plugins="plugins"
/>
</template>
这样,我就有了下面的脚本:
<script>
import { Line } from 'vue-chartjs'
import {
Chart as ChartJS,
Title,
Tooltip,
Legend,
LineElement,
CategoryScale,
LinearScale,
PointElement,
Plugin,
Filler,
BorderRadius
} from 'chart.js'
ChartJS.register(Title, Tooltip, Legend, LineElement, LinearScale, CategoryScale, PointElement, Filler)
export default {
name: 'BarChart',
components: { Line },
props: {
chartId: {
type: String,
default: 'line-chart'
},
width: {
type: Number,
default: 400
},
height: {
type: Number,
default: 160
},
cssClasses: {
default: '',
type: String
},
styles: {
type: Object,
default: () => {}
},
plugins: {
type: Array,
default: () => []
}
},
mounted () {
const canvas = document.getElementById('line-chart').getContext('2d');
const gradient = canvas.createLinearGradient(0,0,0,160);
gradient.addColorStop(0, 'green');
gradient.addColorStop(.5, 'cyan');
gradient.addColorStop(1, 'green');
this.gradient = gradient;
console.log(this.gradient);
},
data() {
return {
chartData: {
labels: ['January', 'February', 'March', 'April', 'May', 'June', 'July'],
datasets: [
{
label: 'Data One',
borderColor: '#FC2525',
pointBackgroundColor: 'white',
borderWidth: 1,
radius: 0,
fill: true,
pointBorderColor: 'white',
backgroundColor: this.gradient,
tension: 0.25,
data: [40, 39, 10, 40, 39, 80, 40]
},{
label: 'Data Two',
borderColor: '#05CBE1',
pointBackgroundColor: 'white',
pointBorderColor: 'white',
borderWidth: 1,
radius: 0,
fill: true,
backgroundColor: this.gradient,
tension: 0.25,
data: [60, 55, 32, 10, 2, 12, 53]
}
]
},
chartOptions: {
responsive: true,
plugins: {
legend: {
display: false
}
}
}
}
},
}
</script>
然而,这会导致默认的灰色背景。
任何帮助都将不胜感激。
1条答案
按热度按时间0h4hbjxa1#
这是因为当
mounted
被触发时,选项已经被构建,而this.gradient
在那时是未定义的,所以它会把undefined放在那里。在那之后,你永远不会更新你的选项。不确定是否可以只设置选项,图表就会更新为正确的颜色。
真正有效的方法是为背景道具提供一个函数,从中可以获得上下文,如下所示: