ehcart 多图 饼图和柱状图 echart多图加载问题

这里写图片描述需要注意的是:
1,数据还是从java后台传过来的,格式都是对应的,前台直接解析就可以,不用处理了,两个图表和一个还是有些区别的,这个不是联动的,饼图和柱形图放在一起,感觉还是有些问题的,就是2,里面说的问题,也不知时什么原因造成的,那样写了就可以了,像网上那些例子那么做是只能出来第一个结果,第二个柱形图显示不出来。

2,在加载柱形图的时候,下面这句不能像以前那样写,不然执行不了,不知道什么原因,再有就是下面ajax动态赋值的时候,直接写option.这样赋值,不然也是不能赋值,mychart.getOption.这样是执行不了的,不知道原因。
var option = myChart2.getOption =

<body>  
    <!-- 为ECharts准备一个具备大小(宽高)的Dom -->  
        <div id="chartArea1" style="height:400px"></div>  
        <div id="wrong-message" style="color:blue;  font:bold 20px 宋体;"></div>
        <div id="chartArea2" style="height:300px"></div>    
    <script type="text/javascript" language="javascript">
    //echart的加载路径
    require.config({  
        paths : {  
            'echarts' : '' ,  
            'echarts/chart/bar' : '', //需要的组件 
            'echarts/chart/pie' : '' //需要的组件 
        }  
    });  
    //echart需要的组件
    require(  
        [ 'echarts',   
          'echarts/chart/bar',
          'echarts/chart/pie'
        ], DrawCharts //异步加载的回调函数绘制图表  
    );  
    //多图调用2个函数
    function DrawCharts(ec) {  
        FunDraw1(ec);  
        FunDraw2(ec);  
    }  
    function FunDraw1(ec) {  
        //初始化第一个dom,饼图
        var myChart1 = ec.init(document.getElementById('chartArea1'));             
        var option1 =  {
                title : {
                    text: '',
                    subtext: '',
                    x:'center'
                },
                tooltip : {
                    trigger: 'item',
                    formatter: "{a} <br/>{b} : {c} ({d}%)"
                },
                legend: {
                    orient : 'vertical',
                    x : 'left',
                    data:[]
                },
                toolbox: {
                    show : true,
                    feature : {
                        mark : {show: true},
                        dataView : {show: true, readOnly: false},
                        magicType : {
                            type: ['pie']
                        },
                        restore : {show: true},
                        saveAsImage : {show: true}
                    }                       
                },
                calculable : false,
                series : [
                    {
                        name:'',
                        type:'pie',
                        selectedMode: 'single',
                        radius : [100, 140],
                        //center: ['50%', '60%'],
                        //饼图样式,是否显示链接线
                        itemStyle : {
                            normal : {
                                labelLine : {
                                    show : true
                                }
                            }
                        },                          
                        data:[]                         
                    }
                ]

            };              
        myChart1.hideLoading();
        myChart1.setOption(option1);            
        getChartData1();//ajax后台交互           
        function getChartData1() {  
            //获得图表的options对象  
            var optionsPie = myChart1.getOption();  
            //通过Ajax获取数据  
            $.ajax({  
                type : "post",  
                async : false, //同步执行                  url:"${pageContext.request.contextPath}/order/login/pie_data.do",  
                //data:{},  
                dataType:"json", //返回数据形式为json  
                success:function(result) {                                                  
                    if (result) {
                        optionsPie.legend.data = result[0].legend;  
                        optionsPie.series[0].data = result[0].series;
                        //options.xAxis[0].data = result.category;  
                        myChart1.hideLoading();  
                        myChart1.setOption(optionsPie);  
                    }  
                },  
                error : function(errorMsg) {  
                    alert("不好意思,请求数据出错");  
                    myChart1.hideLoading();  
                }  
         });  
    };          
    //饼图的点击事件
    var ecConfig = require('echarts/config');
    myChart1.on(ecConfig.EVENT.PIE_SELECTED, function (param){              
         var selected = param.selected;
            var serie;
            var str = '当前选择: ';
            for (var idx in selected) {
                serie = myChart1.getOption().series[idx];
                for (var i = 0, l = serie.data.length; i < l; i++) {
                    if (selected[idx][i]) {
                        str += '【】' + serie.data[i].name + ' : ' + 
                               '【】' + serie.data[i].value + ' '+
                               '【】' + (serie.data[i].value/10)*100 + '% ';
                    }
                }
            }
            document.getElementById('wrong-message').innerHTML = str;           
    });
   }  
    //第二个函数,柱状图
    function FunDraw2(ec) {
        var myChart2 = ec.init(document.getElementById('chartArea2'));  
        myChart2.hideLoading();  
        var option = myChart2.getOption = ({  
            title: {  
                text: ""  
            },  
            tooltip: {  
                trigger: 'axis'  
            },  
            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: [],                 
            }  
        ],  
            yAxis: [  
            {  
                type: 'value',  
                splitArea: { show: true },  
                max: 10,  
                axisLabel: {  
                    show: true,  
                    formatter: '{value} /10'  
                }  
            }  
        ],  
            series: [  
            {  
                name: '数量',  
                type: 'bar',  
                barWidth: 30,            
                },  
                data: []  
            }  
            ]  
        }); 
        getChartData2();//调用ajax,求情数据
        function getChartData2() {
            //通过Ajax获取数据   
            $.ajax({
                    type : "post",
                    async : false, //同步执行  
                    url : "${pageContext.request.contextPath}/order/login/pie_data.do",
                    dataType : "json", //返回数据形式为json  
                    success : function(result) {
                        if (result) {
                            //options2.legend.data = ["数量"];
                        option.xAxis[0].data = result[0].legend;
                        option.series[0].data = result[0].valueList;
                        //重新定义option,并赋值
                        myChart2.hideLoading();
                        myChart2.setOption(option); 
                        }
                    },
                    error : function(errorMsg) {
                        alert("不好意思,求数据失败啦!");
                        myChart2.hideLoading();
                    }
                });
            }
    }   
</script>  
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用 Vue 和 Echarts 来创建柱状图饼图。以下是一个简单的示例: 首先,确保你已经安装了 Echarts: ```bash npm install echarts --save ``` 然后,在你的 Vue 组件中,你可以引入 Echarts 并创建一个柱状图饼图的实例。例如: ```vue <template> <div> <div ref="barChart" style="width: 400px; height: 400px;"></div> <div ref="pieChart" style="width: 400px; height: 400px;"></div> </div> </template> <script> import echarts from 'echarts' export default { mounted() { this.initBarChart() this.initPieChart() }, methods: { initBarChart() { const barChart = echarts.init(this.$refs.barChart) const options = { // 配置柱状图的数据和样式 // ... } barChart.setOption(options) }, initPieChart() { const pieChart = echarts.init(this.$refs.pieChart) const options = { // 配置饼图的数据和样式 // ... } pieChart.setOption(options) } } } </script> ``` 通过在 `mounted` 钩子中调用 `initBarChart` 和 `initPieChart` 方法,你可以在组件加载后初始化柱状图饼图的实例。然后,你可以根据 Echarts 的文档,配置相应图表的数据和样式。 注意,上述代码中的 `this.$refs.barChart` 和 `this.$refs.pieChart` 分别是柱状图饼图的 DOM 引用,可以在模板中使用 `ref` 属性指定。 这只是一个简单的示例,你可以根据具体需求自定义柱状图饼图的配置和样式。你可以参考 Echarts 的官方文档来了解更多关于如何使用和配置不同类型图表的信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值