【问题标题】:Create Pattern on RGB Colors在 RGB 颜色上创建图案
【发布时间】:2021-08-18 11:33:47
【问题描述】:

我目前正在使用Apexcharts 来显示数据系列。在其中一个选项中,我可以选择documentation 中定义的颜色数组,这是一个字符串数组。显然,传入十六进制字符串就可以了。

但是,我现在要做的是让我的数据系列在我的图表上显示模式。我知道我可以使用 fill 定义的 here 对象,但这将为整个图形定义一个模式,而我只想为某些数据定义它。

由于color 数组是一个字符串数组,有没有办法可以定义类似linear-gradient 或类似但以字符串格式的东西?

编辑:

例如,假设我有来自 Apexchart 网站的this data series。有没有办法可以设置条件,比如这个人是 'Joe' 并且类型是 'test',然后将渐变设置为某种东西(例如 gradient: slantedLines)?

因此,结果将类似于:

EDIT2:

我还看到了另一个问题,我们可以指定属性fillColor 来指定给定条形图in this post 的颜色。是否有等效的显式设置渐变?

【问题讨论】:

  • 你能举一个输入和对应输出的例子吗?
  • 就在我的头上,如果你需要逐渐改变颜色,你可以使用hsl()定义你的颜色并传入不同的L参数。
  • @YevgenGorbunkov 示例输入为colors: ['#2E93fA', '#66DA26', '#546E7A', '#E91E63', '#FF9800'],输出为每种 RBG 颜色的对应颜色。因此,我想要指定一些可以给我模式(字符串格式)而不是十六进制字符串的东西。
  • @YevgenGorbunkov 谢谢你的其他建议。 hsl() 是我必须导入的库还是内置库?如果我直接使用它,我会收到错误cannot find name 'hsl'
  • 通过'...输出将是相应的颜色',你的意思是'#2E93fA'应该翻译成'light blue'

标签: javascript css apexcharts


【解决方案1】:

这个问题需要澄清一下,但这似乎是最合乎逻辑的答案:

第 1 部分

In a multi-series chart, you can pass an array to allow a combination of fill types like this:

fill: {
  // All series use same type: gradient.
  type: 'gradient'  
}
/* OR */
fill: {
  // Series alternate between solid type and gradient type.
  type: ['solid', 'gradient']  
}

第 2 部分

然后,如果您希望每个渐变使用不同的颜色,请将它们作为数组传递给 fill.colors fill.gradient.gradientToColors(您需要两个不同的数组,因为渐变从“开始”颜色过渡到不同的“结束”颜色。)

gradientToColors: Array

结束渐变的可选颜色。主要颜色数组 成为 gradientFromColors 并且这个数组成为结束颜色 的梯度。数组中的每个索引对应于 系列索引。

以上是如何指定的说明:

  1. 每个系列中所有值的填充类型(实心、渐变、图案、图像)。 (linked example 的两个系列是蓝色的“Bob”和绿色的“Joe”。)
  2. 当填充类型为渐变时:系列中每个值的开始/结束颜色。 (蓝色系列“Bob”的三个不同值是“3 天”、“3 天”和“5 天”。)

问题含糊不清,可能要求其他内容(ApexCharts 甚至可能不支持。)如果上述内容没有回答问题,我建议添加所需图表输出的示例模型图像。

更新:如何更改图案(“渐变”和“图案”是两种不同类型的填充:slantedLines 是图案,而不是渐变。)

以下选项会导致第二个和第三个值使用模式(它不会像我假设的那样重复)。

...
...
fill: {
    type: ["solid", "pattern", "pattern"],
    pattern: {
        style: "slantedLines"
    }
}
...
...

Modified code sandbox:

【讨论】:

  • 感谢您的建议。我已根据您的建议编辑了我的问题,以包含我想要实现的示例输出(图像)。我还根据我在另一篇文章中看到的内容添加了另一个编辑。请让我知道这是否有意义,因为我需要您的帮助。
  • 另外,在您分享的示例 (apexcharts.com/vue-chart-demos/bar-charts/patterned) 中,是否可以让整个数据系列具有不同的模式?例如,如果我希望 2008 年全是圆形,2009 年全是 slantedLines 等,而不是混合使用每个数据系列都相同的模式?
  • @Adam:可以让整个数据系列使用相同的模式,但我认为每个数据系列的第n个值必须与其他系列中第n个值的模式匹配。这就是为什么我建议您可能会要求 Apex 图表不支持的内容。我用代码+修改后的沙箱更新了我的答案。
  • 再次感谢@Leftium。唯一的问题是我有一个数据系列,其中有分组(比如这个例子 apexcharts.com/vue-chart-demos/bar-charts/patterned),所以你是说考虑到我之前的评论让 2008 年成为一个模式,然后是 2009 年不同的模式等,Apexcharts 不可能吗?因为在您的示例中,您假设每行只有一个条形图,因此我们可以逐行指定模式,而在我的情况下,我每行有一组多个条形图,如链接示例。
  • 除上述之外,在链接的示例中,每行的模式对于第 n 个数据系列将始终相同。例如,2008、2009、2010 等的 Marine Sprite 具有相同的模式,然后是 Striking Calf 等的相同模式。而我希望 2008 完全有自己的模式,与 2009 等不同。我希望这能让更多感觉。
猜你喜欢
  • 2016-08-19
  • 1970-01-01
  • 1970-01-01
  • 2020-09-02
  • 2014-02-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-30
相关资源
最近更新 更多