echarts rich设置动态图片/动态数据;echarts 人均收入柱状图 window系统显示不出国旗;echarts动态rich

一、echarts 人均收入柱状图window系统显示不出国旗问题分析

1.如下图所示:该柱状图在window下面只显示emoji 字符,能不能转化完全看系统支不支持
人均收入柱状图常用电脑效果
2.图中的国家标识是以emoji字符来命名,但是在苹果电脑下面显示会出现对应国家的国旗图标
人均收入柱状图苹果电脑效果

二、让苹果电脑的效果在windows下面显示同样的效果

大概想法通过rich动态匹配显示对应国家的国旗(包括全世界国家对应的中英文以及编码的js、包括全世界国家的编码以及唯一标识的js、以国家标识命名的图片列表)

注意:目前通过对比js了解到加拿大和美国编码都是1需要自己修改其中一个国家的编码
js和图片如下图所示:
中英文以及编码列表
编码以及唯一标识列表
以唯一标识命名的图片列表

1.动态匹配对应中文名称的国家编码

中文转编码

2.用国家编码去匹配对应的国家标识名称

国家标识

3.动态设置rich匹配对应的图片

1.yAxis以中文名称赋value值并取到对应的国家标识给到name参数
添加中文名称和国家标识
2.定义formatter并通过value值取到对应的国家名称(yAxis的name是不是没有用上?但是上面的yAxis的name是用于展示y轴数据formatter只能获取到value,所以得用value再去匹配国家标识),设置rich为空是为了后面对rich进行动态处理
匹配国家标识并定义formatter
3.动态设置rich并用formatter中的value(国家标识)对应以国家标识命名的svg
动态设置rich

通过动态设置yAxis、formatter以及rich可以达到任何想要设置的效果

当然这个方法也有一定得局限性,比如只支持固定参数以及固定的自定义参数(不过也可以通过接口来动态化这些固定的参数)

最终效果如下图

在这里插入图片描述

动态添加数据会遇到数据已更新但是界面没有展示

添加监听事件:
//数据自动刷新,必然需要一个监听机制告诉Echarts重新设置数据
option: { //观察option的变化
handler(newVal, oldVal) {
if (this.myChart) {
if (newVal) {
this.myChart.setOption(newVal);
} else {
this.myChart.setOption(oldVal);
}
} else {
this.init();
}
},
deep: true //对象内部属性的监听,关键。
}
init(){
// 基于准备好的dom,初始化echarts实例
var myChart = this.$echarts.init(document.getElementById(‘myQueueEchart’))
// 绘制图表,this.option是数据
myChart.setOption(this.option,true)
},

需要动态的数据直接通过this.option.xxxx = obj;即可

文件链接

链接: https://pan.baidu.com/s/13ArNtqK-4_R8nJm58CO2zw 提取码: vhwt

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
EChartsrich 特性可以实现在标签中添加更多的样式,比如图标、颜色、字体等。而要给 rich 中的元素添加点击事件,可以通过 `rich` 中的 `events` 属性来实现。 具体来说,在 `rich` 中添加一个元素时,可以在该元素的样式设置中加入 `events` 属性,该属性的值为一个对象,其中可以定义 `click` 方法作为点击事件的回调函数。如下所示: ```javascript option = { xAxis: { type: 'category', data: ['A', 'B', 'C'] }, yAxis: { type: 'value' }, series: [{ name: 'series1', type: 'bar', data: [10, 20, 30], label: { show: true, position: 'top', distance: 10, formatter: '{a|{c}}{a|{unit}}\n{name|{b}}', rich: { a: { color: 'red' }, name: { color: '#999' }, unit: { color: '#999' }, icon: { backgroundColor: '#3399CC', width: 20, height: 20, borderRadius: 10, align: 'center', verticalAlign: 'middle', lineHeight: 20, fontSize: 14, text: '\ue602', color: '#fff', events: { click: function(params) { console.log('icon clicked:', params); } } } } } }] }; ``` 在上面的代码中,我们在 `rich` 中定义了一个名为 `icon` 的元素,并在其样式设置中加入了 `events` 属性,该属性的值为一个对象,其中定义了一个 `click` 方法作为点击事件的回调函数。当用户点击该元素时,就会触发该回调函数,并输出参数 `params`,我们可以从该参数中获取事件的信息。 需要注意的一点是,如果要在 `rich` 元素中添加点击事件,那么需要在 `label` 中设置 `formatter` 属性,并在该属性的值中引用 `rich` 中的元素。这是因为 `rich` 中的元素是作为标签的一部分来使用的。在上面的示例代码中,我们在 `formatter` 中引用了 `rich` 中的 `a`、`name`、`unit` 和 `icon` 元素,以设置标签的样式和布局。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值