如何应用线性渐变来填充chart.js

nlejzf6q  于 2023-06-22  发布在  Chart.js
关注(0)|答案(2)|浏览(199)

我使用chart.js和vue-chartjs
我需要用梯度使填充(start):

  1. linear-gradient(180deg, #7F56D9 0%, rgba(127, 86, 217, 0) 95.55%);

喜欢这个image
我的配置

  1. const chartData = {
  2. labels: ['2022-01','2022-02','2022-03','2022-04','2022-05','2022-06','2022-07', '2022-08','2022-09', '2022-10', '2022-11', '2022-12'],
  3. datasets: [
  4. {
  5. label: 'Dataset 1',
  6. data: [420,430,680,560,790,240,395,830,810, 430, 500, 700],
  7. borderColor: '#7F56D9',
  8. borderWidth: 2,
  9. backgroundColor: '#7F56D9',
  10. fill: 'start'
  11. }
  12. ]

}

um6iljoc

um6iljoc1#

画布上的渐变使用canvas.createLinearGradient()创建
你需要为backgroundColor做这样的事情:

  1. datasets: [
  2. {
  3. label: 'Dataset 1',
  4. data: [420, 430, 680, 560, 790, 240, 395, 830, 810, 430, 500, 700],
  5. borderColor: '#7F56D9',
  6. borderWidth: 2,
  7. fill: 'start',
  8. backgroundColor: (ctx) => {
  9. const canvas = ctx.chart.ctx;
  10. const gradient = canvas.createLinearGradient(0, -160, 0, 120);
  11. gradient.addColorStop(0, '#7F56D9');
  12. gradient.addColorStop(1, '#fff');
  13. return gradient;
  14. },
  15. },
  16. ],

这是我最接近你的形象了。
CSS linear-gradient和canvas createLinearGradient并不相关,也没有1:1的转换(据我所知),所以你只需要摆弄数字,直到你得到一个接近你想要的渐变。

展开查看全部
rqdpfwrv

rqdpfwrv2#

解决方案:

  1. backgroundColor: (context) => {
  2. const ctx = context.chart.ctx;
  3. const gradient = ctx.createLinearGradient(0, 0, 0, 200);
  4. gradient.addColorStop(0, "rgba(127,86,217,0.1)");
  5. gradient.addColorStop(1, "rgba(127, 86, 217, 0)");
  6. return gradient;
  7. }

相关问题