1. 程式人生 > >圖標插件--jqplot實現柱狀圖及餅圖,表盤圖演示樣例

圖標插件--jqplot實現柱狀圖及餅圖,表盤圖演示樣例

itl nbsp left 柱狀圖 draw ted ner ann name

柱狀圖

在jqPlot圖表插件使用說明(一)中,我們已經能夠通過jqPlot繪制出比較簡單的線形圖。通過查看源碼。我們也能夠看出,線形圖是jqPlot默認的圖表類型:
[javascript] view plaincopy
  1. /**
  2. * Class: Series
  3. * An individual data series object. Cannot be instantiated directly, but created
  4. * by the Plot oject. Series properties can be set or overriden by the
  5. * options passed in from the user.
  6. */
  7. function Series(options) {
  8. // ...其他設置
  9. // prop: renderer
  10. // A class of a renderer which will draw the series,
  11. // see <$.jqplot.LineRenderer>.
  12. this.renderer = $.jqplot.LineRenderer;
  13. // ...其他設置
  14. }

由上面的源代碼也能夠看出,jqPlot在設置圖表類型時,用到了renderer屬性。這個屬性是為圖表的數據序列設置一個渲染器,渲染器決定怎樣渲染圖表的數據序列。因此,相應於最簡單的線形圖,我們僅僅須要設置相應的數據序列渲染器,就能夠繪制出最簡單的柱狀圖。完整源代碼例如以下:
[html]
view plaincopy
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8" />
  5. <title>最簡單的柱狀圖</title>
  6. <link rel="stylesheet" type="text/css" href="js/jqPlot/1.0.4/jquery.jqplot.min.css"/>
  7. <!--[if lt IE 9]>
  8. <script language="javascript" type="text/javascript" src="js/jqPlot/1.0.4/excanvas.js"></script>
  9. <![endif]-->
  10. <script src="js/jquery.min.js" type="text/javascript" charset="utf-8"></script>
  11. <script src="js/jqPlot/1.0.4/jquery.jqplot.min.js" type="text/javascript"></script>
  12. <!-- jqplot.barRenderer.min.js為$.jqplot.BarRenderer渲染器所在JS文件 -->
  13. <script src="js/jqPlot/1.0.4/plugins/jqplot.barRenderer.min.js" type="text/javascript" ></script>
  14. <script type="text/javascript" charset="utf-8">
  15. $(function(){
  16. $.jqplot(‘chart1‘, [[75, 62, 96, 81, 77, 83, 70]], {
  17. seriesDefaults:{
  18. renderer:$.jqplot.BarRenderer // 設置數據序列渲染器
  19. }
  20. });
  21. });
  22. </script>
  23. </head>
  24. <body>
  25. <div id="chart1" style="width: 800px;height: 400px;">
  26. <!--
  27. 描寫敘述:圖表展示區域
  28. -->
  29. </div>
  30. </body>
  31. </html>

來看一下效果圖:
技術分享

配置柱狀圖

由最簡單的線形圖加上一些設置後,能夠使圖表豐富起來。

相同的。柱狀圖也能夠做一些配置。並且配置的方式與線形圖差點兒沒有區別。

