14.2 组合X种类图区

14.2.1 概述

组合主域种类图区就是在一个图区上显示两个或者多个子图区(CategoryPlot实例),共享一个X轴的图区。每个子图区维护自己的Y轴。实例如图14.1所示。

如图14.1 组合X种类图区(共享X轴)

显示图表可以是水平的,也可以是垂直方向的——实例演示的是垂直的图表。

14.2.2 构建图表

提供了一个很好的例子,演示如何创建该图表的类型。关键的步骤是创建CombinedDomainCategoryPlot实例,然后添加两个子图区:

CategoryAxis domainAxis = new CategoryAxis("Category");
CombinedDomainCategoryPlot plot = new CombinedDomainCategoryPlot(domainAxis);
plot.add(subplot1, 2);
plot.add(subplot2, 1);
JFreeChart result = new JFreeChart(
    "Combined Domain Category Plot Demo",
    new Font("SansSerif", Font.BOLD, 12),
    plot,
    true
);

注意,我们subplot1添加码值时是2(方法add()的第二个参数),而subplot1添加的是1呢?因为这控制着分配给各个图区的空间大小。

子图区的CategoryPlot实例对象将它们的X轴设置为null。例如在演示的实例中,代码如下:

CategoryDataset dataset1 = createDataset1();
NumberAxis rangeAxis1 = new NumberAxis("Value");
rangeAxis1.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
LineAndShapeRenderer renderer1 = new LineAndShapeRenderer();
renderer1.setBaseToolTipGenerator(new StandardCategoryToolTipGenerator());
CategoryPlot subplot1 = new CategoryPlot(dataset1, null, rangeAxis1, renderer1);
subplot1.setDomainGridlinesVisible(true);
CategoryDataset dataset2 = createDataset2();
NumberAxis rangeAxis2 = new NumberAxis("Value");
rangeAxis2.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
BarRenderer renderer2 = new BarRenderer();
renderer2.setBaseToolTipGenerator(new StandardCategoryToolTipGenerator());
CategoryPlot subplot2 = new CategoryPlot(dataset2, null, rangeAxis2, renderer2);
subplot2.setDomainGridlinesVisible(true);