具体问题是,设置echarts宽度width为100%,结果出来的时候就变成了100px;这种情况一般都是 echarts所在的父容器一开始是display:none,在一开始初始化执行js的时候找不到这个元素,所以会出现问题。
一开始就把echatrs的的宽度定死,监听浏览器大小变化,把echerts用div包裹起来,每当浏览器发生变化,拿到div的值,并赋值给echerts这个id。
示例:
首先,我们要获取到echarts图表标签元素,设置初始宽度。我使用的是 window.innerWidth - 200 + “px”;可以根据自己的需求,设置相应的宽度。
window.addEventListener 主要是为了实现宽度自适应,会根据浏览器窗口的变化,来自动改变图表宽度。示例代码如下:
const statInfo = this.statInfos.nativeElement; // 获取图表元素
statInfo.style.width = window.innerWidth - 200 + "px"; //初始化echarts图表宽度
const myChart = echarts.init(statInfo);
// 设置宽度自适应
window.addEventListener('resize', () => {
statInfo.style.width = window.innerWidth - 200 + "px";
myChart.resize();
});
elementUI的el-tabs下使用
如果用的是elementUI,超简单解决办法:
1、el-tabs 有一个属性:lazy,表示标签是否延迟渲染。 设为true,延时加载即可。
2、首次加载的v-if或者v-show设置为true。
3、所在div用了v-show,这种情况要不换成v-if,要不就设置初始值是true。换成v-if可行,但在频繁显示或不显示的时候不适用v-if,所以在试用v-show且初始为false的时候,可以使用resize()。
watch:{
show(v){
// 在show为true,也就是显示的时候,调用resize 解决100px的问题
if(v){
this.$nextTick(() => this.$refs.chart.instance.resize())
}
}
}
最近使用websocket加ECharts做了一个实时监控的功能,发现了一个比较严重的问题,就是浏览器运行一段时间就会非常卡,之前在ECharts官网运行官方实例“动态数据 + 时间坐标轴”时
使用echarts时,写在tab页中的图表宽度明明设成了100%,但是在页面上实际却只有100px宽。解决办法:找一个在tab页的切换操作中不会隐藏的父容器,把它的宽度的具体值取出后在初始化图表之前直接赋给图表
Echarts官方文档明确指出自己不支持微信小程序中使用Tooltip这个功能。但是只要做过图表设计的人都知道,Tooltip这个功能有多么重要,尤其是对于line图而言。那么如何解决或者说间接实现tooltip呢?
对比以上3种图表,ECharts和BizCharts相对容易使用,尤其ECharts的配置非常清晰,BizCharts与其也有一定相似之处。BizCharts优势在于组件化的形式使得dom结构相对清晰,按需引用。G2比较适合需要大量图表交互时引用,其丰富的api处理交互逻辑相对更有优势。
什么是Echarts?简单来说呢它就是一个商业级数据图表,一个纯JavaScript的图标库。可以兼容绝大部分的浏览器,可以为前端开发提供一个直观、生动、可交互、可高度个性化定制的数据可视化图表。
数据的重要性我们大家都知道,就算再小的项目中都可能使用几个图表展示,我最近在做项目的过程中也是需要用到图表,最后选择了echarts 图表库,废话不多说,那我们就看看如何在 Vue 的项目中使用 echarts。
现在各种框架各种库都很强大,但是也因为功能强大,导致很多配置都过于繁重,真正有用的就那么几个,今天就基于echarts封装一个通用柱形图!想要了解其他的组件可以看下我之前封装的其他组件有好的思路或者其他的也会分享出来的
在公司做了一版dashboard,对echarts有了大量的实践。坚果图,日历图,折线图,地理图。难易程度排名为坚果图,折线图,日历图,地理图。总结了以下几点注意事项:
在开发后台管理项目时,需要统计后台用户数据,以折现图和饼图的形式显示,这边采用apache-echarts来实现需求。
可能有一些开发者忘记考虑echarts更新数据的特性,以及窗口缩放时的适应问题。这样导致数据更新了echarts视图却没有更新,窗口缩放引起echarts图形变形问题
内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!