再來看一個演示樣例:
[html] view plaincopy

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8" />
  5. <title>給柱狀圖配置屬性</title>
  6. <link rel="stylesheet" type="text/css" href="js/jqPlot/1.0.4/jquery.jqplot.min.css"/>
  7. <style type="text/css">
  8. .chart-title{
  9. background-color: #999999;
  10. margin-bottom: 10px;
  11. line-height: 30px;
  12. padding-left: 10px;
  13. background-color: #efefef;
  14. border-bottom:1px solid #dddddd;
  15. font-weight: bold;
  16. }
  17. #chart1{
  18. border: 1px solid #dddddd;
  19. }
  20. </style>
  21. <!--[if lt IE 9]>
  22. <script language="javascript" type="text/javascript" src="js/jqPlot/1.0.4/excanvas.js"></script>
  23. <![endif]-->
  24. <script src="http://libs.baidu.com/jquery/1.8.2/jquery.min.js"></script>
  25. <script src="js/jqPlot/1.0.4/jquery.jqplot.min.js" type="text/javascript"></script>
  26. <!-- jqplot.barRenderer.min.js為$.jqplot.BarRenderer渲染器所在JS文件 -->
  27. <script src="js/jqPlot/1.0.4/plugins/jqplot.barRenderer.min.js" type="text/javascript" ></script>
  28. <!-- jqplot.categoryAxisRenderer.min.js用於控制X軸標簽的展示渲染 -->
  29. <script src="js/jqPlot/1.0.4/plugins/jqplot.categoryAxisRenderer.min.js" type="text/javascript" ></script>
  30. <script src="js/jqPlot/1.0.4/plugins/jqplot.highlighter.min.js" type="text/javascript"></script>
  31. <script src="js/jqPlot/1.0.4/plugins/jqplot.pointLabels.min.js" type="text/javascript"></script>
  32. <script type="text/javascript" charset="utf-8">
  33. $(function(){
  34. $.jqplot(‘chart1‘, [[75, 62, 96, 81], [46, 82, 70, 92], [58, 33, 82, 88]], {
  35. title:{ // 標題屬性
  36. text:‘<div class="chart-title">2013年各季度廣告位投放數量對照圖(非真實數據)<div>‘,// 標題文本
  37. show:true, // 是否陰影
  38. fontFamily:‘微軟雅黑‘, // 標題字體
  39. fontSize:14, // 標題字體大小
  40. textAlign:‘left‘, // 標題對齊方式
  41. textColor:‘#515151‘, // 標題顏色(也能夠寫作屬性color)
  42. escapeHtml:false // 是否轉義HTML字符,值為false時,能夠在text屬性中使用HTML代碼
  43. },
  44. seriesDefaults:{
  45. renderer:$.jqplot.BarRenderer,
  46. pointLabels: { // 顯示數據點,依賴於jqplot.pointLabels.min.js文件
  47. show: true
  48. },
  49. showLabel:true
  50. },
  51. series:[ // 詳細數據序列屬性
  52. {
  53. color:‘#FF6666‘,
  54. label:‘CPC‘
  55. },{
  56. color:‘#0066CC‘,
  57. label:‘CPT‘
  58. },{
  59. color:‘#99CC66‘,
  60. label:‘CPM‘
  61. }
  62. ],
  63. axesDefaults:{ // 默認坐標軸屬性
  64. min:0,
  65. tickOptions:{
  66. showMark:false
  67. }
  68. },
  69. axes:{ // 詳細坐標軸屬性
  70. xaxis:{
  71. renderer: $.jqplot.CategoryAxisRenderer,
  72. ticks:[‘第一季度‘, ‘第二季度‘, ‘第三季度‘, ‘第四季度‘],
  73. label:‘季度‘
  74. },
  75. yaxis: {
  76. label: ‘投放數量‘
  77. }
  78. },
  79. legend:{ // 圖例屬性
  80. show:true,
  81. placement: ‘outsideGrid‘ // 設置圖例位於圖表外部
  82. }
  83. });
  84. });
  85. </script>
  86. </head>
  87. <body>
  88. <div id="chart1" style="width: 800px;height: 400px;">
  89. <!--
  90. 描寫敘述:圖表展示區域
  91. -->
  92. </div>
  93. </body>
  94. </html>

效果例如以下:
技術分享

其他圖表類型

圖表一般用於展示統計數據結果。提升數據可讀性。

圖表能夠分為非常多種類型,不同的類型展示的效果不一樣。比方線形圖的數據以一條曲線展示,而柱狀圖的數據則以多個柱形展示。不同類型的圖表用途也有差別。線形圖顯然適合展示數據的變化趨勢,柱狀圖則適合用於對數據進行對照,還有餅狀圖適合觀察不同選項占比,等等。

通過對線形圖和柱狀圖的學習,我們能夠聯想到。不同類型的圖表,在jqPlot中。最大的差異在於渲染器。通過不同的渲染器,我們就能得到不同的展示效果。當然,它們之間也會有一些不同的配置。只是我們都能夠通過文檔或源代碼去查看該怎樣配置一個圖表。


以下是一些比較經常使用的圖表類型及演示樣例代碼。

  • 餅狀圖。餅狀圖相應的數據序列渲染器為$.jqplot.PieRenderer。與線形圖、柱狀圖不同的是,餅狀圖的數據格式是一個三維數組。

