使用Highcharts生成柱狀圖

Janphp

20html

使用Highcharts生成柱狀圖

helloweba.com 做者:月光光 時間:2012-01-20 10:04           標籤: Highcharts  圖表  柱狀圖           mysql

柱狀圖普遍應用於數據統計和分析,它是由一系列高度不等的縱向條紋表示數據分佈的狀況,可以直觀的表示數據間的差別。柱狀圖能夠是縱向和橫向排列,本文講解經過Highcharts生成一個年度財經支出統計圖和一個男女比例分佈圖。web

查看演示DEMOsql

一、年度財經支出統計圖

經過如下配置,能夠生成一個柱狀圖與曲線圖共存、雙Y軸、X軸標籤旋轉(標籤名稱太長的狀況)、XY軸都可放大的、去除LOGO信息的統計圖表。具體請看代碼和註釋:數據庫

var chart; 
$(function() { 
    chart = new Highcharts.Chart({ 
        chart: { 
            renderTo: 'chart_column'//圖表放置的容器,關聯DIV#id 
            zoomType: 'xy'   //X、Y軸都可放大 
            //由於是柱狀圖和曲線圖共存在一個圖表中,因此默認圖表類型不在這裏設置。 
        }
        title: { 
            text: '2011-2012年財經支出統計圖' //圖表標題 
        }
        subtitle: { 
            text: '數據來源:新浪財經'   //圖表副標題 
        }
        credits: { 
            enabled: false   //不顯示LOGO 
        }
        xAxis: [{ //X軸標籤 
            categories: ['2010年3月''2010年4月''2010年5月''2010年6月''2010年7月'
       '2010年8月''2010年10月''2010年11月''2010年12月''2011年3月''2011年4月''2011年5月'
       '2011年6月''2011年7月''2011年8月''2011年9月''2011年10月''2011年11月'], 
            labels: { 
                rotation: -45,  //逆時針旋轉45°,標籤名稱太長。 
                align: 'right'  //設置右對齊 
            } 
        }], 
        yAxis: [{ //設置Y軸-第一個(增幅) 
            labels: { 
                formatter: function() { //格式化標籤名稱 
                    return this.value + '%'
                }
                style: { 
                    color: '#89A54E' //設置標籤顏色 
                } 
            }
            title: {text: ''}//Y軸標題設爲空 
            opposite: true  //顯示在Y軸右側,一般爲false時,左邊顯示Y軸,下邊顯示X軸 
 
        }
        { //設置Y軸-第二個(金額) 
            gridLineWidth: 0,  //設置網格寬度爲0,由於第一個Y軸默認了網格寬度爲1 
            title: {text: ''},//Y軸標題設爲空 
            labels: { 
                formatter: function() {//格式化標籤名稱 
                    return this.value + ' 萬億元'
                }
                style: { 
                    color: '#4572A7' //設置標籤顏色 
                } 
            } 
 
        }], 
        tooltip: { //鼠標滑向數據區顯示的提示框 
            formatter: function() {  //格式化提示框信息 
                var unit = { 
                    '金額''億元'
                    '增幅''%' 
                } [this.series.name]; 
                return '' + this.x + ': ' + this.y + ' ' + unit; 
            } 
        }
        legend: { //設置圖例 
            layout: 'vertical'//水平排列圖例 
            shadow: true,  //設置陰影 
        }
        series: [{  //數據列 
            name: '金額'
            color: '#4572A7'
            type: 'column'//類型:縱向柱狀圖 
            yAxis: 1//數據列關聯到Y軸,默認是0,設置爲1表示關聯上述第二個Y軸即金額 
            data: [5923.955575.555786.78119.155810.876413.696488.310599.64,  
  1798275707304.45826810809.126949.928076.9210018.558079.0311396.18//金額數據 
        }
        { 
            name: '增幅'
            color: '#89A54E'
            type: 'spline'//類型:曲線圖 
            data: [18.39.825.626.816.635.438.566.9, -10.427.831.042.9,  
            33.119.625.918.324.5,7.5//增幅數據 
        }
    }); 
}); 

二、各學院畢業生男女比例分佈圖

前面的例子咱們都使用的是靜態數據,本例中,我想經過PHP來讀取mysql數據表中的數據,而後處理給Highcharts生成一個男女比例分佈圖。json

首先,設計一張簡單的表chart_student,用來存儲各學院的男生女生人數。ide

而後,鏈接mysql表,讀取數據:fetch

include_once('connect.php'); //鏈接數據庫文件 
$res = mysql_query("select * from chart_student"); //查詢讀取chart_student 
while($row = mysql_fetch_array($res)){ //循環結果集 
    $college[] = $row['college'];  //獲取學院名稱 
    $male[] = intval($row['male']);  //獲取男生人數,並轉換爲數字整型 
    $female[] = intval($row['female']); //獲取女生人數,並轉換爲數字整型 

本例將要經過Highcharts生成一個橫向柱狀圖,Y軸表示學院,X軸表示各學院男女比例分佈。經過上述PHP代碼獲取學院名稱做爲Y軸標籤,獲取各學院男生和女生數做爲X軸計算比例。this

接下來配置Highcharts,請看代碼和註釋:

var chart; 
$(function() { 
     chart = new Highcharts.Chart({ 
        chart: { 
            renderTo: 'chart_bar',  //圖表放置的容器,關聯DIV#id 
            defaultSeriesType: 'bar'  //圖標類型爲bar,即橫向柱狀條形統計圖 
        }
        title: { 
            text: '2011屆畢業生各學院男女比例分佈圖'  //設置圖表標題 
        }
        xAxis: { //設置X軸 
            categories: <?php echo json_encode($college); ?>  //經過PHP將讀取的學院名稱以JSON格式輸出 
        }
        yAxis: { //設置Y軸 
            min: 0,  //最小值爲0 
            title: {text: ''} 
        }
        plotOptions: { //設置數據點 
            series: { 
                stacking: 'percent'  //數據點關聯組合,採用百分比形式 
            } 
        }
        series: [{ 
            name: '男生'
            data: <?php echo json_encode($male);?>  //經過PHP將讀取的各學院男生人數並以JSON格式輸出 
        }
        { 
            name: '女生'
            data: <?php echo json_encode($female);?> //經過PHP將讀取的各學院女生人數並以JSON格式輸出 
        }
    }); 
}); 

這樣就生成了一張男女比例分佈圖,請點擊這裏看demo

好了,明天開始放假了,還有餅狀圖、區域圖的例子年後奉上,在這裏我祝你們春節愉快,開心過大年!

聲明:本文爲原創文章,helloweba.com和做者擁有版權,如需轉載,請註明來源於helloweba.com並保留原文連接,不然視爲侵權。

相關文章
相關標籤/搜索