我的堆叠折线图中的数据集的背景颜色相互混合,就像下面一样。
的数据
下面是我的代码:
var chart = new Chart($('#chart-area'), {
type: "line",
data: {
labels: [],
datasets: [],
},
options: {
responsive: true,
maintainAspectRatio: false,
hover: {
mode: 'index',
intersect: false
},
scales: {
yAxes: [{
stacked: true
}]
}
},
});
字符串
我创建了dinamic数据集:
chart.data.datasets.push({
label: LABELS,
borderColor: COLOR1,
backgroundColor: COLOR2,
data: []
});
型
我的颜色示例:
COLOR1 -> "#000c89",
COLOR2 -> 'rgba(0, 12, 137, 0.4)'
型
任何想法如何使颜色看起来像他们的正常?他们得到混合(我认为这是因为透明度),我可以使他们没有透明度,但图表变得丑陋。
1条答案
按热度按时间mjqavswn1#
实际上,颜色混合是因为透明度。我不认为这是可以避免的,因为
rgba
中存在透明度通道的唯一原因是允许“前景”和“背景”颜色的混合。实际上,
rgba
不应该提供比rgb
更多的颜色。通过在chart.js背景中使用
rgba
获得的漂亮颜色是将该颜色的rgb
部分作为“前景”与通常为白色(rgb(255, 255, 255)
)的图表背景相结合的结果。字符串
下面是一个代码片段,
的数据
也就是jsFiddle。
增编
注意事项:我必须补充一下我在理论上对广色域颜色的了解,因为它与所问的问题间接相关;然而,这只是抽象的信息,因为我从未使用过这些颜色空间,也没有HDR显示器。如果您知道更多,请对此做出贡献(消息/新答案/编辑/否决)。
比rgb(24)更宽的颜色空间是一个很大的主题,但值得一提的是,在2023年底发布时,浏览器已经对它有了很好的支持。你可以从简单但很好的介绍开始,比如this one,或者阅读css 4和githb canvas-color-space pages的规范。
一个简单的测试表明,如果使用
backgroundColor: "color(display-p3 0 1 0)"
,chart.js不会抱怨,但会将该颜色传递给canvas函数。这意味着可以为chart.js编写宽色域就绪代码。然而,在代码中创建canvas上下文的方式似乎表明,目前用户无法设置颜色空间,即使CanvasRenderingContext2d
作为第一个参数传递给Chart
构造函数,也不会。