个性化阅读
专注于IT技术分析

JFreeChart-气泡图

点击下载

本文概述

气泡图以三维方式表示信息。该图表是散点图(XY图表)的变体, 其中数据点被气泡替换, 并且数据的附加维度(z值)以气泡的大小表示。

下图显示了JFreeChart库中合并的Bubble图表的一些演示版本:

气泡图演示1:

JFreeChart气泡图演示1

气泡图演示2:

JFreeChart气泡图演示2

气泡图示例

让我们考虑以下气泡图示例数据。

国家 汽车(百万)X值 公交车(百万)Y值 卡车(百万)Z值
India 40 65 70
美国 30 20 50
China 80 50 80
Japan 11 50 20

以下代码从上述示例数据创建气泡图:

BubbleChartExample.java

import java.text.DecimalFormat;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
import javax.swing.WindowConstants;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.labels.BubbleXYItemLabelGenerator;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYBubbleRenderer;
import org.jfree.data.xy.DefaultXYZDataset;
import org.jfree.data.xy.XYZDataset;

public class BubbleChartExample extends JFrame {

  private static final long serialVersionUID = 1L;

  public BubbleChartExample(String title) {
    super(title);

    // Create dataset
    XYZDataset dataset = createDataset();

    // Create chart
    JFreeChart chart = ChartFactory.createBubbleChart(
        "Country(Cars, Buses, Trucks)", "X-Values", "Y-Values", dataset);

    
    // Set range for X-Axis
    XYPlot plot = chart.getXYPlot();
    NumberAxis domain = (NumberAxis) plot.getDomainAxis();
    domain.setRange(0, 100);

    // Set range for Y-Axis
    NumberAxis range = (NumberAxis) plot.getRangeAxis();
    range.setRange(0, 100);
    
    //Format label
    XYBubbleRenderer renderer=(XYBubbleRenderer)plot.getRenderer();
    BubbleXYItemLabelGenerator generator=new BubbleXYItemLabelGenerator(
        " {0}:({1}, {2}, {3}) ", new DecimalFormat("0"), new DecimalFormat("0"), new DecimalFormat("0"));
    renderer.setBaseItemLabelGenerator(generator);
    renderer.setBaseItemLabelsVisible(true);
    
    // Create Panel
    ChartPanel panel = new ChartPanel(chart);
    setContentPane(panel);
  }
  private XYZDataset createDataset() {
    DefaultXYZDataset dataset = new DefaultXYZDataset();

    dataset.addSeries("INDIA", new double[][] { 
      { 40 }, // X-Value 
      { 65 }, // Y-Value 
      { 70 }  // Z-Value 
     });
    dataset.addSeries("USA", new double[][] { { 30 }, { 20 }, { 50 } });
    dataset.addSeries("CHINA", new double[][] { { 80 }, { 50 }, { 80 } });
    dataset.addSeries("JAPAN", new double[][] { { 11 }, { 50 }, { 20 } });

    return dataset;
  }

  public static void main(String[] args) {
    SwingUtilities.invokeLater(() -> {
      BubbleChartExample example = new BubbleChartExample("Bubble Chart Example");
      example.setSize(800, 400);
      example.setLocationRelativeTo(null);
      example.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
      example.setVisible(true);
    });
  }
}

输出:

JFreeChart气泡图输出
赞(0)
未经允许不得转载:srcmini » JFreeChart-气泡图

评论 抢沙发

评论前必须登录!