[html] view plaincopy
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8" />
  5. <title>餅狀圖</title>
  6. <link rel="stylesheet" type="text/css" href="js/jqPlot/1.0.4/jquery.jqplot.min.css"/>
  7. <style type="text/css">
  8. .chart-title{
  9. background-color: #999999;
  10. margin-bottom: 10px;
  11. line-height: 30px;
  12. padding-left: 10px;
  13. background-color: #efefef;
  14. border-bottom:1px solid #dddddd;
  15. font-weight: bold;
  16. }
  17. #chart1{
  18. border: 1px solid #dddddd;
  19. }
  20. </style>
  21. <!--[if lt IE 9]>
  22. <script language="javascript" type="text/javascript" src="js/jqPlot/1.0.4/excanvas.js"></script>
  23. <![endif]-->
  24. <script src="js/jquery.min.js" type="text/javascript" charset="utf-8"></script>
  25. <script src="js/jqPlot/1.0.4/jquery.jqplot.min.js" type="text/javascript"></script>
  26. <!-- jqplot.pieRenderer.min.js為餅狀圖渲染器所在JS文件 -->
  27. <script src="js/jqPlot/1.0.4/plugins/jqplot.pieRenderer.min.js" type="text/javascript" ></script>
  28. <script src="js/jqPlot/1.0.4/plugins/jqplot.pointLabels.min.js" type="text/javascript"></script>
  29. <script type="text/javascript" charset="utf-8">
  30. $(function(){
  31. $.jqplot(‘chart1‘, [[[‘活多‘, 31], [‘錢少‘, 92], [‘家遠‘, 50], [‘位低‘, 40], [‘權輕‘, 44], [‘任重‘, 66]]], {
  32. title:{ // 標題屬性
  33. text:‘<div class="chart-title">不想上班的理由<div>‘,// 標題文本
  34. show:true, // 是否陰影
  35. fontFamily:‘微軟雅黑‘, // 標題字體
  36. fontSize:14, // 標題字體大小
  37. textAlign:‘left‘, // 標題對齊方式
  38. textColor:‘#515151‘, // 標題顏色(也能夠寫作屬性color)
  39. escapeHtml:false // 是否轉義HTML字符。值為false時。能夠在text屬性中使用HTML代碼
  40. },
  41. seriesDefaults:{
  42. renderer:$.jqplot.PieRenderer,
  43. rendererOptions:{
  44. showDataLabels:true
  45. },
  46. pointLabels: { // 顯示數據點。依賴於jqplot.pointLabels.min.js文件
  47. show: true
  48. }
  49. },
  50. grid:{
  51. drawBorder:false,
  52. shadow:false,
  53. background:‘transparent‘
  54. },
  55. legend:{ // 圖例屬性
  56. show:true,
  57. placement: ‘outsideGrid‘ // 設置圖例位於圖表外部
  58. }
  59. });
  60. });
  61. </script>
  62. </head>
  63. <body>
  64. <div id="chart1" style="width: 400px;height: 400px;">
  65. <!--
  66. 描寫敘述:圖表展示區域
  67. -->
  68. </div>
  69. </body>
  70. </html>
效果圖: 技術分享
  • 環形圖。環形圖與餅狀圖的差別僅僅是在於渲染器的不同。僅僅須要將與餅狀圖渲染器有關的代碼。改動為環形圖相應的渲染器代碼。就能夠將一個餅狀圖轉變為環形圖。環形圖渲染器為$.jqplot.DonutRenderer,以下是完整的環形圖演示樣例代碼:
[html] view plaincopy
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8" />
  5. <title>環形圖</title>
  6. <link rel="stylesheet" type="text/css" href="js/jqPlot/1.0.4/jquery.jqplot.min.css"/>
  7. <style type="text/css">
  8. .chart-title{
  9. background-color: #999999;
  10. margin-bottom: 10px;
  11. line-height: 30px;
  12. padding-left: 10px;
  13. background-color: #efefef;
  14. border-bottom:1px solid #dddddd;
  15. font-weight: bold;
  16. }
  17. #chart1{
  18. border: 1px solid #dddddd;
  19. }
  20. </style>
  21. <!--[if lt IE 9]>
  22. <script language="javascript" type="text/javascript" src="js/jqPlot/1.0.4/excanvas.js"></script>
  23. <![endif]-->
  24. <script src="js/jquery.min.js" type="text/javascript" charset="utf-8"></script>
  25. <script src="js/jqPlot/1.0.4/jquery.jqplot.min.js" type="text/javascript"></script>
  26. <!-- jqplot.donutRenderer.min.js為環形圖渲染器所在JS文件 -->
  27. <script src="js/jqPlot/1.0.4/plugins/jqplot.donutRenderer.min.js" type="text/javascript" ></script>
  28. <script src="js/jqPlot/1.0.4/plugins/jqplot.pointLabels.min.js" type="text/javascript"></script>
  29. <script type="text/javascript" charset="utf-8">
  30. $(function(){
  31. $.jqplot(‘chart1‘, [[[‘活多‘, 31], [‘錢少‘, 92], [‘家遠‘, 50], [‘位低‘, 40], [‘權輕‘, 44], [‘任重‘, 66]]], {
  32. title:{ // 標題屬性
  33. text:‘<div class="chart-title">不想上班的理由<div>‘,// 標題文本
  34. show:true, // 是否陰影
  35. fontFamily:‘微軟雅黑‘, // 標題字體
  36. fontSize:14, // 標題字體大小
  37. textAlign:‘left‘, // 標題對齊方式
  38. textColor:‘#515151‘, // 標題顏色(也能夠寫作屬性color)
  39. escapeHtml:false // 是否轉義HTML字符,值為false時,能夠在text屬性中使用HTML代碼
  40. },
  41. seriesDefaults:{
  42. renderer:$.jqplot.DonutRenderer,
  43. rendererOptions:{
  44. showDataLabels:true
  45. },
  46. pointLabels: { // 顯示數據點,依賴於jqplot.pointLabels.min.js文件
  47. show: true
  48. }
  49. },
  50. grid:{
  51. drawBorder:false,
  52. shadow:false,
  53. background:‘transparent‘
  54. },
  55. legend:{ // 圖例屬性
  56. show:true,
  57. placement: ‘outsideGrid‘ // 設置圖例位於圖表外部
  58. }
  59. });
  60. });
  61. </script>
  62. </head>
  63. <body>
  64. <div id="chart1" style="width: 400px;height: 400px;">
  65. <!--
  66. 描寫敘述:圖表展示區域
  67. -->
  68. </div>
  69. </body>
  70. </html>
