gpt4 book ai didi

java - JFreeChart 2 底部域轴

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:47:51 26 4
gpt4 key购买 nike

我目前在使用 JFreeChart 时遇到问题。我需要 2 个相关的域轴,例如:

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


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

也就是说,Phase 1实际上对应8:00到8:45(第1轴),Phase 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);

作为答案有点晚了,但希望这会为其他人省去我为找到解决方案而付出的艰苦努力!

关于java - JFreeChart 2 底部域轴,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23905903/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com