Buat grafik kursus baru dengan JFreeChart

Sebagai developer, saya sering diminta untuk mendemonstrasikan aplikasi baru. Setelah melakukan banyak demo, saya perhatikan bahwa pengguna pada awalnya sering kali lebih tertarik pada tampilan aplikasi daripada apa yang dilakukannya. Saya juga memperhatikan bahwa salah satu cara terbaik untuk membuat kesan pertama yang baik adalah dengan bagan tiga dimensi yang penuh warna.

JFreeChart adalah pustaka pembuatan bagan Java open source yang dapat menghasilkan jenis bagan paling umum, termasuk bagan pai, batang, garis, dan Gantt. Selain itu, JFreeChart API mendukung banyak fitur interaktif, seperti tip alat dan zoom. JFreeChart memberikan pilihan yang sangat baik bagi pengembang yang perlu menambahkan grafik ke aplikasi berbasis Swing atau Web.

Catatan: Contoh berikut didasarkan pada JFreeChart versi 0.9.4. Untuk mengkompilasi dan menjalankan kode yang disertakan dengan kolom ini, Anda harus memiliki dua file jar dari distribusi JFreeChart, jfreechart-0.9.4.jardan jcommon-0.7.1.jar, di classpath Anda.

Grafik dan kumpulan data

Untuk membuat grafik menggunakan JFreeChart, Anda harus membuat Dataset, yang kemudian Anda gunakan untuk membuat file JFreeChart. A Datasetberisi data yang ditampilkan di bagan. JFreeChart menampilkan banyak Datasetobjek berbeda , yang dapat Anda gunakan untuk membuat berbagai jenis bagan. Setelah Anda membuat Dataset, Anda selanjutnya membuat bagan yang sebenarnya. JFreeChart menggunakan sebuah objek yang dinamai dengan tepat JFreeChartuntuk merepresentasikan grafik. Anda membuat JFreeChartobjek dari Datasetobjek dengan ChartFactorykelas. Dalam contoh berikut, kita akan membuat diagram lingkaran, XY, dan batang beserta Datasetobjeknya yang sesuai .

Pie chart

Diagram lingkaran dibuat dari a PieDataset. Contoh berikut membuat PieDatasetmenggunakan DefaultPieDatasetkelas, menambahkan dua nilai melalui setValue()metode, dan kemudian membuat diagram lingkaran dengan metode ChartFactory's createPieChart(). Contoh ini akan membuat diagram lingkaran dengan judul "Contoh Diagram Lingkaran", sebuah legenda, dan dua irisan: JavaWorld dengan 75 persen pie, dan Lainnya dengan 25 persen lainnya:

