JFreeChart - XY चार्ट

XY चार्ट (स्कैटर) X और Y मानों की सूची वाली एक डेटा श्रृंखला पर आधारित है। प्रत्येक मूल्य जोड़ी (एक्स, वाई) एक समन्वय प्रणाली में एक बिंदु है। यहाँ, एक मान क्षैतिज (X) स्थिति निर्धारित करता है, और दूसरा ऊर्ध्वाधर (Y) स्थिति निर्धारित करता है। यह अध्याय प्रदर्शित करता है - हम JFreeChart का उपयोग कैसे कर सकते हैंXY Chart व्यवसाय डेटा के दिए गए सेट से।

व्यापार डेटा

एक उदाहरण पर विचार करें जहां हम सभी प्रमुख ब्राउज़रों के लिए XY चार्ट बनाना चाहते हैं। यहां, विभिन्न प्रदर्शन स्कोर विभिन्न श्रेणियों के लोगों से एकत्रित किए गए हैं जैसा कि नीचे दिखाया गया है -

Firefox श्रेणी (एक्स) स्कोर (वाई)
1.0 1.0
2.0 4.0
3.0 3.0
Chrome श्रेणी (एक्स) स्कोर (वाई)
1.0 4.0
2.0 5.0
3.0 6.0
IE श्रेणी (एक्स) स्कोर (वाई)
3.0 4.0
4.0 5.0
5.0 4.0

AWT आधारित अनुप्रयोग

निम्नलिखित दी गई जानकारी से XY चार्ट बनाने के लिए कोड है। यह कोड आपको किसी भी AWT आधारित एप्लिकेशन में XY चार्ट एम्बेड करने में मदद करता है।

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 ); 
   }
}

आइए हम उपरोक्त जावा कोड को अंदर रखते हैं 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);
   }
}

आइए हम उपरोक्त जावा कोड को अंदर रखते हैं XYLineChart_image.java फ़ाइल, और फिर संकलित करें और इसे कमांड से चलाएं जैसे कि -

$javac XYLineChart_image.java  
$java XYLineChart_image

यदि सब कुछ ठीक है, तो यह JPEG छवि फ़ाइल नाम बनाने के लिए संकलित और चलाने के लिए होगा XYLineChart.jpeg अपनी वर्तमान निर्देशिका में।