3
我使用jfreechart來顯示線圖。現在,在X軸上它顯示了圖表上每個(x,y)對的值。結果X軸有巨大的數量的價值重疊。我想顯示幾個值,例如每5個單位或類似的東西之後。如何使用Jfreechart這是可能的。JFreechart:在特定單元后顯示X軸的值
我使用jfreechart來顯示線圖。現在,在X軸上它顯示了圖表上每個(x,y)對的值。結果X軸有巨大的數量的價值重疊。我想顯示幾個值,例如每5個單位或類似的東西之後。如何使用Jfreechart這是可能的。JFreechart:在特定單元后顯示X軸的值
繪製圖表的plot的NumberAxis
之前,其刻度線刷新。結果爲List
,其中包括軸的每個刻度標記的NumberTick
對象。
通過重寫功能NumberAxis.refreshTicks
,您可以控制如何以及是否顯示標記。
例如,在下面的代碼中,我獲得所有刻度標記並遍歷它們以查找TickType.MAJOR
。如果主刻度標記的值不能被5除,則它將被小刻度標記取代。
因此,只有可被5分割的值纔會顯示其文本標籤。
XYPlot plot = (XYPlot) chart.getPlot();
NumberAxis myAxis = new NumberAxis(plot.getDomainAxis().getLabel()) {
@Override
public List refreshTicks(Graphics2D g2, AxisState state,
Rectangle2D dataArea, RectangleEdge edge) {
List allTicks = super.refreshTicks(g2, state, dataArea, edge);
List myTicks = new ArrayList();
for (Object tick : allTicks) {
NumberTick numberTick = (NumberTick) tick;
if (TickType.MAJOR.equals(numberTick.getTickType()) &&
(numberTick.getValue() % 5 != 0)) {
myTicks.add(new NumberTick(TickType.MINOR, numberTick.getValue(), "",
numberTick.getTextAnchor(), numberTick.getRotationAnchor(),
numberTick.getAngle()));
continue;
}
myTicks.add(tick);
}
return myTicks;
}
};
plot.setDomainAxis(myAxis);
請修改您的問題以包含展示問題並顯示您嘗試過的[sscce](http://sscce.org/)。 – trashgod