折れ線グラフを表示するために jfreechart を使用しています。現在、X 軸にはグラフ上のすべての (x,y) ペアの値が表示されます。その結果、X 軸には膨大な量の値が重なっています。 5単位ごとなど.Jfreechartを使用してこれをどのように可能にしますか.
5148 次
1 に答える
3
チャートのプロットが描画される前に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);
于 2012-06-28T14:13:34.067 に答える