ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
## 14.4 组合X-XY图区 ### 14.4.1 概述 组合X-XY图区就是一个图区显示两个或者多个子图区(XYPlot实例),共享一个X轴。每一个子图区维护自己的Y轴。如下图14.3所示. ![](https://box.kancloud.cn/2016-01-23_56a340863ef55.png) 图14.3 组合X-XY图区(参见:CombinedXYPlotDemo5.java) 图区可能水平显示也可能垂直显示(本例子中垂直显示)。 ### 14.4.2 构建图表 CombinedXYPlotDemo5.java实例演示了如何创建该类型的图表。关键的步骤是创建一个实例CombinedDomainXYPlot,并在该实例上添加两个子图区: ``` CombinedDomainXYPlot plot = new CombinedDomainXYPlot(new NumberAxis("Domain")); plot.setGap(10.0); plot.add(subplot1, 1); plot.add(subplot2, 1); plot.setOrientation(PlotOrientation.VERTICAL); return new JFreeChart( "CombinedDomainXYPlot Demo", JFreeChart.DEFAULT_TITLE_FONT, plot, true ); ``` 注意两个图区的码值为什么都是1呢?因为该数值控制着每个图区分配的空间大小。 子图区是XYPlot实例,将自己的X轴设置为null。例如,下面的代码演示了这个特征: ``` XYDataset data1 = createDataset1(); XYItemRenderer renderer1 = new StandardXYItemRenderer(); NumberAxis rangeAxis1 = new NumberAxis("Range 1"); XYPlot subplot1 = new XYPlot(data1, null, rangeAxis1, renderer1); subplot1.setRangeAxisLocation(AxisLocation.BOTTOM OR LEFT); XYTextAnnotation annotation = new XYTextAnnotation("Hello!", 50.0, 10000.0); annotation.setFont(new Font("SansSerif", Font.PLAIN, 9)); annotation.setRotationAngle(Math.PI / 4.0); subplot1.addAnnotation(annotation); // create subplot 2... XYDataset data2 = createDataset2(); XYItemRenderer renderer2 = new StandardXYItemRenderer(); NumberAxis rangeAxis2 = new NumberAxis("Range 2"); rangeAxis2.setAutoRangeIncludesZero(false); XYPlot subplot2 = new XYPlot(data2, null, rangeAxis2, renderer2); subplot2.setRangeAxisLocation(AxisLocation.TOP OR LEFT); ```