JFreeChart เป็นโครงการ Java ในเว็บไซต์โอเพ่นซอร์ส SourceForge.net ส่วนใหญ่จะใช้สำหรับแผนภูมิที่หลากหลายรวมถึง: แผนภูมิพายแผนภูมิบาร์ (แผนภูมิแท่งปกติและแผนภูมิแท่งสแต็ก) แผนภูมิเส้นแผนภูมิพื้นที่ชาร์ตการกระจายแผนภูมิผสมแผนภูมิกานท์และแดชบอร์ด
ในการใช้ jfreechart เพื่อวาดรูปภาพคุณต้องใช้แพ็คเกจสองขวด: jfreechart.jar และ jcommon.jar, ดาวน์โหลดที่อยู่
นี่คือตัวอย่างของการวาดแผนภูมิบรรทัด:
แพ็คเกจ yuth.jfree.demo; /*** สร้างแผนภูมิบรรทัดโดยใช้ชุดข้อมูล CategoryDataSet* เมื่อมีข้อมูลจำนวนมากค่าของพิกัดแนวนอนไม่สามารถมองเห็นได้อย่างเต็มที่ใน JPanel และจะแสดงเป็นจุดไข่ปลา * วิธีแก้ปัญหา: * วิธีการ 1. เมื่อบันทึกรายงานเป็นรูปภาพตั้งค่าความกว้างของภาพให้มีขนาดใหญ่พอ (2000 หรือ 3000) เพื่อให้ภาพสามารถแสดงค่าพิกัดแนวนอน * วิธีนี้ปฏิบัติต่ออาการ แต่ไม่ใช่สาเหตุของรากดังนั้นจึงมีวิธีที่สอง* วิธีที่ 2: ตั้งค่าความสามารถในการใช้งานบนแกน x เพื่อเอียง 45 องศา */ นำเข้า java.awt.basicstroke; นำเข้า Java.awt.Color; นำเข้า Java.awt.Dimension; นำเข้า Java.awt.Font; นำเข้า java.awt.geom.ellipse2d; นำเข้า Java.io.File; นำเข้า java.io.ioException; นำเข้า java.net.url; นำเข้า java.text.decimalformat; นำเข้า java.util.random; นำเข้า Javax.swing.imageicon; นำเข้า Javax.swing.jpanel; นำเข้า org.jfree.chart.chartfactory; นำเข้า org.jfree.chart.chartpanel; นำเข้า org.jfree.chart.chartutilities; นำเข้า org.jfree.chart.jfreechart; นำเข้า org.jfree.chart.axis.categoryaxis; นำเข้า org.jfree.chart.axis.categorylabelpositions; นำเข้า org.jfree.chart.axis.numberaxis; นำเข้า org.jfree.chart.labels.StandardCategoryItemLabelGenerator; นำเข้า org.jfree.chart.plot.categoryplot; นำเข้า org.jfree.chart.plot.plotorientation; นำเข้า org.jfree.chart.renderer.category.lineandshaperenderer; นำเข้า org.jfree.chart.title.texttitle; นำเข้า org.jfree.data.category.categoryDataSet; นำเข้า org.jfree.data.category.defaultCategoryDataSet; นำเข้า org.jfree.ui.applicationframe; นำเข้า org.jfree.ui.horizontalalignment; นำเข้า org.jfree.ui.rectangledge; นำเข้า org.jfree.ui.rectangleInsets; นำเข้า org.jfree.ui.refineryutilities; Public Class LinechartDemo1 ขยายแอปพลิเคชัน {ส่วนตัวคงที่สุดท้าย Long SerialVersionuid = -6354350604313079793L; / * synthetic */คลาสคงที่ระดับ $ demo $ linechartdemo1; Public LinechartDemo1 (สตริงสตริง) {super (สตริง); JPanel JPanel = CreateMopanel (); jpanel.setPreferredSize (มิติใหม่ (500, 270)); SetContentPane (JPanel); } /*** วิธีการแยกแยะความแตกต่างของตำนานที่แตกต่างกัน: แยกแยะตามพารามิเตอร์ที่สองของ DefaultCategoryDataset.addValue () นั้นเหมือนกันหรือไม่ * คำสั่งของข้อมูลที่เพิ่มในตำนานเดียวกันมีผลต่อการแสดงขั้นสุดท้าย ลำดับของข้อมูลที่เพิ่มในตำนานที่แตกต่างกันไม่ส่งผลกระทบต่อการแสดงผลสุดท้าย * @return */ Private Static CategoryDataSet CreateDatAset () {DefaultCategoryDataSet defaultCategoryDataSet = ใหม่ defaultCategoryDatAset (); //defaultCategoryDataset.addValue () การวิเคราะห์พารามิเตอร์: (ตัวเลข, ชื่อตำนาน, ค่าพิกัดแนวนอน) /* // เพิ่มวิธีการข้อมูล 1 // Legend 1 DefaultCategoryDataset.addValue (212.0, "First", "1001.0"); DefaultCategoryDataSet.addValue (504.0, "First", "1001.1"); DefaultCategoryDataset.addValue (1520.0, "First", "1001.2"); // Legend 2 DefaultCategoryDataset.addValue (712.0, "Second", "1001.0"); DefaultCategoryDataset.addValue (1204.0, "Second", "1001.1"); DefaultCategoryDataSet.addValue (1820.0, "Second", "1001.2"); /* // //* // เพิ่มวิธีการข้อมูล 2 // การทดลองหมายเลขสุ่มเพื่อสร้างผลการทดสอบแบบสุ่มสุ่ม = ใหม่สุ่ม (12345); // Legend 1, 40 ข้อมูลสำหรับ (int i = 0; i <40; i ++) {defaultCategoryDataset.addValue (random.nextint (100000), "First", String.valueof (1,000+i)); } // Legend 2, 40 ข้อมูลสำหรับ (int i = 0; i <40; i ++) {defaultCategoryDataset.addValue (random.nextint (100000), "Second", String.valueof (1000+I)); } //*/return defaultCategoryDataSet; } ส่วนตัว jfreechart createchart (หมวดหมู่หมวดหมู่หมวดหมู่ DataTaset) {jfreechart jfreechart = chartfactory.createlinechart ("jfreechart test", // ชื่อชาร์ต "X", // spindle label (x-axis) Plotorientation.vertical, // การวางแนวเท็จ, // ไม่ว่าจะรวมคำก็คือตำนานจริง, // ข้อความแจ้งว่าเท็จ); // ว่าจะใช้ URL // เปลี่ยนสีพื้นหลังของแผนภูมิ jfreechart.setBackgroundPaint (color.white); CategoryPlot categoryPlot = (categoryplot) jfreechart.getPlot (); categoryplot.setbackgroundpaint (color.lightgray); categoryplot.setRangeGridLinePaint (color.white); categoryplot.setRangeGridLinesVisible (เท็จ); // แก้ไขแกนช่วง เราเปลี่ยนค่ามาตราส่วนเริ่มต้น (อนุญาตให้แสดง decimals) เพื่อแสดงค่าสเกลจำนวนเต็มเท่านั้น numberAxis numberRaxis = (numberaxis) categoryplot.getRangeAxis (); numberRaxis.SetStandardTickunits (numberaxis.createIntegertickunits ()); // ตั้งค่า lable บนแกน x เพื่อเอียงมัน 45 องศาหมวดหมู่ domainaxis = categoryplot.getdomainaxis (); domainaxis.setCategoryLabelPositions (categorylabelpositions.up_45); // ตั้งค่า lable บนแกน x เพื่อเอียงมัน 45 องศา domainaxis.setLowermargin (0.0); // ตั้งค่าระยะทางจากปลายซ้ายของรูปภาพ domainaxis.setuppermargin (0.0); // ตั้งค่าระยะทางจากปลายด้านขวาของรูปภาพ Nineandshaperenderer NineandShaperenderer = (Neandshaperenderer) หมวดหมู่ PATERORYPLOT .GetRenderer (); Lineandshaperenderer.setShapesvisible (จริง); Lineandshaperenderer.setDrawoutlines (จริง); Nineandshaperenderer.setusefillpaint (จริง); Lineandshaperenderer.setBasefillPaint (color.white); Lineandshaperenderer.setseriesstroke (0, basicstroke ใหม่ (3.0f)); Lineandshaperenderer.setseriesoutlinestroke (0, basicstroke ใหม่ (2.0f)); Lineandshaperenderer.setseriesshape (0, New Ellipse2d.double (-5.0, -5.0, 10.0, 10.0)); Lineandshaperenderer.SetItemMargin (0.4); // ตั้งค่าระยะห่างของแต่ละค่าของ x-axis (ไม่ทำงาน ??) // แสดงค่าข้อมูล decimalformat decimalformat1 = decimalformat ใหม่ ("##. ##"); // รูปแบบของจุดข้อมูลที่แสดงค่าข้อมูล ("setBaseItemlabelGenerator (ใหม่มาตรฐาน เครื่องกำเนิดข้อมูลของรายการข้อมูล LINEANDSHAPERENDERER.SETBASEITEMLABELSVISIBLE (TRUE); // แสดงรายการพื้นฐานการแสดงผล LINEANDSHAPERENDERENEDESTBASESHAPESFILLD (จริง); // แสดงไอคอนขนาดเล็กที่เป็นของแข็ง } สาธารณะคงที่ JPanel CreateMopanel () {JFreeChart JFreeChart = CreateChart (CreateDatAset ()); ลอง {chartutilities.savechartasjpeg (ไฟล์ใหม่ ("D://linechartdemo1.png"), // เส้นทางทางกายภาพเพื่อบันทึกไฟล์รวมถึงเส้นทางและชื่อไฟล์ // 1.0f, // คุณภาพของภาพ, 0.0f ~ 1.0f jfreechart // 768); } catch (ioexception e) {// todo บล็อก catch block ที่สร้างอัตโนมัติ e.printstacktrace (); } // ความสูงของภาพส่งคืน ChartPanel ใหม่ (JFreeChart); } โมฆะคงที่สาธารณะหลัก (สตริง [] สตริง) {linechartDemo1 linechartdemo1 = ใหม่ linechartdemo1 ("Jfreechart - แผนภูมิบรรทัด demo 1"); Linechartdemo1.pack (); RefineryUtilities.CenterFrameOnsCreen (LinechartDemo1); Linechartdemo1.setVisible (จริง); } / * synthetic * / คลาสคลาสคงที่ $ (สตริงสตริง) {คลาส var_class; ลอง {var_class = class.forName (สตริง); } catch (classnotFoundException classnotFoundException) {โยน noclassDeffoundError ใหม่ (classnotFoundException.getMessage ()); } return var_class; -ผลการทำงาน:
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น