gpt4 book ai didi

javascript - Highcharts Sunburst 图表 - colorVariation.to 值的范围是多少?

转载 作者:行者123 更新时间:2023-11-30 20:55:40 28 4
gpt4 key购买 nike

Highcharts API 引用说明 colorVariation.to 是应用于最后一个兄弟的颜色变化的结束值。演示示例:http://jsfiddle.net/gh/get/library/pure/highcharts/highcharts/tree/master/samples/highcharts/demo/sunburst/

levels: [{
level: 2,
colorByPoint: true,
dataLabels: {
rotationMode: 'parallel'
}
},
{
level: 3,
colorVariation: {
key: 'brightness',
to: -0.5
}
}, {
level: 4,
colorVariation: {
key: 'brightness',
to: 0.5
}
}]

当我为级别 3 设置 colorVariation.To = 0 时,该级别的所有兄弟项都以相同的颜色显示。引用:http://jsfiddle.net/hqkk8ut5/

levels: [{
level: 2,
colorByPoint: true,
dataLabels: {
rotationMode: 'parallel'
}
},
{
level: 3,
colorVariation: {
key: 'brightness',
to: 0
}
}, {
level: 4,
colorVariation: {
key: 'brightness',
to: 0.5
}
}]

在我的应用程序中,我想配置 colorVariation.to 值。我想知道我应该允许什么范围的值?

最佳答案

我认为理解colorVariation.to 工作原理的关键是分析两个核心函数:

<强>1。 变体 来自 sunburst.src.js

        function variation(color) {
var colorVariation = level && level.colorVariation;
if (colorVariation) {
if (colorVariation.key === 'brightness') {
return H.color(color).brighten(
colorVariation.to * (index / siblings)
).get();
}
}

return color;
}

<强>2。 变亮 来自 highcharts.src.js

        brighten: function(alpha) {
var i,
rgba = this.rgba;

if (this.stops) {
each(this.stops, function(stop) {
stop.brighten(alpha);
});

} else if (isNumber(alpha) && alpha !== 0) {
for (i = 0; i < 3; i++) {
rgba[i] += pInt(alpha * 255);

if (rgba[i] < 0) {
rgba[i] = 0;
}
if (rgba[i] > 255) {
rgba[i] = 255;
}
}
}
return this;
},

示例:

假设我们有两个同级的 sibling ,他们的 colorVariation.to0,5。此级别的基色是 rgba(255,0,0,1)(红色)。对于第一个兄弟,索引等于 variation 函数中的 0。所以传递给 brighten 函数的值为 0 (0.5 * (0/2))。下一步是将该值乘以 255(最大亮度级别)并将其添加到除 a 之外的每个颜色分量:rgb。因此,对于第一个兄弟,此值与 colorVariation.to 相同。

对于第二个兄弟,alfa 的值为 0.25 (0.5 * (1/2))。 pInt(alpha * 255) 将返回 63(在这种情况下,pInt 的工作方式与 Math.floor 相同)。所以最终值将是 rgba(255, 63, 63)。高于 2550 的值由两个 if 语句更正。


在这种情况下 Math.min(r,g,b)0,所以如果我们想获得最后一片叶子的最大亮度 alpha 应等于 1(所有组件 (r,b,g) 的值必须为 255)。

如果我们从 variation 函数求解方程:colorVariation.to * (1/2) = 1我们将得到 2 - 本例colorVariation 的最大值。所有高于此值的值都将像 2 一样工作。

colorVariation 的值可以是负数 - 它会使颜色变暗而不是变亮。

关于javascript - Highcharts Sunburst 图表 - colorVariation.to 值的范围是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47692492/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com