效果圖: 技術分享
  • 儀表盤。

    儀表盤的數據序列僅僅有一個數值,用於指示指針所在位置。儀表盤數據序列的渲染器位於jqplot.meterGaugeRenderer.min.js文件裏,為$.jqplot.MeterGaugeRenderer。來看完整的儀表盤圖表代碼:

[html] view plaincopy
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8" />
  5. <title>儀表盤</title>
  6. <link rel="stylesheet" type="text/css" href="js/jqPlot/1.0.4/jquery.jqplot.min.css"/>
  7. <style type="text/css">
  8. .chart-title{
  9. background-color: #999999;
  10. margin-bottom: 10px;
  11. line-height: 30px;
  12. padding-left: 10px;
  13. background-color: #efefef;
  14. border-bottom:1px solid #dddddd;
  15. font-weight: bold;
  16. }
  17. #chart1{
  18. border: 1px solid #dddddd;
  19. }
  20. </style>
  21. <!--[if lt IE 9]>
  22. <script language="javascript" type="text/javascript" src="js/jqPlot/1.0.4/excanvas.js"></script>
  23. <![endif]-->
  24. <script src="js/jquery.min.js" type="text/javascript" charset="utf-8"></script>
  25. <script src="js/jqPlot/1.0.4/jquery.jqplot.min.js" type="text/javascript"></script>
  26. <!-- jqplot.meterGaugeRenderer.min.js為儀表盤渲染器JS文件 -->
  27. <script src="js/jqPlot/1.0.4/plugins/jqplot.meterGaugeRenderer.min.js" type="text/javascript" ></script>
  28. <script src="js/jqPlot/1.0.4/plugins/jqplot.pointLabels.min.js" type="text/javascript"></script>
  29. <script type="text/javascript" charset="utf-8">
  30. $(function(){
  31. $.jqplot(‘chart1‘, [[75]], {
  32. title:{ // 標題屬性
  33. text:‘<div class="chart-title">當前行駛速度<div>‘,// 標題文本
  34. show:true, // 是否陰影
  35. fontFamily:‘微軟雅黑‘, // 標題字體
  36. fontSize:14, // 標題字體大小
  37. textAlign:‘left‘, // 標題對齊方式
  38. textColor:‘#515151‘, // 標題顏色(也能夠寫作屬性color)
  39. escapeHtml:false // 是否轉義HTML字符,值為false時。能夠在text屬性中使用HTML代碼
  40. },
  41. seriesDefaults:{
  42. renderer: $.jqplot.MeterGaugeRenderer,// 儀表盤渲染器
  43. rendererOptions:{
  44. showDataLabels:true,
  45. min:0,
  46. max:120,
  47. labelHeightAdjust:-5,
  48. ticks: [0, 20, 40, 60, 80, 100, 120],
  49. labelPosition:‘bottom‘,
  50. intervals:[40, 80, 120], //取2,3,4這三個刻度值作為分隔線;該值的取定須參照表盤刻度值範圍而定
  51. intervalColors:[‘#66cc66‘, ‘#E7E658‘, ‘#cc6666‘], //分別為上面分隔的域指定表示的顏色
  52. label: ‘時速:公裏/小時‘
  53. }
  54. },
  55. grid:{
  56. drawBorder:false,
  57. shadow:false,
  58. background:‘transparent‘
  59. }
  60. });
  61. });
  62. </script>
  63. </head>
  64. <body>
  65. <div id="chart1" style="width: 400px;height: 400px;">
  66. <!--
  67. 描寫敘述:圖表展示區域
  68. -->
  69. </div>
  70. </body>
  71. </html>
效果圖: 技術分享

圖標插件--jqplot實現柱狀圖及餅圖,表盤圖演示樣例