Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Highcharts-在自定义颜色上应用渐变_Highcharts - Fatal编程技术网

Highcharts-在自定义颜色上应用渐变

Highcharts-在自定义颜色上应用渐变,highcharts,Highcharts,这是我的数据模型: data = [{y: 123, color: "#FF7600"}, {y: 321, color: "#00FFE3"}, {y: 213,color: "#444444"}] 然后将该系列添加到饼图中: $http({ method: 'GET', url: /pie-chart, params: {}) .success(function (data) { chart.addSeries({ type: 'pie',

这是我的数据模型:

data = [{y: 123, color: "#FF7600"}, {y: 321, color: "#00FFE3"}, {y: 213,color: "#444444"}]
然后将该系列添加到饼图中:

$http({ method: 'GET', url: /pie-chart, params: {})
    .success(function (data) {
        chart.addSeries({
        type: 'pie',
        data: data
    })
});
以下是highcharts的官方演示:
它循环数据,读取颜色,创建颜色数组,并在绘制图表时使用此数组。
但我正在考虑避免从JSON中提取颜色的解决方案。
有什么想法吗?非常感谢

已编辑、已解决

放弃:)。
我最终创建了highcharts演示中描述的颜色数组。
它工作得很好

// Get colors from received data, create color array, 
var colors = [];
for (var i = 0; i < data[0].series.length; i++) {
    colors.push(data[0].series[i].color);
    // Delete original colors, so that new radialized are used
    delete(data[i].color);
}

// Use color array and radialize each color
Highcharts.getOptions().colors = Highcharts.map(colors, function(color) {
    return {
        linearGradient: { x1: 0, y1: 0, x2: 1, y2: 0 },
            stops: [
                [0, color],
                [1, Highcharts.Color(color).brighten(-0.3).get('rgb')] // darken
            ]
        };
    });
//从接收到的数据中获取颜色,创建颜色数组,
var颜色=[];
对于(var i=0;i
上述解决方案在全局默认值中设置颜色。如果只有一个图表,这是可以的,但是如果有多个图表,这可能会有问题,因为颜色将适用于所有图表

通过仅在本地数据数组中重新映射颜色,可以在单个图表级别上对此进行着色。下面是我为饼图所做的

chartData是一组数据,如:

[
{
“颜色”:“#01080f”,
“名称”:“无状态”,
“y”:8570
}, 
{
“颜色”:“1A942C”,
“名称”:“已部署”,
“y”:27952
}, 
...
{
“颜色”:“f36e20”,
“名称”:“不同步”,
“y”:241
}
]
在我的javascript代码中,它从服务器检索并应用于Highcharts对象的series.data元素

只需在将该数据元素添加到highcharts对象之前对其进行操作

//检索图表数据
$.getJSON('/api/endpoint/policystatus',函数(chartData){
//函数用渐变替换平面颜色
函数colorizeData(数据){
data.color={
径向梯度:{cx:0.5,cy:0.3,r:0.7},
停止:[
[0,data.color],
[1,Highcharts.Color(data.Color).变亮(-0.3).get('rgb')]//变暗
]
};
}
//为检索到的数据中的每个元素调用函数
chartData.forEach(彩色数据);
//继续构建图表
$(“#饼图一般状态”)。高图({
// ....
上面的“colorizeData”接受图表数据输入,查找“color”元素,然后将其替换为基于相同颜色的Highcharts渐变


请注意,您必须使用十六进制或RGB值;它不适用于定义为“绿色”或“蓝色”的颜色。

“数据”实际上是复数。正确用法是“数据是”而不是“数据是”,单个数据是“数据”虽然我们从来没有这样使用过它。@Jara所以问题解决了吗?@Sebatian。我查询的正确英语语法是固定的。当自定义颜色是数据对象参数之一时,仍然没有找到如何应用渐变。我们将非常感谢您的帮助。(jsfiddle示例将是最好的)。