JFreeChart - แผนภูมิเส้น

แผนภูมิเส้นหรือกราฟเส้นแสดงข้อมูลเป็นชุดของจุดข้อมูล (เครื่องหมาย) ที่เชื่อมต่อกันด้วยส่วนของเส้นตรง แผนภูมิเส้นแสดงให้เห็นว่าข้อมูลเปลี่ยนแปลงอย่างไรที่ความถี่เวลาเท่ากัน

บทนี้แสดงให้เห็นถึงวิธีที่เราสามารถใช้ JFreeChart เพื่อสร้าง Line Chart จากชุดข้อมูลธุรกิจที่กำหนด

ข้อมูลธุรกิจ

ตัวอย่างต่อไปนี้วาดแผนภูมิเส้นเพื่อแสดงแนวโน้มของจำนวนโรงเรียนที่เปิดในปีต่างๆเริ่มตั้งแต่ปี 1970

ให้ข้อมูลดังนี้ -

ปี จำนวนโรงเรียน
พ.ศ. 2513 15
พ.ศ. 2523 30
พ.ศ. 2533 60
พ.ศ. 2543 120
2556 240
พ.ศ. 2557 300

แอปพลิเคชันที่ใช้ AWT

ต่อไปนี้เป็นรหัสสำหรับสร้างแผนภูมิเส้นจากข้อมูลด้านบนที่ระบุ รหัสนี้ช่วยให้คุณฝังแผนภูมิเส้นในแอปพลิเคชันที่ใช้ AWT

import org.jfree.chart.ChartPanel;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;

public class LineChart_AWT extends ApplicationFrame {

   public LineChart_AWT( String applicationTitle , String chartTitle ) {
      super(applicationTitle);
      JFreeChart lineChart = ChartFactory.createLineChart(
         chartTitle,
         "Years","Number of Schools",
         createDataset(),
         PlotOrientation.VERTICAL,
         true,true,false);
         
      ChartPanel chartPanel = new ChartPanel( lineChart );
      chartPanel.setPreferredSize( new java.awt.Dimension( 560 , 367 ) );
      setContentPane( chartPanel );
   }

   private DefaultCategoryDataset createDataset( ) {
      DefaultCategoryDataset dataset = new DefaultCategoryDataset( );
      dataset.addValue( 15 , "schools" , "1970" );
      dataset.addValue( 30 , "schools" , "1980" );
      dataset.addValue( 60 , "schools" ,  "1990" );
      dataset.addValue( 120 , "schools" , "2000" );
      dataset.addValue( 240 , "schools" , "2010" );
      dataset.addValue( 300 , "schools" , "2014" );
      return dataset;
   }
   
   public static void main( String[ ] args ) {
      LineChart_AWT chart = new LineChart_AWT(
         "School Vs Years" ,
         "Numer of Schools vs years");

      chart.pack( );
      RefineryUtilities.centerFrameOnScreen( chart );
      chart.setVisible( true );
   }
}

ให้เราเก็บโค้ด Java ด้านบนไว้ LineChart_AWT.java จากนั้นคอมไพล์และเรียกใช้จากคำสั่งที่พร้อมต์เป็น -

$javac LineChart_AWT.java  
$java LineChart_AWT

หากทุกอย่างเรียบร้อยก็จะคอมไพล์และรันเพื่อสร้าง Line Graph ต่อไปนี้ -

การสร้างภาพ JPEG

ให้เราเขียนตัวอย่างด้านบนอีกครั้งเพื่อสร้างภาพ JPEG จากบรรทัดคำสั่ง

import java.io.*;

import org.jfree.chart.JFreeChart; 
import org.jfree.chart.ChartFactory; 
import org.jfree.chart.ChartUtilities; 
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;

public class LineChart {

   public static void main( String[ ] args ) throws Exception {
      DefaultCategoryDataset line_chart_dataset = new DefaultCategoryDataset();
      line_chart_dataset.addValue( 15 , "schools" , "1970" );
      line_chart_dataset.addValue( 30 , "schools" , "1980" );
      line_chart_dataset.addValue( 60 , "schools" , "1990" );
      line_chart_dataset.addValue( 120 , "schools" , "2000" );
      line_chart_dataset.addValue( 240 , "schools" , "2010" ); 
      line_chart_dataset.addValue( 300 , "schools" , "2014" );

      JFreeChart lineChartObject = ChartFactory.createLineChart(
         "Schools Vs Years","Year",
         "Schools Count",
         line_chart_dataset,PlotOrientation.VERTICAL,
         true,true,false);

      int width = 640;    /* Width of the image */
      int height = 480;   /* Height of the image */ 
      File lineChart = new File( "LineChart.jpeg" ); 
      ChartUtilities.saveChartAsJPEG(lineChart ,lineChartObject, width ,height);
   }
}

ให้เราเก็บโค้ด Java ด้านบนไว้ LineChart.java จากนั้นคอมไพล์และเรียกใช้จากคำสั่งที่พร้อมต์เป็น -

$javac LineChart.java  
$java LineChart

หากทุกอย่างเรียบร้อยดีก็จะรวบรวมและดำเนินการเพื่อสร้างไฟล์ภาพ JPEG ที่ชื่อ LineChart.jpeg ในไดเรกทอรีปัจจุบันของคุณ