问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

echarts设置图例颜色和地图底色的方法实例

发布网友 发布时间:2024-08-07 04:32

我来回答

1个回答

热心网友 时间:2024-08-14 06:29

前言
本来想写echarts初始化函数的,但最近因为要写一个地图与柱状图的混合方式,也就是每个省的地图上要有柱状图显示。于是仔细使用了一下地图。
1、地图的一些基本属性就不介绍了,还是那些style
2、地图数据的获取以及Series的加载和其他没有什么大的差异。地图数据都在map.js中,都可以自己看,也可以自己根据格式获取响应的数据。
这里主要想处理的是图例颜色与地图底图颜色怎么设置的问题。
1、图例的颜色代码
refresh: function (newOption) { if (newOption) { this.option = newOption || this.option; this.option.legend = this.reformOption(this.option.legend); this.legendOption = this.option.legend; var data = this.legendOption.data || []; var itemName; var something; var color; var queryTarget; if (this.legendOption.selected) { for (var k in this.legendOption.selected) { this._selectedMap[k] = typeof this._selectedMap[k] != 'undefined' ? this._selectedMap[k] : this.legendOption.selected[k]; } } for (var i = 0, dataLength = data.length; i < dataLength; i++) { itemName = this._getName(data[i]); if (itemName === '') { continue; } something = this._getSomethingByName(itemName); if (!something.series) { this._hasDataMap[itemName] = false; } else { this._hasDataMap[itemName] = true; if (something.data && (something.type === ecConfig.CHART_TYPE_PIE || something.type === ecConfig.CHART_TYPE_FORCE || something.type === ecConfig.CHART_TYPE_FUNNEL)) { queryTarget = [ something.data, something.series ]; } else { queryTarget = [something.series]; }//可以看到下面这一句commend by danielinbiti,图例颜色先查找series是否设置了itemStyle.normal.color这个属性进行判断,如果没有,则会按照默认的颜色设置取值。如果设置了,就按照设置的颜色取值。现在想设置,肯定需要在series中对应的坐标系中设置颜色。 color = this.getItemStyleColor(this.deepQuery(queryTarget, 'itemStyle.normal.color'), something.seriesIndex, something.dataIndex, something.data); if (color && something.type != ecConfig.CHART_TYPE_K) { this.setColor(itemName, color); } this._selectedMap[itemName] = this._selectedMap[itemName] != null ? this._selectedMap[itemName] : true; } } } this.clear(); this._buildShape(); },
2、于是可能产生了如下一个坐标系设置代码
{ name: 'iphone3', type: 'map', mapType: 'china', selectedMode:'single', roam: true, showLegendSymbol:true, itemStyle:{ normal:{ label:{show:true} ,areaStyle:{color:'green'} //设置地图背景色的颜色设置 ,color:'rgba(255,0,255,0.8)' //刚才说的图例颜色设置 }, emphasis:{label:{show:true}} }, data:[ {name: '北京',value: Math.round(Math.random()*1000)}, {name: '天津',value: Math.round(Math.random()*1000)}, {name: '上海',value: Math.round(Math.random()*1000)} ] }
3、这么设置有问题吗?我设置了一下发现有问题。图例颜色是对了,但是地图背景色不对,变成和第一个设置color的坐标系颜色一致了
于是查看地图源码(map.js)发现有这么一行代码
color = dataRange && !isNaN(value) ? dataRange.getColor(value) : null;style.color = style.color || color || this.getItemStyleColor(this.deepQuery(queryTarget, 'itemStyle.normal.color'), data.seriesIndex, -1, data)|| this.deepQuery(queryTarget, 'itemStyle.normal.areaStyle.color');
如果按照地图是china的话,这里的style可以理解成地图省份,style.color没值,color如果区间拉到最下面也是没值(可以看到getColor方法返回的是null),然后接着找itemStyle.normal.color,所以两个都设置了,是找不到areaStyle的设置。背景色就是第一个坐标系的颜色。
4、然后再想怎么解决。
看图例的颜色设置机制,实际上和坐标系的什么图形,什么类型都没关系,只要是坐标系的格式就行。那是不是可以欺骗一下。
在series中,设置成这样
{ name: 'iphone3',//add by danielinbiti,注意这里名称必须和坐标系的名称要一致 type:'', //设置为'',所有图形都不会读取 itemStyle:{ normal:{ color:'rgba(255,0,255,0.8)' } }, mapType:'none', data:[]},{ name: 'iphone3', type: 'map', mapType: 'china', selectedMode:'single', roam: true, showLegendSymbol:true, itemStyle:{ normal:{ label:{show:true} ,areaStyle:{color:'green'} }, emphasis:{label:{show:true}} }, data:[ {name: '北京',value: Math.round(Math.random()*1000)}, {name: '天津',value: Math.round(Math.random()*1000)}, {name: '上海',value: Math.round(Math.random()*1000)} ]}
总结:
或许没有发现其他隐形设置,但根据map中的代码,似乎也没有其他途径。希望echarts能够修正一下这个问题。把or的时候顺序换一下就行了。举手之劳。
好了。

热心网友 时间:2024-08-14 06:23

前言
本来想写echarts初始化函数的,但最近因为要写一个地图与柱状图的混合方式,也就是每个省的地图上要有柱状图显示。于是仔细使用了一下地图。
1、地图的一些基本属性就不介绍了,还是那些style
2、地图数据的获取以及Series的加载和其他没有什么大的差异。地图数据都在map.js中,都可以自己看,也可以自己根据格式获取响应的数据。
这里主要想处理的是图例颜色与地图底图颜色怎么设置的问题。
1、图例的颜色代码
refresh: function (newOption) { if (newOption) { this.option = newOption || this.option; this.option.legend = this.reformOption(this.option.legend); this.legendOption = this.option.legend; var data = this.legendOption.data || []; var itemName; var something; var color; var queryTarget; if (this.legendOption.selected) { for (var k in this.legendOption.selected) { this._selectedMap[k] = typeof this._selectedMap[k] != 'undefined' ? this._selectedMap[k] : this.legendOption.selected[k]; } } for (var i = 0, dataLength = data.length; i < dataLength; i++) { itemName = this._getName(data[i]); if (itemName === '') { continue; } something = this._getSomethingByName(itemName); if (!something.series) { this._hasDataMap[itemName] = false; } else { this._hasDataMap[itemName] = true; if (something.data && (something.type === ecConfig.CHART_TYPE_PIE || something.type === ecConfig.CHART_TYPE_FORCE || something.type === ecConfig.CHART_TYPE_FUNNEL)) { queryTarget = [ something.data, something.series ]; } else { queryTarget = [something.series]; }//可以看到下面这一句commend by danielinbiti,图例颜色先查找series是否设置了itemStyle.normal.color这个属性进行判断,如果没有,则会按照默认的颜色设置取值。如果设置了,就按照设置的颜色取值。现在想设置,肯定需要在series中对应的坐标系中设置颜色。 color = this.getItemStyleColor(this.deepQuery(queryTarget, 'itemStyle.normal.color'), something.seriesIndex, something.dataIndex, something.data); if (color && something.type != ecConfig.CHART_TYPE_K) { this.setColor(itemName, color); } this._selectedMap[itemName] = this._selectedMap[itemName] != null ? this._selectedMap[itemName] : true; } } } this.clear(); this._buildShape(); },
2、于是可能产生了如下一个坐标系设置代码
{ name: 'iphone3', type: 'map', mapType: 'china', selectedMode:'single', roam: true, showLegendSymbol:true, itemStyle:{ normal:{ label:{show:true} ,areaStyle:{color:'green'} //设置地图背景色的颜色设置 ,color:'rgba(255,0,255,0.8)' //刚才说的图例颜色设置 }, emphasis:{label:{show:true}} }, data:[ {name: '北京',value: Math.round(Math.random()*1000)}, {name: '天津',value: Math.round(Math.random()*1000)}, {name: '上海',value: Math.round(Math.random()*1000)} ] }
3、这么设置有问题吗?我设置了一下发现有问题。图例颜色是对了,但是地图背景色不对,变成和第一个设置color的坐标系颜色一致了
于是查看地图源码(map.js)发现有这么一行代码
color = dataRange && !isNaN(value) ? dataRange.getColor(value) : null;style.color = style.color || color || this.getItemStyleColor(this.deepQuery(queryTarget, 'itemStyle.normal.color'), data.seriesIndex, -1, data)|| this.deepQuery(queryTarget, 'itemStyle.normal.areaStyle.color');
如果按照地图是china的话,这里的style可以理解成地图省份,style.color没值,color如果区间拉到最下面也是没值(可以看到getColor方法返回的是null),然后接着找itemStyle.normal.color,所以两个都设置了,是找不到areaStyle的设置。背景色就是第一个坐标系的颜色。
4、然后再想怎么解决。
看图例的颜色设置机制,实际上和坐标系的什么图形,什么类型都没关系,只要是坐标系的格式就行。那是不是可以欺骗一下。
在series中,设置成这样
{ name: 'iphone3',//add by danielinbiti,注意这里名称必须和坐标系的名称要一致 type:'', //设置为'',所有图形都不会读取 itemStyle:{ normal:{ color:'rgba(255,0,255,0.8)' } }, mapType:'none', data:[]},{ name: 'iphone3', type: 'map', mapType: 'china', selectedMode:'single', roam: true, showLegendSymbol:true, itemStyle:{ normal:{ label:{show:true} ,areaStyle:{color:'green'} }, emphasis:{label:{show:true}} }, data:[ {name: '北京',value: Math.round(Math.random()*1000)}, {name: '天津',value: Math.round(Math.random()*1000)}, {name: '上海',value: Math.round(Math.random()*1000)} ]}
总结:
或许没有发现其他隐形设置,但根据map中的代码,似乎也没有其他途径。希望echarts能够修正一下这个问题。把or的时候顺序换一下就行了。举手之劳。
好了。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
婴幼儿认知功能的主义转变出现在几岁 认知发展理论心理发展过程 如何判断相亲对象是否渣男呢? 游船怎么造句 mei字造句 赏阅怎么造句 张金战个人记事 空调扇怎么关 matlab怎么运行程序文件-matlab运行程序文件的方法教程 ios8.1.1怎么没有搜索栏了 如果是未成年犯法关多少年是固定的吗? 请问如果未成年人冒充别人违法吗 冒充监护人为未成年人犯罪签字犯法么 冒充未成年犯法吗 成年人冒充未成年判刑吗? 我的遭遇糟糕极了,哪个过来人能替我解决 梦幻金价高的区好还是低的区好 哪个品种的柠檬好吃 什么品种的柠檬好吃? 哪里的柠檬好吃,泡水不苦? 阴凉柜是什么意思? 是不是大城市生活压力就很大呀? 视觉传达设计历史 品牌形象设计的重要性是什么? 丰田牌gtm7201es是什么型号的车? 三原县农村低保是取了吗 产后可以用艾草水洗下面吗 冰冻海鲜的口感会发生哪些变化? 艾草能洗外阴瘙痒吗下边痒用盐水洗管用吗 产妇可以用艾草水能洗下面吗 食堂充卡的地方叫什么名字 和平精英赛季结束后怎么掉段 没考上高中怎么办啊,急!!! 海泰客是哪个国家的高科技品牌? 海泰客是哪个国家的公司? 海泰客进军中国市场 2013中国鞋服行业电子商务峰会大会亮点 一亩田如何找到隐私 一亩田如何帮助农村解决农产品滞销问题? ...今天第一次听说一亩田,想在上面进菜,货源... 一亩田的同城进货啥意思 psp好游戏推荐) 手机充电器发烫如何办 请问下青岛中心医院医生待遇如何?谢谢 梦见小蛇怀孕男孩女儿,梦见小蛇生男还是生女 令人注目什么意思?有什么典故? 什么什么注目 走进新时代梦之旅简谱 冬笋炒酱腊肉制作步骤 天津大道可以走自行车骑行吗?