jFreeChart: DateAxis вести себя как CategoryAxis.Только отдельные значения даты для печати - PullRequest
1 голос
/ 05 августа 2010

У меня есть диаграмма TimeSeries с набором данных XY, который содержит миллисекунды каждой даты. Теперь я хочу иметь диаграмму, которая отображает каждую дату только один раз на оси, независимо от диапазона дат. Я уже понял, что печатается только дата, а не время (с помощью метода setNumberFormatOverride ()). Что у меня сейчас есть, так это: альтернативный текст http://dl.getdropbox.com/u/1144075/Bildschirmfoto%202010-08-05%20um%2016.51.39.JPG

Что я хочу, это: альтернативный текст http://dl.getdropbox.com/u/1144075/Bildschirmfoto%202010-08-05%20um%2016.54.54.JPG

Это фрагмент моего кода. Кроме того, метод setLabelAngle () не работает?!

JFreeChart chart = ChartFactory.createTimeSeriesChart(...);
XYPlot xyplot = (XYPlot)chart.getPlot();
DateAxis dateaxis = (DateAxis) xyplot.getDomainAxis();
dateaxis.setLabelAngle(Math.PI / 6.0);`
numberaxis.setNumberFormatOverride((DecimalFormat)DecimalFormat.getInstance(Locale.GERMAN));

1 Ответ

2 голосов
/ 06 августа 2010

Вы можете установить TickUnit на любое удобное DateTickUnitType. Я использую DAY в этом примере и MMM для проверки Locale:

axis.setTickUnit(new DateTickUnit(DateTickUnitType.DAY, 1,
    new SimpleDateFormat("dd.MMM.yy", Locale.GERMAN)));

Поскольку вы являетесь постоянным клиентом, я также отвечу на второй вопрос: setLabelAngle() работает отлично, но меняет метку оси в легенде диаграммы. Использование setVerticalTickLabels() является альтернативой для самих галочек:

axis.setVerticalTickLabels(true);
...