Baru-baru ini saya sedang merancang kursus penambangan data. Saya perlu menampilkan hasil analisis data kepada pengguna secara intuitif. Ini memerlukan penggunaan grafik statistik data. Untuk mewujudkan fungsi ini, saya memerlukan beberapa paket pihak ketiga:
1.jfreechart-1.0.13.jar
2.jcommon-1.0.16.jar
3.gnujaxp.jar
Mari kita lihat rendering terakhirnya:
Terutama jfreechart-1.0.13.jar, tetapi ketiga paket ini harus lengkap. Saya telah mengompres dan mengunggah semua paket jar yang terkait dengan jfreechart beserta proyek (kode) contoh di artikel ini.
Alamat unduhan: http://download.csdn.net/detail/pzhtpf/4327700
Selanjutnya, kami menerapkan program ini langkah demi langkah.
1. Dalam pekerjaan persiapan awal, ketiga paket pihak ketiga ini ditambahkan ke proyek artikel ini. Proses penambahannya sangat sederhana. Saya telah menulis blog sebelumnya tentang cara membaca data dalam tabel Excel dengan Java (siswa yang berminat bisa Coba lihat: http://blog.csdn.net/pzhtpf/article/details/7506135), Anda juga perlu menambahkan paket pihak ketiga. Proses penambahannya persis sama.
1. Buat proyek java dan buat folder lib baru di proyek ini;
2. Salin ketiga paket jar di atas ke lib
3. Kemudian klik kanan proyek java dan pilih Properties
4. Pilih Java Build Path dalam daftar di sebelah kiri dan Libraries di sebelah kanan.
5. Klik Tambahkan JAR
6. Kemudian pilih tiga toples di folder lib proyek ini dan klik OK
Setelah sukses, akan ada folder tambahan di proyek: Perpustakaan yang Direferensikan
2. Kode Java untuk mengimplementasikan bagan kolom:
impor java.awt.Font; impor org.jfree.chart.ChartFactory; impor org.jfree.chart.ChartPanel; impor org.jfree.chart.JFreeChart; chart.axis.ValueAxis; impor org.jfree.chart.plot.CategoryPlot; org.jfree.chart.plot.PlotOrientation; import org.jfree.data.category.CategoryDataset; import org.jfree.data.category.DefaultCategoryDataset; public class BarChart { ChartPanel frame1; ; bagan JFreeChart = ChartFactory.createBarChart3D( "Buah", // Judul bagan "Jenis Buah", // Menampilkan label sumbu katalog "Kuantitas", // Menampilkan label kumpulan data sumbu numerik, // Kumpulan data PlotOrientation.VERTICAL, // Arah bagan: horizontal, vertikal benar , // Apakah akan menampilkan legenda (harus salah untuk diagram batang sederhana) salah, // Apakah akan menghasilkan alat salah // Apakah akan membuat tautan URL // Mulai CategoryPlot dari sini plot=chart.getCategoryPlot();//Dapatkan objek area bagan CategoryAxis domainAxis=plot.getDomainAxis(); //Daftar terbawah horizontal domainAxis.setLabelFont(new Font("黑体",Font.BOLD,14)); Domain judul bawah horizontalAxis.setTickLabelFont(Font baru("宋体",Font.BOLD,12)); //Judul vertikal ValueAxis rangeAxis=plot.getRangeAxis(); //Dapatkan kolom rangeAxis.setLabelFont(new Font("黑体",Font.BOLD,15)); , Font.BOLD, 15)); chart.getTitle().setFont(baru Font("宋体",Font.BOLD,20));//Setel font judul//Ini berakhir di sini. Meskipun kodenya agak banyak, ini hanya untuk satu tujuan, untuk menyelesaikan masalah karakter Cina yang kacau frame1 =new ChartPanel(chart,true); //chartFrame juga dapat digunakan di sini, yang dapat langsung menghasilkan Frame independen } private static CategoryDataset getDataSet() { DefaultCategoryDataset dataset = new DefaultCategoryDataset(); dataset.addValue(100, "Beijing", "Apple"); dataset.addValue(100, "Shanghai", "Apple"); dataset.addValue(100, "Guangzhou", "Apple"); , "Beijing", "Pear"); dataset.addValue(200, "Shanghai", "Pear"); dataset.addValue(200, "Guangzhou", "Pir"); dataset.addValue(300, "Beijing", "Grape"); dataset.addValue(300, "Shanghai", "Dataset.addValue(300, "Guangzhou", "Grape"); dataset.addValue(400, "Beijing", "Pisang"); dataset.addValue(400, "Shanghai", "Pisang"); dataset.addValue(400, "Guangzhou", "Pisang"); dataset.addValue(500, "Beijing", "Litchi"); dataset.addValue(500, "Shanghai", "dataset.addValue(500, "Guangzhou", "Litchi"); mengembalikan kumpulan data; } ChartPanel publik getChartPanel(){ mengembalikan frame1; Rendernya adalah sebagai berikut:
Namun setelah kita mengubah data pada metode private static CategoryDataset getDataSet(){}, akan terbentuk efek lain. Misalnya, kita mengubahnya menjadi:
private static CategoryDataset getDataSet() { DefaultCategoryDataset dataset = new DefaultCategoryDataset(); dataset.addValue(100, "Apple", "Apple"); , "Anggur", "Anggur"); dataset.addValue(400, "Pisang", "Pisang"); dataset.addValue(500, "Litchi", "Litchi"); mengembalikan kumpulan data;Rendernya adalah sebagai berikut:
Tiga kode java untuk mengimplementasikan diagram lingkaran:
paket com.njue.testJFreeChart; impor java.awt.Font; impor java.text.DecimalFormat; impor java.text.NumberFormat; .ChartPanel; impor org.jfree.chart.JFreeChart; org.jfree.chart.labels.StandardPieSectionLabelGenerator; import org.jfree.chart.plot.PiePlot; import org.jfree.data.general.DefaultPieDataset; public class PieChart { ChartPanel frame1; ; ChartFactory.createPieChart3D("Hasil Buah",data,true,false,false); //Tetapkan persentase PiePlot pieplot = (PiePlot) chart.getPlot(); objek DecimalFormat, terutama mengatur masalah desimal NumberFormat nf = NumberFormat.getNumberInstance();//Dapatkan objek NumberFormat StandardPieSectionLabelGenerator sp1 = new StandardPieSectionLabelGenerator("{0} {2}", nf, df);//Dapatkan objek StandardPieSectionLabelGenerator pieplot.setLabelGenerator(sp1);//Mengatur persentase tampilan diagram lingkaran //Konten yang ditampilkan ketika tidak ada data pieplot.setNoDataMessage("Tidak ada data yang ditampilkan"); ); pieplot.setIgnoreNullValues(true);//Setel agar tidak menampilkan nilai null pieplot.setIgnoreZeroValues(true);//Setel agar tidak menampilkan nilai negatif frame1=new ChartPanel (chart,true); setFont(Font baru(" Song Dynasty",Font.BOLD,20));//Setel font judul PiePlot piePlot= (PiePlot) chart.getPlot();//Dapatkan objek area bagan piePlot.setLabelFont(new Font("宋体",Font.BOLD,10));//Menyelesaikan karakter yang kacau chart.getLegend().setItemFont(new Font("黑体", Font.BOLD,10)); } private static DefaultPieDataset getDataSet() { DefaultPieDataset dataset = new DefaultPieDataset(); dataset.setValue("apel",100); dataset.setValue("pir",200); dataset.setValue("anggur",300); dataset.setValue("pisang",400); " ",500); mengembalikan kumpulan data; } ChartPanel publik getChartPanel(){ mengembalikan frame1; Rendernya adalah sebagai berikut:
4. Kode Java untuk mengimplementasikan diagram garis:
paket com.njue.testJFreeChart; impor java.awt.Font; impor java.text.SimpleDateFormat; impor org.jfree.chart.ChartFactory; .jfree.chart.axis.DateAxis; org.jfree.chart.axis.ValueAxis; impor org.jfree.chart.plot.XYPlot; impor org.jfree.data.time.Bulan; time.TimeSeriesCollection; import org.jfree.data.xy.XYDataset; kelas publik TimeSeriesChart { ChartPanel frame1; TimeSeriesChart(){ ) jfreechart.getPlot(); DateAxis dateaxis = (DateAxis) xyplot.getDomainAxis(); dateaxis.setDateFormatOverride(new SimpleDateFormat("MMM-yyyy")); frame1=new ChartPanel(jfreechart,true); //Judul bawah horizontal dateaxis.setTickLabelFont(new Font("宋体",Font.BOLD,12)); //Judul vertikal ValueAxis rangeAxis=xyplot.getRangeAxis(); //Dapatkan kolom rangeAxis.setLabelFont(Font baru("黑体",Font.BOLD,15)); jfreechart.getLegend().setItemFont(Font baru("黑体", Font.BOLD, 15)); jfreechart.getTitle().setFont(new Font("宋体",Font.BOLD,20));//Setel font judul} private static XYDataset createDataset() { //Kumpulan data ini agak banyak, tetapi memang demikian tidak sulit untuk memahami TimeSeries timeseries = new TimeSeries("legal & general European Index Trust", org.jfree.data.time.Month.class timeseries.add(new Month(2, 2001), 181.80000000000001D); deret waktu.tambahkan(Bulan baru(3, 2001), 167.30000000000001D); 167.59999999999999D); deret waktu.tambahkan(Bulan baru(6, 2001), 158.80000000000001D); deret waktu.tambahkan(Bulan baru(8, 2001), 148.30000000000001D); 153.90000000000001D); deret waktu.tambahkan(Bulan baru(9, 2001), 142.69999999999999D); deret waktu.tambahkan(Bulan baru(10, 2001), 123.2D); 131.80000000000001D); timeseries.add(Bulan baru(12, 2001), 139.59999999999999D); timeseries.add(Bulan baru(2, 2002), 142.90000000000001D); 138.69999999999999D); timeseries.add(Bulan baru(3, 2002), 137.30000000000001D); timeseries.add(Bulan baru(4, 2002), 143.90000000000001D); 139.80000000000001D); timeseries.add(Bulan baru(6, 2002), 137D); timeseries.add(Bulan baru(7, 2002), 132.80000000000001D); TimeSeries timeseries1 = new TimeSeries("legal & umum UK Index Trust", org.jfree.data.time.Month.class); timeseries1.add(Bulan baru(2, 2001), 129.5999999999999D); timeseries1.add(Bulan baru(3, 2001), 123.2D); timeseries1.add(Bulan baru(3, 2001), 123.2D) Bulan(4, 2001), 117.2D); timeseries1.add(baru Bulan(5, 2001), 124,09999999999999D); deret waktu1.tambahkan(Bulan baru(6, 2001), 122,59999999999999D); deret waktu1.tambahkan(Bulan baru(7, 2001), 119,2D); 8, 2001), 116.5D); deret waktu1.tambahkan(Bulan baru(9, 2001), 112,7D); deret waktu1.tambahkan(Bulan baru(10, 2001), 101,5D); ); deret waktu1.tambahkan(Bulan baru(12, 2001), 110.3D); deret waktu1.tambahkan(Bulan baru(1, 2002), 111,7D); deret waktu1.tambah(Bulan baru(2, 2002), 111D); 109.59999999999999D); deret waktu1.tambahkan(baru Bulan(4, 2002), 113.2D); deret waktu1.tambahkan(Bulan baru(5, 2002), 111.59999999999999D); deret waktu1.tambahkan(Bulan baru(6, 2002), 108.8D); 7, 2002), 101.59999999999999D); TimeSeriesCollection timeseriescollection = new TimeSeriesCollection(); timeseriescollection.addSeries(timeseriescollection.addSeries(timeseries1);Rendernya adalah sebagai berikut:
Mari kita lihat metode utamanya:
impor java.awt.GridLayout; impor javax.swing.JFrame; kelas publik mainClass { public static void main(String args[]){ JFrame frame=new JFrame("Bagan Data Java"); ,2,10,10)); frame.add(new BarChart().getChartPanel()); //Tambahkan diagram batang frame.add(new BarChart1().getChartPanel()); //Tambahkan efek lain dari diagram kolom frame.add(new PieChart().getChartPanel()); //Tambahkan diagram lingkaran frame.add(new TimeSeriesChart().getChartPanel()); //Tambahkan diagram garis frame.setBounds(50, 50, 800, 600); Lima ringkasan
Di atas adalah contoh sederhana untuk diterapkan. Siswa yang ingin tahu lebih banyak dapat memeriksa sendiri informasinya. Sebenarnya, kode di atas mudah dipahami dapat melihat bahwa I Ini diimplementasikan pada Aplikasi. Faktanya, lebih banyak grafik statistik yang digunakan di JavaWeb.