javascript - 如何使用highchart动态将柱形图更改为镜像图

标签 javascript php jquery charts highcharts

嗯,今天我遇到了 highchart 问题,我正在尝试修复如下内容: 1.我正在调用ajax,然后更改柱形图系列数据,如下所示:

if(data == 2) {

chart.series[0].setData([
['2009', 140],['2010', 200],['2011',   100],
['2009', -200],['2010',   -120],['2011', -240]]);
}

2.我想要的是将这些信息显示为镜像图表方式,其中有两个组名称“UK”、“AUS”,因此数据将显示为 UK - 2009、2010、2011,与 AUS 2009、2010、2011 相同(但具有负值) ) 3.我想要的演示在这里http://www.highcharts.com/demo/column-negative

所以,简而言之,如果 ajax 从 php 页面引入 data = 2,那么我想将柱形图值转换为带有组系列的负图表值,例如附加 highcahrt 演示链接。

伙计们,我长期以来一直在努力解决这个问题,并且确实需要帮助。因此,如果有人知道我如何使用 Chart.series[0].setData 或任何其他方法,那就太好了。提前致谢

嗨,我想要这样的动态图表 enter image description here

在建议答案后我现在得到这样的答案: enter image description here

代码:

                                function requestData() {
                                    chart = $('#column_chart').highcharts();

                                    $.ajax({
                                        type: "POST",
                                        url: "graph_advanced_file.php",
                                        data: {sliceName: ch},
                                        success: function(data) {
                                            //store local storage.....

                                            localStorage.setItem("current_item", ch);

                                            //alert(data);
                                            //Now, check whatever data is coming through serve accordingly......to load some data.....of that perticular....
                                            if(data == 1) {
                                                //Travel..so get series data....
                                                <?php
                                                    //$each_slice_series = array();
                                                    //$each_slice_series = getSliceInfo(1);
                                                    //$sliceId = 1;
                                                    //call and get the figure....
                                                ?>
                                                chart.series[0].setData([
                                                ['Mand',   200],
                                                ['Sand',   800],
                                                ['Land', 700]]);
                                            }
                                            if(data == 2) {
                                                //Garment....So get series data....
                                                var options = {
                                                  chart: {
                                                      type: 'column'
                                                  }, 
                                                  plotOptions: {
                                                      series: {
                                                          stacking: 'normal'
                                                      }
                                                  }
                                                };

                                               //Load new options to chart   
                                               chart.setOptions(options);
                                                chart.series[0].setData([
                                                  ['2009', 140],['2010', 200],['2011',   100],
                                                  ['2009', -200],['2010',   -120],['2011', -240]]);

                                               chart.series[0].name="Uk";

                                               chart.series[1].setData([
                                                      ['2009', 180],['2010', 100],['2011',   150],
                                                      ['2009', -250],['2010',   -130],['2011', -270]]);

                                               chart.addSeries({ 
                                                  name: "AUS", 
                                                  data: [ ['2009', 180],
                                                          ['2010', 100],
                                                          ['2011', 150], 
                                                          ['2009', -250],
                                                          ['2010', -130],
                                                          ['2011', -270]] 
                                               });

                                               chart.redraw();

                                                //chart.series[0].setData([
                                                //['2009', 140],['2010', 200],['2011',   100],['2012', 130],['2013', 190],['2014', 220],['2015', 230],
                                                //['2009', -200],['2010',   -120],['2011', -240],['2012', -220],['2013', -150],['2014', -100],['2015', -250],
                                                //]);

                                            }

现在,这个 requestData 调用者:

$('#column_chart').highcharts({
                                     chart: {
                                            type: 'column',
                                            events: {
                                                load: requestData
                                                //click: changeLables
                                            }
                                        },
                                        title: {
                                            text: 'Total Sale of each products'
                                        },
                                        subtitle: {
                                            text: '(Click on product name to display monthly details)'
                                        },
                                        credits: {
                                            enabled: false
                                        },
                                        xAxis: {
                                            type: 'category'
                                        },
                                        yAxis: {
                                            title: {
                                                text: 'Products Sale'
                                            }
                                        },

                                        legend: {
                                            enabled: false
                                        },
                                        series: [{
                                            name: 'Product Sale',
                                            colorByPoint: true,
                                            data: [{
                                                name: 'Mand',
                                                y: 200<?php //echo $each_slice_series[0];?>
                                            }, {
                                                name: 'Land',
                                                y: 800<?php //echo $each_slice_series[1];?>
                                            }, {
                                                name: 'Sand',
                                                y: 700<?php //echo $each_slice_series[2];?>
                                            }]
                                        }]
                                    });//End of chart......

让我知道

最佳答案

如果您想动态地将柱形图更改为镜像图,则必须执行此操作。

if(data == 2) {

   //Create options      
   var options = {
      chart: {
          renderTo: 'container',
          type: 'bar'
      }
    };

   //Load new options to chart   
   chart.setOptions(options);

   //Load new series
   chart.series[0].setData([
      ['2009', 140],['2010', 200],['2011',   100],
      ['2009', -200],['2010',   -120],['2011', -240]]);
   }
}

编辑

如果您有两个数据并且还想按名称对系列进行分组,则必须执行此操作。

if(data == 2) {



$('#column_chart').highcharts({ 
   chart: { 
     type: 'column' 
   },   
   plotOptions: { 
     series: { 
       stacking: 'normal' 
     } 
   }, 
   series: [{ 
     name: 'UK', 
     data: [ 
           ['2009', 140],['2010', 200],['2011', 100], 
           ['2009', -200],['2010', -120],['2011', -240]] 
     }, { 
     name: 'AUS', 
     data: [['2009', 180], 
           ['2010', 100], 
           ['2011', 150], 
           ['2009', -250], 
           ['2010', -130], 
           ['2011', -270]] 
           } ] 
    });
}

希望对您有帮助。

关于javascript - 如何使用highchart动态将柱形图更改为镜像图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31715913/

相关文章:

javascript - PubNub 中的 WebRTC 视频流

php - SQLite适合并发阅读吗?

php - 需要在 PHPMyAdmin 中删除 CSV 文件

javascript - 为目标为 ="_blank"的 URL 显示带有固定消息的弹出窗口

javascript - jQuery - 用于原始文本的 insertBefore()

javascript - node.js、socket.io 运动

javascript - AngularFire - 类型错误 : Cannot read property '$add' of undefined

JQuery-ui : tabs with heightstyle fill, 在可调整大小的面板中,选项卡内容高度未更新

javascript - Angularjs ng-repeat 函数从 get 返回 html

php - 如何在 PHP 中获取一个月的第一个、第三个和第五个星期六?