ECharts图表实战经验1:如何设置图表同序列不同数据点的独立颜色值

摘要:
最近,很多朋友都在问这样一个问题:我想让每一列在我的单序列直方图中具有不同的颜色。我该怎么办?数据点的属性首先通过itemStyle节点进行控制。我们需要控制数据点的颜色。当然,我们需要设置颜色。此外,根据ECharts API,颜色支持Function函数。

最近有不少朋友在追问这样一个问题:我单序列的柱状图,我想让每一个根柱子的颜色都不一样,应该如何做?

针对这个问题,其实我只想说你压根没有认真看完或者查找ECharts官方的示例,官方能够找到的示例有:

1、http://echarts.baidu.com/doc/example/bar14.html

ECharts图表实战经验1:如何设置图表同序列不同数据点的独立颜色值第1张

2、http://echarts.baidu.com/doc/example/bar15.html

ECharts图表实战经验1:如何设置图表同序列不同数据点的独立颜色值第2张

那么你看完过后是否能够明白其中的道理呢?数据点的属性首先是通过itemStyle节点进行控制的,我们要控制数据点的颜色,自然我们就需要设置color,另外根据ECharts的API介绍,color是支持Function函数的。

我们首先来看看这样一个例子:

示例一:根据数据点所在序号从一个颜色数组内拿拿取对应颜色值

我们首先设置一个颜色数组,最好比序列内的数据点个数要大或者相等,结合itemStylecolor的函数根据当前数据点在当前序列内所处的顺序序号去颜色数组内自动匹配颜色。

代码如下所示:

option = {
    title : {
        text: '某地区蒸发量和降水量',
        subtext: '纯属虚构'
    },
    tooltip : {
        trigger: 'axis'
    },
    legend: {
        data:['蒸发量']
    },
    toolbox: {
        show : true,
        feature : {
            mark : {show: true},
            dataView : {show: true, readOnly: false},
            magicType : {show: true, type: ['line', 'bar']},
            restore : {show: true},
            saveAsImage : {show: true}
        }
    },
    calculable : true,
    xAxis : [
        {
            type : 'category',
            data : ['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月']
        }
    ],
    yAxis : [
        {
            type : 'value'
        }
    ],
    series : [
        {
            name:'蒸发量',
            type:'bar',
            data:[2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3],
           itemStyle: {
                normal: {
                    color: function(params) {
                        // build a color map as your need.
                        var colorList = [
                          '#C1232B','#B5C334','#FCCE10','#E87C25','#27727B',
                           '#FE8463','#9BCA63','#FAD860','#F3A43B','#60C0DD',
                           '#D7504B','#C6E579','#F4E001','#F0805A','#26C0C0'
                        ];
                        return colorList[params.dataIndex]
                    }
                }
            }
        }
    ]
};                  

效果是不是很炫?!

示例二:通过配置数据点的颜色扩展属性来达到控制不同数据点的颜色

我们最想实现的应该是我们自己能够设置每一个数据点的颜色值,而非通过设置颜色数组的形式,那么我们应该如何做呢?

1、我们需要改写series的data格式,之前是一个一维数据类型的数组,先走我们需要将至变成一个对象类型的一维数组,如下所示;

data:[{
              value:2.0,
              color:"red"
            }, 4.9, 7.0, {
              value:23.2,
              color:"green"
            }, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3]
 

某些数据点我设置了其color属性,也就是我要用所配置的颜色来渲染柱子。

2、为了没有配置颜色属性的数据点的颜色显示有所归属(因为我们通过params找不到当前序列的颜色,所以我们最好自己给其series设置一个颜色属性。如下所示:

{
            name:'蒸发量',
            type:'bar',
            color:"#ff7f50",
            data:[{
              value:2.0,
              color:"red"
            }, 4.9, 7.0, {
              value:23.2,
              color:"green"
            }, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3],
            itemStyle: {
                normal: {
                  color: function(params) {                    
                    if(params.series.data[params.dataIndex] != null && params.series.data[params.dataIndex].color != undefined)
                    {
                       return params.series.data[params.dataIndex].color;
                    }else
                    {
                      return params.series.color;
                    }
                  }
                }
            }
        }

最后我们就可以通过改写itemStyle内color的function函数规则来返回数据点对象所配置的颜色以及序列所配置的颜色。

当数据点对象尚未配置颜色color属性时,我们就返回当前序列所配置的color即可。

示例代码的option配置如下所示:

option = {
    title : {
        text: '某地区蒸发量和降水量',
        subtext: '纯属虚构'
    },
    tooltip : {
        trigger: 'axis'
    },
    legend: {
        data:['蒸发量']
    },
    toolbox: {
        show : true,
        feature : {
            mark : {show: true},
            dataView : {show: true, readOnly: false},
            magicType : {show: true, type: ['line', 'bar']},
            restore : {show: true},
            saveAsImage : {show: true}
        }
    },
    calculable : true,
    xAxis : [
        {
            type : 'category',
            data : ['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月']
        }
    ],
    yAxis : [
        {
            type : 'value'
        }
    ],
    series : [
        {
            name:'蒸发量',
            type:'bar',
            color:"#ff7f50",
            data:[{
              value:2.0,
              color:"red"
            }, 4.9, 7.0, {
              value:23.2,
              color:"green"
            }, 25.6, 76.7, 135.6, 162.2, 32.6, 20.0, 6.4, 3.3],
            itemStyle: {
                normal: {
                  color: function(params) {                    
                    if(params.series.data[params.dataIndex] != null && params.series.data[params.dataIndex].color != undefined)
                    {
                       return params.series.data[params.dataIndex].color;
                    }else
                    {
                      return params.series.color;
                    }
                  }
                }
            }
        }
    ]
};
                    

ECharts图表实战经验1:如何设置图表同序列不同数据点的独立颜色值第3张

免责声明:文章转载自《ECharts图表实战经验1:如何设置图表同序列不同数据点的独立颜色值》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇IOS 学习:UITableView 使用详解1【华为云技术分享】基于华为云IOT及无线RFID技术的智慧仓储解决方案最佳实践系列一下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

tabsSwiper 全屏选项卡(uniapp-uView)

完整代码˂swiper:current="swiperCurrent"@transitio...

配置nginx

aNULL:!MD5:!...

SAP OBA1 外币评估是基于财务目的,为了不影响报表而做的估算值,在月末进行评估,在下月初进行冲回。

评估报告按行项目显示结果。4.评估策略外币的未清项评估有三种策略:1)期末评估,下期初冲回。因此目前每年底改变外币汇率时进行外币余额和未清项的评估,不冲回。②资产负债表指定日,一般是一年的最后一天。③资产负债表准备评估。如果选择该项,则视为年结评估,不能产生冲销凭证。外币未清项评估是按借贷分别统计后做的调整凭证。...

sqlite3 数据类型 批量插入

SQLite3采用动态数据类型。存储值的数据类型与值本身相关,而不是由其字段类型决定。SQLite3的动态数据类型可以向后兼容其他数据库常用的静态类型,这意味着在使用静态数据类型的数据库中使用的数据表也可以在SQLite3中使用。在SQLite2数据库中,除了声明为主键的INTEGER列外,任何列都可以存储属于任何存储类型的值。...

linux下ifconfig, DNS以及route配置

Linux基本网络配置命令1.ifconfig查看网络接口信息。普通用户使用的ifconfig的完整路径:/sbin/ifconfigifconfig网络接口名称:显示指定接口的详细信息。...

uniapp安卓真机调试提示检测不到手机【解决办法】

以下是具体的解决方案:步骤1:打开、查找、单击并单击7次或更多次,以允许开发人员进行选择。...