1,ichartjs(國產)(http://www.ichartjs.com/) ===============強烈推薦
ichartjs是一款優秀的國產開源插件,做者是王鶴,英文名taylor,畢業於南昌大學軟件工程專業。
ichartjs 是一款基於HTML5的圖形庫。使用純javascript語言, 利用HTML5的canvas標籤繪製各式圖形。 ichartjs致力於爲您的應用提供簡單、直觀、可交互的體驗級圖表組件。是WEB/APP圖表展現方面的解決方案 。若是你正在開發HTML5的應用,ichartjs正好適合您。 ichartjs目前支持餅圖、環形圖、折線圖、面積圖、柱形圖、條形圖。ichartjs是基於Apache License 2.0協議的開源項目。javascript
2,echarts(國產)(http://echarts.baidu.com/)
Echarts是百度前端團隊作的基於html5-canvas的開源圖表繪製組件。
幾個特性以下:
拖拽重計算:拖拽重計算特性(專利)帶來了數據統計圖表從未有過的用戶體驗,容許用戶對統計數據進行有效的提取、整合,甚至在多個圖表間交換數據,賦予了用戶對數據進行挖掘、整合的能力。
大 規模數據模式:如何展示成千上百萬的數據?貌似除了用專業的統計工具(如MATLAB)外別無選擇?不,在擁有衆多交互特性下ECharts依然能夠作到 直角系圖表(折、柱、散點、K線)20萬數據秒級出圖。 值域漫遊:基於座標的圖表(如地圖、散點圖)經過色彩變化表現數值的大小能直觀形象的展現數據分佈。但如何聚焦到我所關心的數值上?ECharts擁有值 域漫遊的功能,讓你能夠輕鬆進行數值篩選html
3,Chart.js(http://www.chartjs.org/)
小巧而輕便的的圖表插件,缺點是支持的圖形類型較少,數據交互功能也很是有限,但做者之後可能會逐漸完善。
10款免費而優秀的圖表JS插件前端
4,HighChart.js(http://www.highcharts.com/)html5
5,Jqplot(http://www.jqplot.com/)
一個至關古老而「堅挺」的圖表插件,支持現代瀏覽器和IE7,IE8(和LoongChart同樣,拋棄IE6了)。
10款免費而優秀的圖表JS插件java
目前來講,能夠在其中選擇一兩種徹底能夠知足咱們的開發需求;數據庫
固然,還有咱們最原始的方法:使用 jfreechart 生成 曲線、柱狀圖、餅狀圖、分佈圖 展現到JSPcanvas
侷限性很大:例如只能展現在jsp頁面,並且使用起來比較雜亂瀏覽器
給個例子:生成柱狀圖echarts
package com.xidian.servlet; import java.awt.Color; import java.awt.Font; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartUtilities; import org.jfree.chart.JFreeChart; import org.jfree.chart.axis.CategoryAxis; import org.jfree.chart.axis.NumberAxis; import org.jfree.chart.plot.CategoryPlot; import org.jfree.chart.plot.PlotOrientation; import org.jfree.chart.renderer.category.BarRenderer; import org.jfree.chart.title.TextTitle; import org.jfree.data.category.DefaultCategoryDataset; /** * 生產柱狀圖 * @說明 * @author cuisuqiang * @version 1.0 * @since */ @SuppressWarnings("serial") public class PillarServlet extends HttpServlet { @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); // 使用普通數據集 DefaultCategoryDataset chartDate = new DefaultCategoryDataset(); // 增長測試數據,第一個參數是訪問量,最後一個是時間,中間是顯示用不考慮 chartDate.addValue(55, "訪問量", "2010-01"); chartDate.addValue(65, "訪問量", "2010-02"); chartDate.addValue(59, "訪問量", "2010-03"); chartDate.addValue(156, "訪問量", "2010-04"); chartDate.addValue(452, "訪問量", "2010-05"); chartDate.addValue(359, "訪問量", "2010-06"); try { // 從數據庫中得到數據集 DefaultCategoryDataset data = chartDate; // 使用ChartFactory建立3D柱狀圖,不想使用3D,直接使用createBarChart JFreeChart chart = ChartFactory.createBarChart3D( "網站月訪問量統計", // 圖表標題 "時間", // 目錄軸的顯示標籤 "訪問量", // 數值軸的顯示標籤 data, // 數據集 PlotOrientation.VERTICAL, // 圖表方向,此處爲垂直方向 // PlotOrientation.HORIZONTAL, //圖表方向,此處爲水平方向 true, // 是否顯示圖例 true, // 是否生成工具 false // 是否生成URL連接 ); // 設置整個圖片的背景色 chart.setBackgroundPaint(Color.PINK); // 設置圖片有邊框 chart.setBorderVisible(true); Font kfont = new Font("宋體", Font.PLAIN, 12); // 底部 Font titleFont = new Font("宋體", Font.BOLD, 25); // 圖片標題 // 圖片標題 chart.setTitle(new TextTitle(chart.getTitle().getText(), titleFont)); // 底部 chart.getLegend().setItemFont(kfont); // 獲得座標設置字體解決亂碼 CategoryPlot categoryplot = (CategoryPlot) chart.getPlot(); categoryplot.setDomainGridlinesVisible(true); categoryplot.setRangeCrosshairVisible(true); categoryplot.setRangeCrosshairPaint(Color.blue); NumberAxis numberaxis = (NumberAxis) categoryplot.getRangeAxis(); numberaxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits()); BarRenderer barrenderer = (BarRenderer) categoryplot.getRenderer(); barrenderer.setBaseItemLabelFont(new Font("宋體", Font.PLAIN, 12)); barrenderer.setSeriesItemLabelFont(1, new Font("宋體", Font.PLAIN, 12)); CategoryAxis domainAxis = categoryplot.getDomainAxis(); /*------設置X軸座標上的文字-----------*/ domainAxis.setTickLabelFont(new Font("sans-serif", Font.PLAIN, 11)); /*------設置X軸的標題文字------------*/ domainAxis.setLabelFont(new Font("宋體", Font.PLAIN, 12)); /*------設置Y軸座標上的文字-----------*/ numberaxis.setTickLabelFont(new Font("sans-serif", Font.PLAIN, 12)); /*------設置Y軸的標題文字------------*/ numberaxis.setLabelFont(new Font("宋體", Font.PLAIN, 12)); /*------這句代碼解決了底部漢字亂碼的問題-----------*/ chart.getLegend().setItemFont(new Font("宋體", Font.PLAIN, 12)); // 生成圖片並輸出 ChartUtilities.writeChartAsJPEG(response.getOutputStream(), 1.0f, chart, 500, 300, null); } catch (Exception e) { e.printStackTrace(); } } }
由代碼來看,遠沒有使用js插件來的方便dom