เมื่อเร็วๆ นี้ ฉันกำลังออกแบบหลักสูตรการขุดข้อมูล ฉันจำเป็นต้องแสดงผลการวิเคราะห์ข้อมูลแก่ผู้ใช้อย่างสังหรณ์ใจ ซึ่งต้องใช้แผนภูมิสถิติข้อมูล เพื่อให้เข้าใจถึงฟังก์ชันนี้
1.jfreechart-1.0.13.jar
2. jcommon-1.0.16.jar
3. gnujaxp.jar
มาดูการเรนเดอร์ขั้นสุดท้ายกัน:
ส่วนใหญ่เป็น jfreechart-1.0.13.jar แต่ทั้ง 3 แพ็กเกจนี้ต้องเสร็จสมบูรณ์ ฉันได้บีบอัดและอัปโหลดแพ็กเกจ jar ทั้งหมดที่เกี่ยวข้องกับ jfreechart พร้อมกับโปรเจ็กต์ (โค้ด) ของตัวอย่างในบทความนี้แล้ว
ดาวน์โหลดที่อยู่: http://download.csdn.net/detail/pzhtpf/4327700
ต่อไปเราจะนำโปรแกรมนี้ไปใช้ทีละขั้นตอน
1. ในงานเตรียมการเบื้องต้น มีการเพิ่มแพ็คเกจของบุคคลที่สามทั้งสามนี้เข้ากับโปรเจ็กต์ของบทความนี้ ขั้นตอนการเพิ่มนั้นง่ายมาก ฉันเคยเขียนบล็อกมาก่อนเกี่ยวกับวิธีอ่านข้อมูลในตาราง Excel ด้วย Java (นักเรียนที่สนใจสามารถทำได้ ลองดู: http://blog.csdn.net/pzhtpf/article/details/7506135) คุณต้องเพิ่มแพ็คเกจของบุคคลที่สามด้วย กระบวนการเพิ่มจะเหมือนกันทุกประการ ที่นี่เราจะตรวจสอบ:
1. สร้างโปรเจ็กต์ Java และสร้างโฟลเดอร์ lib ใหม่ในโครงการนี้
2. คัดลอกแพ็คเกจ jar สามแพ็คเกจด้านบนไปที่ lib
3. จากนั้นคลิกขวาที่โปรเจ็กต์ Java และเลือก Properties
4. เลือก Java Build Path ในรายการด้านซ้ายและ Libraries ทางด้านขวา
5. คลิกเพิ่ม JAR
6. จากนั้นเลือกสามขวดในโฟลเดอร์ lib ของโปรเจ็กต์นี้แล้วคลิกตกลง
หลังจากสำเร็จ จะมีโฟลเดอร์เพิ่มเติมในโครงการ: Referenced Libraries
2. รหัส Java เพื่อใช้แผนภูมิคอลัมน์:
นำเข้า java.awt.Font; นำเข้า org.jfree.chart.ChartFactory; นำเข้า org.jfree.chart.ChartPanel; นำเข้า org.jfree.chart.JFreeChart; chart.axis.ValueAxis; นำเข้า org.jfree.chart.plot.CategoryPlot; org.jfree.chart.plot.PlotOrientation; นำเข้า org.jfree.data.category.CategoryDataset; import org.jfree.data.category.DefaultCategoryDataset; ChartPanel frame1; ; แผนภูมิ JFreeChart = ChartFactory.createBarChart3D( "ผลไม้", // ชื่อแผนภูมิ "ประเภทผลไม้", // แสดงป้ายกำกับของแกนแค็ตตาล็อก "ปริมาณ", // แสดงป้ายกำกับของชุดข้อมูลแกนตัวเลข, // ชุดข้อมูล PlotOrientation.VERTICAL, // ทิศทางของแผนภูมิ: แนวนอน, แนวตั้งจริง , // ไม่ว่าจะแสดงคำอธิบายแผนภูมิ (ต้องเป็นเท็จสำหรับแผนภูมิแท่งแบบธรรมดา) เท็จ // ไม่ว่าจะสร้างเครื่องมือเท็จ // ไม่ว่าจะสร้างลิงค์ URL); // เริ่ม CategoryPlot จากที่นี่ plot=chart.getCategoryPlot();//รับวัตถุพื้นที่แผนภูมิ CategoryAxis domainAxis=plot.getDomainAxis(); // แนวนอนรายการด้านล่าง domainAxis.setLabelFont(แบบอักษรใหม่ ("黑体",Font.BOLD,14)); โดเมนชื่อด้านล่างแนวนอนAxis.setTickLabelFont(แบบอักษรใหม่("宋体",Font.BOLD,12)); //ชื่อแนวตั้ง ValueAxis rangeAxis=plot.getRangeAxis(); //รับคอลัมน์ rangeAxis.setLabelFont(แบบอักษรใหม่("黑体",Font.BOLD,15)); , Font.BOLD, 15)); chart.getTitle().setFont(new Font("宋体",Font.BOLD,20));//ตั้งค่าแบบอักษรของชื่อ//จบเพียงเท่านี้ แม้ว่าโค้ดจะมากไปสักหน่อย แต่ก็มีจุดประสงค์เดียวเท่านั้น เพื่อแก้ปัญหาตัวอักษรจีนที่อ่านไม่ออก frame1 =new ChartPanel(chart,true); //chartFrame สามารถใช้ได้ที่นี่ ซึ่งสามารถสร้าง Frame อิสระได้โดยตรง } private static CategoryDataset getDataSet() { DefaultCategoryDataset dataset = new DefaultCategoryDataset(); dataset.addValue(100, "ปักกิ่ง", "Apple"); dataset.addValue(100, "เซี่ยงไฮ้", "Apple"); dataset.addValue(100, "กวางโจว", "Apple"); , "ปักกิ่ง", "ลูกแพร์"); dataset.addValue(200, "เซี่ยงไฮ้", "ลูกแพร์"); dataset.addValue(200, "กวางโจว", "ลูกแพร์"); dataset.addValue(300, "ปักกิ่ง", "องุ่น"); dataset.addValue(300, "เซี่ยงไฮ้", "องุ่น"); dataset.addValue(400, "ปักกิ่ง", "Banana"); dataset.addValue(400, "Shanghai", "Banana"); "Banana"); dataset.addValue(500, "ปักกิ่ง", "Litchi"); dataset.addValue(500, "Shanghai", "Litchi"); ส่งคืนชุดข้อมูล; } ChartPanel getChartPanel(){ return frame1; } การเรนเดอร์มีดังนี้:
แต่หลังจากที่เราเปลี่ยนข้อมูลในเมธอด CategoryDataset getDataSet(){} แบบคงที่แล้ว เอฟเฟกต์อื่นจะก่อตัวขึ้น ตัวอย่างเช่น เราเปลี่ยนเป็น:
CategoryDataset แบบคงที่ getDataSet() { ชุดข้อมูล DefaultCategoryDataset = ชุดข้อมูล DefaultCategoryDataset ใหม่ (100, "Apple", "Apple"); dataset.addValue (200, "Pear", "Pear"); , "องุ่น", "องุ่น"); dataset.addValue(400, "กล้วย", "กล้วย"); dataset.addValue(500, "Litchi", "Litchi"); }การเรนเดอร์มีดังนี้:
โค้ด Java สามโค้ดเพื่อใช้แผนภูมิวงกลม:
แพ็คเกจ com.njue.testJFreeChart; นำเข้า java.awt.Font; นำเข้า java.text.DecimalFormat; นำเข้า java.text.NumberFormat; นำเข้า org.jfree.chart.ChartFactory; .ChartPanel; นำเข้า org.jfree.chart.JFreeChart; org.jfree.chart.labels.StandardPieSectionLabelGenerator; import org.jfree.chart.plot.PiePlot; นำเข้า org.jfree.data.general.DefaultPieDataset; ChartPanel frame1; ; แผนภูมิ JFreeChart = ChartFactory.createPieChart3D("Fruit Yield",data,true,false,false); //ตั้งค่าเปอร์เซ็นต์ PiePlot pieplot = (PiePlot) chart.getPlot(); //Get วัตถุ DecimalFormat ส่วนใหญ่ตั้งค่าปัญหาทศนิยม NumberFormat nf = NumberFormat.getNumberInstance();//รับวัตถุ NumberFormat StandardPieSectionLabelGenerator sp1 = StandardPieSectionLabelGenerator ใหม่ ("{0} {2}", nf, df);//รับวัตถุ StandardPieSectionLabelGenerator pieplot.setLabelGenerator(sp1);//ตั้งค่าเปอร์เซ็นต์การแสดงแผนภูมิวงกลม //เนื้อหาที่แสดงเมื่อไม่มีข้อมูล pieplot.setNoDataMessage("ไม่มีข้อมูลที่แสดง"); pieplot.setCircular(false ); pieplot .setLabelGap(0.02D); pieplot.setIgnoreNullValues(true);//ตั้งค่าไม่ให้แสดงค่า null pieplot.setIgnoreZeroValues(true);//ตั้งค่าไม่ให้แสดงค่าลบ frame1=new ChartPanel (chart,true); setFont(แบบอักษรใหม่(" Song Dynasty",Font.BOLD,20));//ตั้งชื่อแบบอักษร PiePlot piePlot= (PiePlot) chart.getPlot();//รับวัตถุพื้นที่แผนภูมิ piePlot.setLabelFont(แบบอักษรใหม่("宋体",Font.BOLD,10));//แก้ไขอักขระที่อ่านไม่ออกchart.getLegend().setItemFont(แบบอักษรใหม่("黑体", Font.BOLD,10)); } DefaultPieDataset getDataSet() { DefaultPieDataset dataset = new DefaultPieDataset(); dataset.setValue("apple",100); dataset.setValue("pear",200); dataset.setValue("องุ่น",300); dataset.setValue("กล้วย",400); " ",500); } ChartPanel สาธารณะ getChartPanel(){ return frame1; } การเรนเดอร์มีดังนี้:
4. รหัส Java เพื่อใช้แผนภูมิเส้น:
แพ็คเกจ com.njue.testJFreeChart; นำเข้า java.awt.Font; นำเข้า java.text.SimpleDateFormat; นำเข้า org.jfree.chart.ChartFactory; นำเข้า org.jfree.chart.Chart; .jfree.chart.axis.DateAxis; นำเข้า org.jfree.chart.axis.ValueAxis; นำเข้า org.jfree.chart.plot.XYPlot; นำเข้า org.jfree.data.time.Month; นำเข้า org.jfree.data.time.TimeSeries; time.TimeSeriesCollection; import org.jfree.data.xy.XYDataset; TimeSeriesChart สาธารณะ { ChartPanel frame1; TimeSeriesChart(){ ) jfreechart.getPlot(); DateAxis dateaxis = (DateAxis) xyplot.getDomainAxis(); dateaxis.setDateFormatOverride(new SimpleDateFormat("MMM-yyyy")); frame1=new ChartPanel(jfreechart,true); dateaxis.setLabelFont(แบบอักษรใหม่("黑体",Font.BOLD,14)); //ชื่อด้านล่างแนวนอน dateaxis.setTickLabelFont(new Font("宋体",Font.BOLD,12)); //ชื่อแนวตั้ง ValueAxis rangeAxis=xyplot.getRangeAxis(); // รับคอลัมน์ rangeAxis.setLabelFont(แบบอักษรใหม่("黑体",Font.BOLD,15)); jfreechart.getLegend().setItemFont(แบบอักษรใหม่("黑体", Font.BOLD, 15)); jfreechart.getTitle().setFont(new Font("宋体",Font.BOLD,20));//Set the title font} private static XYDataset createDataset() { //ชุดข้อมูลนี้ค่อนข้างมาก แต่ก็ เข้าใจได้ไม่ยาก TimeSeries = new TimeSeries("legal & General European Index Trust", org.jfree.data.time.Month.class); timeseries.add(new Month(2, 2001) 181.80000000000001D); timeseries.add (เดือนใหม่ (3, 2001), 167.30000000000001D); 167.59999999999999D); timeseries.add(เดือนใหม่(6, 2001), 158.80000000000001D); timeseries.add(เดือนใหม่(7, 2001), 148.30000000000001D); 153.90000000000001D); timeseries.add(เดือนใหม่(9, 2001), 142.69999999999999D); timeseries.add(เดือนใหม่(10, 2001), 123.2D); 131.80000000000001D); timeseries.add(เดือนใหม่(12, 2001), 139.59999999999999D); timeseries.add(เดือนใหม่(1, 2002), 142.90000000000001D); 138.69999999999999D); timeseries.add(เดือนใหม่(3, 2002), 137.30000000000001D); timeseries.add(เดือนใหม่(4, 2002), 143.90000000000001D); 139.80000000000001D); timeseries.add (เดือนใหม่ (6, 2002), 137D); timeseries.add (เดือนใหม่ (7, 2002), 132.80000000000001D); TimeSeries timeseries1 = new TimeSeries ("legal & General UK Index Trust", org.jfree.data.time.Month.class); timeseries1.add (เดือนใหม่ (2, 2001), 129.5999999999999D); timeseries1.add (เดือนใหม่ (3, 2001), 123.2D); timeseries1.add (เดือนใหม่ (3, 2544), 123.2D) เดือน (4, 2544), 117.2D); timeseries1.add (ใหม่ เดือน(5, 2544), 124.09999999999999D); timeseries1.add(เดือนใหม่(6, 2001), 122.59999999999999D); timeseries1.add(เดือนใหม่(7, 2001), 119.2D); 8 พ.ศ. 2544) 116.5D); timeseries1.add(เดือนใหม่(9, 2001), 112.7D); timeseries1.add(เดือนใหม่(10, 2001), 101.5D); timeseries1.add(เดือนใหม่ (11, 2001), 106.09999999999999D ); timeseries1.add(เดือนใหม่(12, 2544) 110.3D); timeseries1.add(เดือนใหม่ (1, 2545), 111.7D); timeseries1.add (เดือนใหม่ (2, 2545), 111D); 109.59999999999999D); timeseries1.add (ใหม่ เดือน(4, 2545), 113.2D); timeseries1.add(เดือนใหม่(5, 2545), 111.5999999999999D); timeseries1.add(เดือนใหม่(6, 2545), 108.8D); 7 กันยายน 2545) 101.59999999999999D); TimeSeriesCollection timeseriescollection = new TimeSeriescollection.addSeries(timeseries);การเรนเดอร์มีดังนี้:
มาดูวิธีการหลักกัน:
นำเข้า java.awt.GridLayout; นำเข้า javax.swing.JFrame; mainClass คลาสสาธารณะ { public static void main(String args[]){ JFrame frame=new JFrame("Java Data Chart"); ,2,10,10)); frame.add(new BarChart().getChartPanel()); //เพิ่มกราฟแท่ง frame.add(new BarChart1().getChartPanel()); //เพิ่มเอฟเฟกต์อื่นของแผนภูมิคอลัมน์ frame.add(new PieChart().getChartPanel()); //เพิ่มแผนภูมิวงกลม frame.add(timeSeriesChart().getChartPanel ()); //เพิ่มแผนภูมิเส้น frame.setBounds(50, 50, 800, 600); frame.setVisible(true); สรุปห้า
ข้างต้นเป็นตัวอย่างง่ายๆ ที่จะนำไปใช้ นักเรียนที่ต้องการทราบข้อมูลเพิ่มเติมสามารถตรวจสอบข้อมูลได้ด้วยตัวเอง จริงๆ แล้วโค้ดข้างต้นนั้นง่ายต่อการเข้าใจ ตราบใดที่คุณรวมสถานการณ์จริงของคุณเข้าด้วยกัน คุณก็สามารถพัฒนา Application ของคุณเองได้ จะเห็นว่า I สิ่งนี้ถูกนำไปใช้บน Application จริงๆ แล้ว JavaWeb ใช้แผนภูมิทางสถิติเพิ่มเติม คุณยังสามารถเรียนรู้เกี่ยวกับมันได้ด้วยตัวเอง