您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關使用jfreechart怎么畫折線圖,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
JFreeChart 是開放源代碼站點SourceForge.net 上的一個 JAVA 項目,它主要用來各種各樣的圖表,這些圖表包括:餅圖、柱狀圖 ( 普通柱狀圖以及堆棧柱狀圖 )、線圖、區域圖、分布圖、混合圖、甘特圖以及一些儀表盤等等。
package yuth.jfree.demo; /** * 使用 categoryDataset 數據集創建折線圖 * 當數據多時,在JPanel中無法完全看到橫坐標的值,顯示為省略號。 * 解決方法: * 方法1、將報表保存為圖片時,設置圖片的寬度足夠大(2000或3000),圖片可以顯示橫坐標值。 * 這種方法治標不治本,所以有了第2種方法 * 方法2、設置X軸上的Lable讓其45度傾斜。 */ import java.awt.BasicStroke; import java.awt.Color; import java.awt.Dimension; import java.awt.Font; import java.awt.geom.Ellipse2D; import java.io.File; import java.io.IOException; import java.net.URL; import java.text.DecimalFormat; import java.util.Random; import javax.swing.ImageIcon; import javax.swing.JPanel; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartPanel; import org.jfree.chart.ChartUtilities; import org.jfree.chart.JFreeChart; import org.jfree.chart.axis.CategoryAxis; import org.jfree.chart.axis.CategoryLabelPositions; import org.jfree.chart.axis.NumberAxis; import org.jfree.chart.labels.StandardCategoryItemLabelGenerator; import org.jfree.chart.plot.CategoryPlot; import org.jfree.chart.plot.PlotOrientation; import org.jfree.chart.renderer.category.LineAndShapeRenderer; import org.jfree.chart.title.TextTitle; import org.jfree.data.category.CategoryDataset; import org.jfree.data.category.DefaultCategoryDataset; import org.jfree.ui.ApplicationFrame; import org.jfree.ui.HorizontalAlignment; import org.jfree.ui.RectangleEdge; import org.jfree.ui.RectangleInsets; import org.jfree.ui.RefineryUtilities; public class LineChartDemo1 extends ApplicationFrame { private static final long serialVersionUID = -6354350604313079793L; /* synthetic */static Class class$demo$LineChartDemo1; public LineChartDemo1(String string) { super(string); JPanel jpanel = createDemoPanel(); jpanel.setPreferredSize(new Dimension(500, 270)); setContentPane(jpanel); } /** * 如何區分不同的圖例:根據DefaultCategoryDataset.addValue()的第二個參數是否相同來區分。 * 同一個圖例的數據的添加順序影響最終的顯示;不同圖例的數據的添加順序不影響最終的顯示。 * @return */ private static CategoryDataset createDataset() { DefaultCategoryDataset defaultcategorydataset = new DefaultCategoryDataset(); //defaultcategorydataset.addValue()的參數解析:(數值,圖例名,橫坐標值) /* //添加數據方法1 //圖例1 defaultcategorydataset.addValue(212.0, "First", "1001.0"); defaultcategorydataset.addValue(504.0, "First", "1001.1"); defaultcategorydataset.addValue(1520.0, "First", "1001.2"); //圖例2 defaultcategorydataset.addValue(712.0, "Second", "1001.0"); defaultcategorydataset.addValue(1204.0, "Second", "1001.1"); defaultcategorydataset.addValue(1820.0, "Second", "1001.2"); /*/ //* //添加數據方法2 //實驗隨機數來生成測試結果 Random random = new Random(12345); //圖例1,40個數據 for(int i=0;i<40;i++){ defaultcategorydataset.addValue(random.nextInt(100000), "First",String.valueOf(1000+i) ); } //圖例2,40個數據 for (int i = 0; i < 40; i++) { defaultcategorydataset.addValue(random.nextInt(100000), "Second", String.valueOf(1000 + i)); } //*/ return defaultcategorydataset; } private static JFreeChart createChart(CategoryDataset categorydataset) { JFreeChart jfreechart = ChartFactory.createLineChart( "jfreechart test",// 圖表標題 "X", // 主軸標簽(x軸) "Y",// 范圍軸標簽(y軸) categorydataset, // 數據集 PlotOrientation.VERTICAL,// 方向 false, // 是否包含圖例 true, // 提示信息是否顯示 false);// 是否使用urls // 改變圖表的背景顏色 jfreechart.setBackgroundPaint(Color.white); CategoryPlot categoryplot = (CategoryPlot) jfreechart.getPlot(); categoryplot.setBackgroundPaint(Color.lightGray); categoryplot.setRangeGridlinePaint(Color.white); categoryplot.setRangeGridlinesVisible(false); //修改范圍軸。 我們將默認刻度值 (允許顯示小數) 改成只顯示整數的刻度值。 NumberAxis numberaxis = (NumberAxis) categoryplot.getRangeAxis(); numberaxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits()); // 設置X軸上的Lable讓其45度傾斜 CategoryAxis domainAxis = categoryplot.getDomainAxis(); domainAxis.setCategoryLabelPositions(CategoryLabelPositions.UP_45); // 設置X軸上的Lable讓其45度傾斜 domainAxis.setLowerMargin(0.0); // 設置距離圖片左端距離 domainAxis.setUpperMargin(0.0); // 設置距離圖片右端距離 LineAndShapeRenderer lineandshaperenderer = (LineAndShapeRenderer) categoryplot .getRenderer(); lineandshaperenderer.setShapesVisible(true); lineandshaperenderer.setDrawOutlines(true); lineandshaperenderer.setUseFillPaint(true); lineandshaperenderer.setBaseFillPaint(Color.white); lineandshaperenderer.setSeriesStroke(0, new BasicStroke(3.0F)); lineandshaperenderer.setSeriesOutlineStroke(0, new BasicStroke(2.0F)); lineandshaperenderer.setSeriesShape(0, new Ellipse2D.Double(-5.0, -5.0, 10.0, 10.0)); lineandshaperenderer.setItemMargin(0.4); //設置x軸每個值的間距(不起作用??) // 顯示數據值 DecimalFormat decimalformat1 = new DecimalFormat("##.##");// 數據點顯示數據值的格式 lineandshaperenderer.setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator( "{2}", decimalformat1));// 設置數據項標簽的生成器 lineandshaperenderer.setBaseItemLabelsVisible(true);// 基本項標簽顯示 lineandshaperenderer.setBaseShapesFilled(true);// 在數據點顯示實心的小圖標 return jfreechart; } public static JPanel createDemoPanel() { JFreeChart jfreechart = createChart(createDataset()); try { ChartUtilities.saveChartAsJPEG( new File("D:/LineChartDemo1.png"), //文件保存物理路徑包括路徑和文件名 // 1.0f, //圖片質量 ,0.0f~1.0f jfreechart, //圖表對象 1024, //圖像寬度 ,這個將決定圖表的橫坐標值是否能完全顯示還是顯示省略號 768); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } //圖像高度 return new ChartPanel(jfreechart); } public static void main(String[] strings) { LineChartDemo1 linechartdemo1 = new LineChartDemo1( "JFreeChart - Line Chart Demo 1"); linechartdemo1.pack(); RefineryUtilities.centerFrameOnScreen(linechartdemo1); linechartdemo1.setVisible(true); } /* synthetic */ static Class class$(String string) { Class var_class; try { var_class = Class.forName(string); } catch (ClassNotFoundException classnotfoundexception) { throw new NoClassDefFoundError(classnotfoundexception.getMessage()); } return var_class; } }
運行結果:
看完上述內容,你們對使用jfreechart怎么畫折線圖有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。