簡體   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