HCharts 柱状图和饼图

几个月前用HCharts写了这个柱状图和饼图,现在记录一下,方便以后再次使用。
效果图:

这里写图片描述

这里写图片描述

如何生成柱状图?
首先引入hcharts的js文件和css文件。

  <script src="../../../js/Highcharts-4.0.3/js/highcharts.js"></script>
  <script src="../../../js/Highcharts-4.0.3/js/modules/exporting.js"></script>

方法:

        //创建饼图
        function CreatePie(itemdata) {
            $('#container').highcharts({
                chart: {
                    plotBackgroundColor: null,
                    plotBorderWidth: null,
                    plotShadow: false
                },
                title: {
                    text: '<span style="color:tomato;font-weight:600">' + jgname + '</span>的人员统计分析'
                },
                tooltip: {
                    pointFormat: '{series.name}: <b>{point.percentage:.1f}%</b>'
                },
                plotOptions: {
                    pie: {
                        allowPointSelect: true,
                        cursor: 'pointer',
                        dataLabels: {
                            enabled: true,
                            color: '#000000',
                            connectorColor: '#000000',
                            format: '<b>{point.name}</b>: {point.percentage:.1f} %'
                        }
                    }
                },
                series: [{
                    type: 'pie',
                    name: '人员统计分析',
                    data: itemdata
                }]
            });
        }

        //创建柱状图
        function CreateZhu(category, numFemale, numMale) {
            $('#container').highcharts({
                chart: {
                    type: 'column'
                },
                title: {
                    text: '<span style="color:tomato;font-weight:600">' + jgname + '</span>的人员统计分析'
                },
                xAxis: {
                    categories: category
                },
                yAxis: {
                    min: 0,
                    title: {
                        text: '数量 (人)'
                    },
                    stackLabels: {
                        enabled: true,
                        style: {
                            fontWeight: 'bold',
                            color: (Highcharts.theme && Highcharts.theme.textColor) || 'gray'
                        }
                    }
                },
                legend: {
                    align: 'right',
                    x: -70,
                    verticalAlign: 'top',
                    y: 20,
                    floating: true,
                    backgroundColor: (Highcharts.theme && Highcharts.theme.legendBackgroundColorSolid) || 'white',
                    borderColor: '#ccc',
                    borderWidth: 1,
                    shadow: false
                },
                tooltip: {
                    formatter: function () {
                        return '<b>' + this.x + '</b><br/>' +
                            this.series.name + ': ' + this.y + ' 人<br/>' +
                            '总人数: ' + this.point.stackTotal + ' 人';
                    }
                },
                plotOptions: {
                    column: {
                        stacking: 'normal',
                        dataLabels: {
                            enabled: true,
                            color: (Highcharts.theme && Highcharts.theme.dataLabelsColor) || 'white',
                            size: 30
                        }
                    }
                },
                series: [{
                    name: '女',
                    color: Highcharts.getOptions().colors[5],
                    data: numFemale,
                }, {
                    name: '男',
                    color: '#007EAE',
                    data: numMale
                }]
            }, function (chart) {

            });
        }

但是:html咋显示阿?

            <div data-options="region:'center',iconCls:'icon-ok'" id="img" style="overflow: auto;">
            <div id="container" style="width: 100%; height: 500px; margin: 0 auto"></div>
        </div>

看那么多代码,具体传入的数据格式是个啥?

 //统计图类型选择
        function select1(o, f) {//o 1为按单位 2为按年龄段;f 1为按柱状图,2为按饼图
            var url = "";
            //参数值选择
            url += '&o=' + o;
            url += '&f=' + type;
            url += '&j=' + $("#JGID").val();
            if (o == 1) {
                var unit = $("#JGNAME1").val();
                url += '&unit=' + unit;
            }
            else {
                var unit = $("#JGNAME2").val();
                url += '&unit=' + unit;
            }
            var itemdata = [];
            var numFemale = new Array();
            var numMale = new Array();
            if (o == 1) {
                flag = 1;
                if (type == 1) {//柱状图
                    $.get("ashx/count.ashx?r=" + Math.random() + url,
                                 function (data) {
                                     var d = eval(data);
                                     for (var i = 0; i < d.length; i++) {
                                         var n = d[i].name;
                                         var femaleCount = parseInt(d[i].count.split('-')[0]); //女性人数
                                         var maleCount = parseInt(d[i].count.split('-')[1]);//男性人数
                                         itemdata.push(n);

                                         numFemale.push(femaleCount);
                                         numMale.push(maleCount);
                                     }
                                     CreateZhu(itemdata, numFemale, numMale);
                                 });
                }
                else {
                    $.get("ashx/count.ashx?r=" + Math.random() + url,
                       function (data) {
                           var d = eval(data);
                           for (var i = 0; i < d.length; i++) {
                               var n = d[i].name;
                               var femaleCount = parseInt(d[i].count.split('-')[0]); //女性人数
                               var maleCount = parseInt(d[i].count.split('-')[1]);//男性人数
                               var c = femaleCount + maleCount;
                               itemdata.push([n, c]);
                           }
                           CreatePie(itemdata);
                       });
                }
            }
            else if (o == 2) {//按年龄段
                flag = 2;
                if (type == 1) {//柱状图
                    $.get("ashx/count.ashx?r=" + Math.random() + url,
                              function (data) {
                                  var d = eval(data);
                                  for (var i = 0; i < d.length; i++) {
                                      var n = d[i].name;
                                      var femaleCount = parseInt(d[i].count.split('-')[0]); //女性人数
                                      var maleCount = parseInt(d[i].count.split('-')[1]);//男性人数
                                      itemdata.push(n);

                                      numFemale.push(femaleCount);
                                      numMale.push(maleCount);
                                  }
                                  CreateZhu(itemdata, numFemale, numMale);
                              });
                }
                else {
                    $.get("ashx/count.ashx?r=" + Math.random() + url,
                        function (data) {
                            var d = eval(data);
                            var num = [];
                            for (var i = 0; i < d.length; i++) {
                                var n = d[i].name;
                                var femaleCount = parseInt(d[i].count.split('-')[0]); //女性人数
                                var maleCount = parseInt(d[i].count.split('-')[1]);//男性人数
                                var c = femaleCount + maleCount;
                                itemdata.push([n, c]);
                            }
                            CreatePie(itemdata);
                        });
                }
            }
        }

原谅我没有剖析太细,传入的格式就是数组。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
你可以使用 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 的官方文档来了解更多关于如何使用和配置不同类型图表的信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值