JFreeChart - แผนภูมิ XY

แผนภูมิ XY (กระจาย) ขึ้นอยู่กับชุดข้อมูลหนึ่งชุดซึ่งประกอบด้วยรายการค่า X และ Y แต่ละคู่ค่า (X, Y) คือจุดในระบบพิกัด ที่นี่ค่าหนึ่งจะกำหนดตำแหน่งแนวนอน (X) และอีกค่าหนึ่งกำหนดตำแหน่งแนวตั้ง (Y) บทนี้แสดงให้เห็น - วิธีที่เราสามารถใช้ JFreeChart เพื่อสร้างXY Chart จากชุดข้อมูลธุรกิจที่กำหนด

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

ลองพิจารณาตัวอย่างที่เราต้องการสร้างแผนภูมิ XY สำหรับเบราว์เซอร์หลักทั้งหมด ที่นี่คะแนนประสิทธิภาพที่แตกต่างกันรวบรวมจากบุคคลประเภทต่างๆดังที่แสดงด้านล่าง -

Firefox หมวดหมู่ (X) คะแนน (Y)
1.0 1.0
2.0 4.0
3.0 3.0
Chrome หมวดหมู่ (X) คะแนน (Y)
1.0 4.0
2.0 5.0
3.0 6.0
IE หมวดหมู่ (X) คะแนน (Y)
3.0 4.0
4.0 5.0
5.0 4.0

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

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

import java.awt.Color; 
import java.awt.BasicStroke; 

import org.jfree.chart.ChartPanel; 
import org.jfree.chart.JFreeChart; 
import org.jfree.data.xy.XYDataset; 
import org.jfree.data.xy.XYSeries; 
import org.jfree.ui.ApplicationFrame; 
import org.jfree.ui.RefineryUtilities; 
import org.jfree.chart.plot.XYPlot; 
import org.jfree.chart.ChartFactory; 
import org.jfree.chart.plot.PlotOrientation; 
import org.jfree.data.xy.XYSeriesCollection; 
import org.jfree.chart.renderer.xy.XYLineAndShapeRenderer;

public class XYLineChart_AWT extends ApplicationFrame {

   public XYLineChart_AWT( String applicationTitle, String chartTitle ) {
      super(applicationTitle);
      JFreeChart xylineChart = ChartFactory.createXYLineChart(
         chartTitle ,
         "Category" ,
         "Score" ,
         createDataset() ,
         PlotOrientation.VERTICAL ,
         true , true , false);
         
      ChartPanel chartPanel = new ChartPanel( xylineChart );
      chartPanel.setPreferredSize( new java.awt.Dimension( 560 , 367 ) );
      final XYPlot plot = xylineChart.getXYPlot( );
      
      XYLineAndShapeRenderer renderer = new XYLineAndShapeRenderer( );
      renderer.setSeriesPaint( 0 , Color.RED );
      renderer.setSeriesPaint( 1 , Color.GREEN );
      renderer.setSeriesPaint( 2 , Color.YELLOW );
      renderer.setSeriesStroke( 0 , new BasicStroke( 4.0f ) );
      renderer.setSeriesStroke( 1 , new BasicStroke( 3.0f ) );
      renderer.setSeriesStroke( 2 , new BasicStroke( 2.0f ) );
      plot.setRenderer( renderer ); 
      setContentPane( chartPanel ); 
   }
   
   private XYDataset createDataset( ) {
      final XYSeries firefox = new XYSeries( "Firefox" );          
      firefox.add( 1.0 , 1.0 );          
      firefox.add( 2.0 , 4.0 );          
      firefox.add( 3.0 , 3.0 );          
      
      final XYSeries chrome = new XYSeries( "Chrome" );          
      chrome.add( 1.0 , 4.0 );          
      chrome.add( 2.0 , 5.0 );          
      chrome.add( 3.0 , 6.0 );          
      
      final XYSeries iexplorer = new XYSeries( "InternetExplorer" );          
      iexplorer.add( 3.0 , 4.0 );          
      iexplorer.add( 4.0 , 5.0 );          
      iexplorer.add( 5.0 , 4.0 );          
      
      final XYSeriesCollection dataset = new XYSeriesCollection( );          
      dataset.addSeries( firefox );          
      dataset.addSeries( chrome );          
      dataset.addSeries( iexplorer );
      return dataset;
   }

   public static void main( String[ ] args ) {
      XYLineChart_AWT chart = new XYLineChart_AWT("Browser Usage Statistics",
         "Which Browser are you using?");
      chart.pack( );          
      RefineryUtilities.centerFrameOnScreen( chart );          
      chart.setVisible( true ); 
   }
}

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

$javac XYLineChart_AWT.java  
$java XYLineChart_AWT

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

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

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

import java.io.*;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.data.xy.XYSeries;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.xy.XYSeriesCollection;
import org.jfree.chart.ChartUtilities; 

public class XYLineChart_image {

   public static void main( String[ ] args )throws Exception {
      final XYSeries firefox = new XYSeries( "Firefox" );
      firefox.add( 1.0 , 1.0 );
      firefox.add( 2.0 , 4.0 );
      firefox.add( 3.0 , 3.0 );
      
      final XYSeries chrome = new XYSeries( "Chrome" );
      chrome.add( 1.0 , 4.0 );
      chrome.add( 2.0 , 5.0 );
      chrome.add( 3.0 , 6.0 );
      
      final XYSeries iexplorer = new XYSeries( "InternetExplorer" );
      iexplorer.add( 3.0 , 4.0 );
      iexplorer.add( 4.0 , 5.0 );
      iexplorer.add( 5.0 , 4.0 );
      
      final XYSeriesCollection dataset = new XYSeriesCollection( );
      dataset.addSeries( firefox );
      dataset.addSeries( chrome );
      dataset.addSeries( iexplorer );

      JFreeChart xylineChart = ChartFactory.createXYLineChart(
         "Browser usage statastics", 
         "Category",
         "Score", 
         dataset,
         PlotOrientation.VERTICAL, 
         true, true, false);
      
      int width = 640;   /* Width of the image */
      int height = 480;  /* Height of the image */ 
      File XYChart = new File( "XYLineChart.jpeg" ); 
      ChartUtilities.saveChartAsJPEG( XYChart, xylineChart, width, height);
   }
}

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

$javac XYLineChart_image.java  
$java XYLineChart_image

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