包含负面和正面数据的Highcharts条形图

时间:2015-09-04 11:29:49

标签: highcharts

我正在制作一个显示条形图的脚本。我的工作达到了一定程度。

我要做的是在图表中显示MySQL查询的结果,左侧为负值,右侧为正值。表中的结果值是" 1"或" 2"。

目前的代码是:

$(function () {

var data =[<?php


mysql_select_db($database_test, $con);
$query_result = sprintf("SELECT COUNT(Condition), ConditionValue AS RC1 FROM FeedBack WHERE ConditionValue = 1 AND FeedBackDate BETWEEN '" . date("Y-m-d", strtotime($_POST['FromDate'])) . "' AND '". date("Y-m-d", strtotime($_POST['ToDate'])) . "'");
$result = mysql_query($query_result, $con) or die(mysql_error());
$totalRows_result_rc = mysql_num_rows($result);



while ($row_result = mysql_fetch_assoc($result)){
?>


[<?php echo $row_result['RC1'];?>]

<?php
}
?>
]
$('#container1').highcharts({
    chart: {
    type: 'bar'
    },
title: {
    text: 'Condition'
},
subtitle: {
    text: ''
},

legend: {
    layout: 'vertical',
    align: 'right',
    verticalAlign: 'top',
    x: -20,
    y: 34,
    floating: false,
    borderWidth: 1,
    backgroundColor: ((Highcharts.theme && Highcharts.theme.legendBackgroundColor) || '#FFFFFF'),
    shadow: true
},

plotOptions: {
    series: {
        shadow:false,
        borderWidth:0,
        dataLabels:{
            enabled:true,
            formatter: function() {
                return this.y +'%';
            }
        }
    }
},

xAxis:{
lineColor:'#999',
lineWidth:1,
tickColor:'#666',
tickLength:3,
    title:{
        text:'<?php print $totalRows_result_rc;?> records'
    },
},

yAxis:{
lineColor:'#999',
lineWidth:1,
tickColor:'#666',
tickWidth:1,
tickLength:3,
gridLineColor:'#ddd',
    title:{
        text:'Between <?php print $_POST['FromDate'];?> and <?php print $_POST['ToDate'];?>',
        rotation:0,
        margin:50,
 },

labels: {
    formatter: function() {
        return (this.isLast ? this.value + '%' : this.value);
    }
 }
},
series: [{

color: '#CC0000',
name: 'Conditione',
data: data,
maxPointWidth: 10,
index:0,
legendIndex:1,
exporting: {
    filename: 'Ccondition'
}

}]
});
});

我用不同的方式写了这个,但是无法得到所需的结果。

任何人都可以指出我错在哪里。非常感谢你花时间帮忙。

1 个答案:

答案 0 :(得分:0)

这可以通过使用两个系列来完成:一个包含负数,一个包含正值。它们应该(但不是根据您的需要而需要)共享相同的xAxis值。在highcharts网站上查看此example。注意使用两个系列:

    series: [{
        name: 'Male',
        data: [-2.2, -2.2, -2.3, -2.5, -2.7, -3.1, -3.2,
            -3.0, -3.2, -4.3, -4.4, -3.6, -3.1, -2.4,
            -2.5, -2.3, -1.2, -0.6, -0.2, -0.0, -0.0]
    }, {
        name: 'Female',
        data: [2.1, 2.0, 2.2, 2.4, 2.6, 3.0, 3.1, 2.9,
            3.1, 4.1, 4.3, 3.6, 3.4, 2.6, 2.9, 2.9,
            1.8, 1.2, 0.6, 0.1, 0.0]
    }]

并且它们与相同的类别相关联:

var categories = ['0-4', '5-9', '10-14', '15-19',
        '20-24', '25-29', '30-34', '35-39', '40-44',
        '45-49', '50-54', '55-59', '60-64', '65-69',
        '70-74', '75-79', '80-84', '85-89', '90-94',
        '95-99', '100 + '];

他们在这里做了一些格式化,以便将负值标记为正数,并将其他一些yAxis标签更改。