首页 > 其他分享 >echarts图中显示不全问题

echarts图中显示不全问题

时间:2022-10-10 15:33:36浏览次数:67  
标签:100% 不全 height width 图中 modal echarts 50

解决方案:页面重绘后在执行绘图的代码。vue里面可以把绘图代码放到this.$nextTick里面
描述:

  • 首先我们想点击页面上的按钮,弹出一个框,占页面width:80%,height:70%,里面的echart图占对话框的100%。至于为什么要用100比,当然是为了适配不同分辨率了。如下图:

代码如下:

<template>
    <div class="echartTest">
        <Modal
            v-model="modal1"
            class-name="modal-wrap-cate"
            footer-hide
            :transfer="false">
            <div ref="echart" class="echart-box"></div>
        </Modal>
        <Button type="primary" @click="drawEchart" >绘图</Button>
    </div>
</template>
<script>
    const echarts = require("echarts/lib/echarts"); // 引入 ECharts 主模块
    require("echarts/lib/component/grid");
    require("echarts/lib/chart/line");//引入折线
    export default {
        data(){
            return{
                modal1:false
            }
        },
        methods:{
            drawEchart(){
                this.modal1=true
                let myChart=echarts.init(this.$refs.echart)
                let option = {
                    grid:{
                        left:50,
                        right:50,
                        top:50,
                        bottom:50
                    },
                    xAxis: {
                        type: 'category',
                        data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
                    },
                    yAxis: {
                        type: 'value'
                    },
                    series: [{
                        data: [820, 932, 901, 934, 1290, 1330, 1320],
                        type: 'line',
                        smooth: true
                    }]
                };
                myChart.setOption(option)
            }
        }
    }
</script>
<style lang="less">
    .echartTest{
         .modal-wrap-cate{
                .ivu-modal{
                    width: 80% !important;
                    height:70% !important;
                    .ivu-modal-body {
                        padding: 54px 92px;
                    }
                }
                .ivu-modal-content {
                    width: 100%;
                    height: 100%;
                    .ivu-modal-body{
                        width: 100%;
                        height: 100%;
                    }
                }
                .echart-box{
                    width:100%;
                    height: 100%;
                }
            }
    }
</style>

结果:显然没有我们想要的效果,查看页面元素发现,设置100%的canvas元素居然变成100px,这是因为没有找到元素的大小所以画了个基础约定的大小100px。如下图:

现在我们将绘图的代码放到$nextTick里面,代码如下:

<template>
    <div class="echartTest">
        <Modal
            v-model="modal1"
            class-name="modal-wrap-cate"
            footer-hide
            :transfer="false">
            <div ref="echart" class="echart-box"></div>
        </Modal>
        <Button type="primary" @click="drawEchart" >绘图</Button>
    </div>
</template>
<script>
    const echarts = require("echarts/lib/echarts"); // 引入 ECharts 主模块
    require("echarts/lib/component/grid");
    require("echarts/lib/chart/line");//引入折线
    export default {
        data(){
            return{
                modal1:false
            }
        },
        methods:{
            drawEchart(){
                this.modal1=true
                this.$nextTick(()=>{
                    let myChart=echarts.init(this.$refs.echart)
                    let option = {
                        grid:{
                            left:50,
                            right:50,
                            top:50,
                            bottom:50
                        },
                        xAxis: {
                            type: 'category',
                            data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
                        },
                        yAxis: {
                            type: 'value'
                        },
                        series: [{
                            data: [820, 932, 901, 934, 1290, 1330, 1320],
                            type: 'line',
                            smooth: true
                        }]
                    };
                    myChart.setOption(option)
                })
            }
            
        }
    }
</script>
<style lang="less">
    .echartTest{
         .modal-wrap-cate{
                .ivu-modal{
                    width: 80% !important;
                    height:70% !important;
                    .ivu-modal-body {
                        padding: 54px 92px;
                    }
                }
                .ivu-modal-content {
                    width: 100%;
                    height: 100%;
                    .ivu-modal-body{
                        width: 100%;
                        height: 100%;
                    }
                }
                .echart-box{
                    width:100%;
                    height: 100%;
                }
            }
    }
</style>

当我们点击按钮的时候,会触发按钮的那段代码,页面的对话框还没出来,此时绘图其实已经完成了。所以我们看到的100px其实就是还没显示对话框之前画的图。this.$nextTick就是等页面渲染完再执行,也就是对话框出来后,画echart的元素就有大小了。所以效果就出来了。
————————————————
原文链接:https://blog.csdn.net/weixin_44494811/article/details/107856879

标签:100%,不全,height,width,图中,modal,echarts,50
From: https://www.cnblogs.com/baozhengrui/p/16775894.html

相关文章

  • Vue3 Echarts 3D柱状图搭建
    最近学习大数据,需要数据可视化,所以特地去学习了一下echarts,通过springboot+vue整合了echarts三维柱状图。先看效果。  因为我是初学vue脚手架,对一些vue内置方法不是......
  • Echarts
    Echarts介绍D3.js是web端评价最高的JavaScript可视化工具库;ECharts.js是百度开发一个开源JavaScript可视化工具库;Highcharts.js是国外的一款可视化库,非商用免费,被......
  • leetcode84-柱状图中最大的矩形
    84.柱状图中最大的矩形 两个星期没写leetcode就连暴力解法都写不出了。暴力解法classSolution{public:intlargestRectangleArea(vector<int>&heights){......
  • ECharts数据可视化
    学习文档:https://blog.csdn.net/weixin_43883917/article/details/113886713https://www.runoob.com/echarts/echarts-tutorial.html1.使用CDN引入:StaticfileCDN(国内):<s......
  • SQL视图中的字段与基表中的字段不一致,原因是什么?
        出现这样的原因是修改了表的结构,没有重新编译视图,这种情况出现的几率很少,并不是没有。解决方法:重新编译一下该视图。视图是一个虚表,是从一个或几个基本表(或视......
  • [答疑]把类拖到序列图中,弹出的框消失了,只能默认选Link
    长久2020-1-1217:11潘老师,EA13版本,按照这种拖拉的方式没有这个选项。from业务对象,怪怪的。从属性来看没有实例化,求指导UMLChina潘加宇你之前是不是勾选过这个长久是的,在尝......
  • [答疑]如何在EA的用例序列图中表现出 while() {...}和 do {...} while()
    ​​软件方法(下)分析和设计第8章连载[20210518更新]>>​​593(585**01)2012-09-1415:07:29如何在EA的用例序列图中表现出while(){...}和do{...}while()?张智强@上海......
  • Pyecharts基本图的使用
    概况:Echarts是一个由百度开源的数据可视化,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可。而Python是一门富有表达力的语言,很适合用于数据处理。当数据分析......
  • Flask 框架:运用Echarts绘制图形
    echarts是百度推出的一款开源的基于JavaScript的可视化图表库,该开发库目前发展非常不错,且支持各类图形的绘制可定制程度高,Echarts绘图库同样可以与Flask结合,前台使用echart......
  • Vue2 下 Echarts的使用
    Vue2下Echarts的使用1、安装组件npminstallechartsvue-echarts--save2、使用2.1、配置为全局组件方式全局配置为公有组件//main.jsimport"echarts"import......