【问题标题】:How to apply gradient color in chart.js?如何在 chart.js 中应用渐变颜色?
【发布时间】:2022-01-24 23:24:06
【问题描述】:

我正在使用 chart.js 库制作折线图,在这里我想将线条的颜色更改为渐变色。

我尝试过的代码,

  const gradientFill = ctx.createLinearGradient(500, 0, 100, 0);
  gradientFill.addColorStop(0, "#80b6f4");
  gradientFill.addColorStop(1, "#f49080");

并将其添加到数据集中,例如,

datasets: [
  {
    .
    .
    .
    .
    backgroundColor: gradientFill,
    .
    .
  }
]

但我看不到变化,仍然只显示一些灰色线条而不是渐变。

工作示例:

编辑:尝试添加borderColor : gradientFill,但这也不起作用。

要求:要求是我需要有类似https://i.stack.imgur.com/lKGqT.png的渐变线

请帮我把颜色改成渐变色。

【问题讨论】:

标签: javascript css reactjs typescript chart.js


【解决方案1】:

由于您的useEffect 钩子,您的渐变不适用,在此钩子中,您使用formatData 函数再次设置数据,但只传递数据而不传递canvasGradient。所以你也需要通过它。

请参阅第 108 行和第 109 行注释掉它工作正常,因此您需要在那里重新创建渐变或在更高级别上创建它,这样您只创建一次。 https://codesandbox.io/s/chart-js-react-typescript-forked-dxlj7?file=/src/App.tsx

编辑:

更新为不同的方法,在您的 formatData 函数中为 backgroundColor 使用三元运算符来检查如果不采用当前 backgroundColor 是否给出了画布渐变

【讨论】:

  • 对不起,我删除了几行代码以使其简单,但根据您的解决方案,在这种情况下将不起作用。更新沙箱:codesandbox.io/s/chart-js-react-typescript-forked-3p2oc。在这里,如果用户单击更改按钮,应该会发生更新,但如果我们注释第 108 和 109 行,则不会发生更新。
  • 没什么变化,只是添加了更新数据点的按钮。 (哪个更早存在并将其删除以降低问题的复杂性)。您能否查看上述评论的沙箱以解决该问题。谢谢。
  • 我乱用了您在问题中链接的沙箱,您可以看到它在工作,它不是灰色而是一种大颜色?
  • 是的,同意。我很抱歉没有发表这个有问题的声明。但是如果有按钮则无法更新更改,这就是为什么我在 useEffect 中制作了更新代码。
  • 是的,所以您需要以某种方式将渐变传递到您的 usefeect 状态,或者使用另一个不需要背景颜色的函数,因此您不要将其设置为未定义
【解决方案2】:

您可以在数据集中使用borderColor : 'Red'。见下面代码

datasets: [
      {
        pointBorderWidth: 10,
        pointHoverRadius: 10,
        pointHoverBorderWidth: 1,
        pointRadius: 3,
        fill: "start",
        backgroundColor: gradientFill,
        borderWidth: 4,
        borderColor : 'Red',   //  New line added
        data
      }
    ]

【讨论】:

  • 我需要指定渐变色。如果我用borderColor : gradientFill 替换红色,那么它不起作用。你能在这里指导一下吗?
  • 这里不能添加gradientFill,因为gradientFill是一个对象,你必须指定任何颜色值或任何颜色名称的十六进制代码。
  • 我的要求是我需要有这样的渐变色线 i.stack.imgur.com/lKGqT.png 。所以不能像红色或其他一样直接给出颜色名称。
  • 是的,我已经尝试过了,但是当我在我的 react 应用程序中给出它时,它不起作用。即使您可以在问题中分叉我上面给出的示例并将其包含在内。如果有效,请更新答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-24
  • 2022-07-28
  • 2020-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多