Jfreechart-bubble-chart

提供:Dev Guides
移動先:案内検索

JFreeChart-バブルチャート

この章では、JFreeChartを使用して、ビジネスデータの特定のセットから*バブルチャート*を作成する方法を示します。 バブルチャートは、情報を3次元で表示します。 (x、y)座標が交差する場所にバブルがプロットされます。 バブルのサイズは、X軸とY軸の範囲または量と見なされます。

ビジネスデータ

年齢、体重、および作業能力とともに、さまざまな人を考えてみましょう。 中華鍋の容量は、チャートにバブルとしてプロットされる時間数として扱うことができます。

重量

年齢

30

40

50

60

70

80

10

4

作業

20

5

30

10

40

8

50

9

60

6

AWTベースのアプリケーション

上記の情報からバブルチャートを作成するコードを次に示します。 このコードは、AWTベースのアプリケーションにバブルチャートを埋め込むのに役立ちます。

import java.awt.Color;
import java.awt.Dimension;

import javax.swing.JPanel;

import org.jfree.chart.*;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYItemRenderer;
import org.jfree.data.xy.DefaultXYZDataset;
import org.jfree.data.xy.XYZDataset;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;

public class BubbleChart_AWT extends ApplicationFrame {

   public BubbleChart_AWT( String s ) {
      super( s );
      JPanel jpanel = createDemoPanel( );
      jpanel.setPreferredSize(new Dimension( 560 , 370 ) );
      setContentPane( jpanel );
   }

   private static JFreeChart createChart( XYZDataset xyzdataset ) {
      JFreeChart jfreechart = ChartFactory.createBubbleChart(
         "AGE vs WEIGHT vs WORK",
         "Weight",
         "AGE",
         xyzdataset,
         PlotOrientation.HORIZONTAL,
         true, true, false);

      XYPlot xyplot = ( XYPlot )jfreechart.getPlot( );
      xyplot.setForegroundAlpha( 0.65F );
      XYItemRenderer xyitemrenderer = xyplot.getRenderer( );
      xyitemrenderer.setSeriesPaint( 0 , Color.blue );
      NumberAxis numberaxis = ( NumberAxis )xyplot.getDomainAxis( );
      numberaxis.setLowerMargin( 0.2 );
      numberaxis.setUpperMargin( 0.5 );
      NumberAxis numberaxis1 = ( NumberAxis )xyplot.getRangeAxis( );
      numberaxis1.setLowerMargin( 0.8 );
      numberaxis1.setUpperMargin( 0.9 );

      return jfreechart;
   }

   public static XYZDataset createDataset( ) {
      DefaultXYZDataset defaultxyzdataset = new DefaultXYZDataset();
      double ad[ ] = { 30 , 40 , 50 , 60 , 70 , 80 };
      double ad1[ ] = { 10 , 20 , 30 , 40 , 50 , 60 };
      double ad2[ ] = { 4 , 5 , 10 , 8 , 9 , 6 };
      double ad3[][] = { ad , ad1 , ad2 };
      defaultxyzdataset.addSeries( "Series 1" , ad3 );

      return defaultxyzdataset;
   }

   public static JPanel createDemoPanel( ) {
      JFreeChart jfreechart = createChart( createDataset( ) );
      ChartPanel chartpanel = new ChartPanel( jfreechart );

      chartpanel.setDomainZoomable( true );
      chartpanel.setRangeZoomable( true );

      return chartpanel;
   }

   public static void main( String args[ ] ) {
      BubbleChart_AWT bubblechart = new BubbleChart_AWT( "Bubble Chart_frame" );
      bubblechart.pack( );
      RefineryUtilities.centerFrameOnScreen( bubblechart );
      bubblechart.setVisible( true );
   }
}

上記のJavaコードを BubbleChart_AWT.java ファイルに保存し、プロンプトが表示されたコマンドからコンパイルして実行します。

$javac BubbleChart_AWT.java
$java BubbleChart_AW

すべてがうまくいけば、コンパイルして実行し、次のバブルグラフを生成します-

JFreeChartバブルチャート

JPEG画像作成

上記の例を書き直して、コマンドラインからJPEGイメージを生成します。

import java.io.*;

import java.awt.Color;

import org.jfree.chart.*;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYItemRenderer;
import org.jfree.data.xy.DefaultXYZDataset;
import org.jfree.chart.ChartUtilities;

public class BubbleChart_image {

   public static void main( String args[ ] )throws Exception {
      DefaultXYZDataset defaultxyzdataset = new DefaultXYZDataset( );
      double ad[ ] = { 30 , 40 , 50 , 60 , 70 , 80 };
      double ad1[ ] = { 10 , 20 , 30 , 40 , 50 , 60 };
      double ad2[ ] = { 4 , 5 , 10 , 8 , 9 , 6 };
      double ad3[ ][ ] = { ad , ad1 , ad2 };
      defaultxyzdataset.addSeries( "Series 1" , ad3 );

      JFreeChart jfreechart = ChartFactory.createBubbleChart(
         "AGE vs WEIGHT vs WORK",
         "Weight",
         "AGE",
         defaultxyzdataset,
         PlotOrientation.HORIZONTAL,
         true, true, false);

      XYPlot xyplot = ( XYPlot )jfreechart.getPlot( );
      xyplot.setForegroundAlpha( 0.65F );
      XYItemRenderer xyitemrenderer = xyplot.getRenderer( );
      xyitemrenderer.setSeriesPaint( 0 , Color.blue );
      NumberAxis numberaxis = ( NumberAxis )xyplot.getDomainAxis( );
      numberaxis.setLowerMargin( 0.2 );
      numberaxis.setUpperMargin( 0.5 );
      NumberAxis numberaxis1 = ( NumberAxis )xyplot.getRangeAxis( );
      numberaxis1.setLowerMargin( 0.8 );
      numberaxis1.setUpperMargin( 0.9 );

      int width = 560;  /*Width of the image*/
      int height = 370; /*Height of the image*/
      File bubbleChart = new File("BubbleChart.jpeg");
      ChartUtilities.saveChartAsJPEG(bubbleChart,jfreechart,width,height);
   }
}

上記のJavaコードを BubbleChart_image.java ファイルに保存し、プロンプトが表示されたコマンドからコンパイルして実行します。

$javac BubbleChart_image.java
$java BubbleChart_image

すべてが問題なければ、コンパイルして実行し、 BubbleChart.jpeg という名前のJPEGイメージファイルを現在のディレクトリに作成します。