DefaultPieDataset pieDataset = new DefaultPieDataset (); pieDataset.setValue ("JavaWorld", Integer baru (75)); pieDataset.setValue ("Lainnya", Integer baru (25)); JFreeChart chart = ChartFactory.createPieChart ("Sample Pie Chart", // Judul pieDataset, // Set data benar // Tampilkan legenda);

Bagan XY

Sebuah XYDatasetdapat membuat daerah, jalur, dan grafik langkah XY. Contoh berikut membuat XYDatasetdari serangkaian data yang berisi tiga titik XY. Berikutnya, ChartFactory's createAreaXYChart()metode menciptakan grafik XY daerah. Selain parameter untuk judul, kumpulan data, dan legenda, createAreaXYChart()masukkan label untuk sumbu X dan Y:

Seri XYSeries = XYSeries baru ("Ukuran Rata-rata"); series.add (20.0, 10.0); series.add (40.0, 20.0); series.add (70.0, 50.0); XYDataset xyDataset = XYSeriesCollection baru (seri); JFreeChart chart = ChartFactory.createAreaXYChart ("Contoh Bagan XY", // Judul "Tinggi", // Label sumbu X "Berat", // Label sumbu-Y xyDataset, // Set data benar // Tampilkan legenda);

Grafik batang

A CategoryDatasetdapat membuat banyak bagan berbeda, termasuk bagan batang horizontal dan vertikal. Contoh berikut membuat CatagoryDatasetdengan dua rangkaian data dan dua kategori, lalu membuat diagram batang vertikal 3D dari kumpulan data ini. Contoh ini membuat diagram yang membandingkan pertumbuhan penjualan dalam dua kuartal selama dua tahun:

String [] seriesNames = String baru [] {"2001", "2002"}; String [] categoryNames = String baru [] {"Kuarter Pertama", "Kuarter Kedua"}; Angka [] [] categoryData = bilangan bulat baru [] [] {{Bilangan bulat baru (20), Bilangan bulat baru (35)}, {Bilangan bulat baru (40), Bilangan bulat baru (60)}}; CategoryDataset categoryDataset = New DefaultCategoryDataset (seriesNames, categoryNames, categoryData); JFreeChart chart = ChartFactory.createVerticalBarChart3D ("Contoh Bagan Kategori", // Judul "Kuartal", // Label X-Axis "Penjualan", // Label Y-Axis categoryDataset, // Set data benar // Tampilkan legenda);

Integrasikan JFreeChart

Mengintegrasikan JFreeChart ke dalam aplikasi Swing relatif mudah. Cukup buat a BufferedImagedari bagan dan gunakan gambar sebagai ikon untuk JLabel:

BufferedImage image = chart.createBufferedImage (500.300); JLabel lblChart = JLabel baru (); lblChart.setIcon (ImageIcon baru (image));

JFreeChart juga menyertakan kelas bernama ChartUtilitiesyang menyediakan beberapa metode untuk menyimpan grafik ke file atau menuliskannya ke aliran dalam format JPEG atau PNG. Misalnya, bagian kode berikut dapat mengekspor grafik ke JPEG:

ChartUtilities.saveChartAsJPEG (File baru ("chart.jpg"), bagan, 500, 300); 

Metode di ChartUtilitieskelas dapat digunakan untuk membuat JPEG untuk digunakan dalam Halaman Web statis, atau digunakan dalam aplikasi berbasis JSP (JavaServer Pages) / servlet untuk secara dinamis mengalirkan grafik ke Halaman Web.

Sesuai keinginan Anda, bersiaplah, bagan!

Artikel ini menunjukkan cara membuat beberapa kumpulan data dan bagan umum dengan pustaka JFreeChart. JFreeChart memiliki lebih banyak hal untuk ditawarkan, termasuk banyak jenis bagan dan fitur-fitur canggih seperti bagan gabungan dan peristiwa bagan mouse. Kunjungi beranda JFreeChart untuk versi terbaru perangkat lunak, demo berbasis servlet, tautan ke proyek menggunakan JFreeChart, dan banyak lagi.

Erik Swenson adalah konsultan dan pendiri Solusi Perangkat Lunak Sumber Terbuka. Swenson mengkhususkan diri dalam pengembangan Java menggunakan perangkat lunak dan komponen sumber terbuka. Selain itu, ia mengembangkan proyek open source JasperEdit dan OpenReports.

Pelajari lebih lanjut tentang topik ini

  • Unduh kode yang menyertai artikel ini

    //images.techhive.com/downloads/idge/imported/article/jvw/2002/12/jw-1227-opensourceprofile.zip

  • Beranda JFreeChart

    //www.object-refinery.com/jfreechart

  • jCharts adalah alternatif open source untuk JFreeChart

    //jcharts.sourceforge.net

  • Untuk alat sumber terbuka lainnya, telusuri kolom Profil Sumber Terbuka Erik Swenson

    //www.javaworld.com/columns/jw-opensource-index.shtml

  • Jelajahi bagian Alat Pengembangan dari Indeks Topikal JavaWorld

    //www.javaworld.com/channel_content/jw-tools-index.shtml

  • Ngobrol tentang pengembangan Java di Forum JavaWorld

    //forums.devworld.com/[email protected]@.ee6b802

  • Mendaftarlah untuk buletin email mingguan gratis JavaWorld

    //www.javaworld.com/subscribe

  • Anda akan menemukan banyak artikel terkait TI dari publikasi saudara kita di .net

Artikel ini, "Bagan kursus baru dengan JFreeChart", awalnya diterbitkan oleh JavaWorld.