繁体   English   中英

JFreeChart 2底部域轴

[英]JFreeChart 2 Bottom Domain Axes

我目前正面临使用JFreeChart的问题。 我需要2个相关的域轴,例如:

|
|
|
|
|
|
| _________ | _________ | ____________ (第一轴)
8:00 - 9:00 9:01 - 10:00 10:01 - 11:00


| ______ | ________ |(第一轴下方的第二轴)
第1阶段第2阶段

也就是说,阶段1实际上对应于8:00到8:45(在第1轴上)和阶段2 8:46到9:20。

我可以通过以下代码获得一定程度的成功

            private ChartPanel createChart(CategoryDataset dataset, CategoryDataset phaseDataset){
    JFreeChart chart = ChartFactory.createBarChart(
        "",
        "",
        "Numbers", 
dataset, 
PlotOrientation.Vertical, 
true, 
true, 
false);

CategoryPlot plot = chart.getCategoryPlot();

NumberAxis rangeAxis = (NumberAxis)plot.getRangeAxis();
rangeAxis.setStandTickUnits(NumberAxis.createIntegerTickUnits());

CategoryAxis domainAxis = plot.getDomainAxis();
// some paint settings to be done to domainAxis

CategoryAxis axis2 = new CategoryAxis()

plot.setDomainAxis(1, axis2);
plot.setDataset(1, phaseDataset);
plot.mapDatasetToRangeAxis(1,1);
plot.setDomainAxisLocation(1, AxisLocation.BOTTOM_OR_RIGHT);

ChartPanel panel = new ChartPanel(chart);

return panel;
}

我的第二轴(相位)的刻度标签似乎位于顶部而不是底部。

我怎么能做到这一点? 抱歉蹩脚的图纸,低代表附加图像...

另一个问题 - 我如何设置CategoryAxis的范围? 我希望所有类别都出现在我的图表中,但似乎该类别中没有数据,它将不会出现?

回到设计基础? 我是否正在使用正确的域轴?

@EDIT我注意到我添加的第二个轴无法显示刻度,第二组数据集实际出现在第一个轴上...

我也有这个问题,经过一个漫长而烦人的搜索API后,我设法找到了解决方案。 这是我必须构建的图表中的代码片段,其中3个x轴彼此叠加:

xyPlot.setDomainAxis(0, xAxis1);
xyPlot.setDomainAxis(1, xAxis2);
xyPlot.setDomainAxis(2, xAxis3);
xyPlot.setRangeAxis(0, yAxis);

xyPlot.mapDatasetToDomainAxis(0, 0);
xyPlot.mapDatasetToRangeAxis(0, 0);

xyPlot.setDomainAxisLocation(1, AxisLocation.BOTTOM_OR_LEFT);
xyPlot.setDomainAxisLocation(2, AxisLocation.BOTTOM_OR_LEFT);

作为一个答案,它有点晚了,但希望这将节省其他人为找到修复而付出的艰苦努力!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM