2012-01-24 4 views
4

Я хочу разместить две диаграммы временных рядов, разделяющих одну и ту же ось времени, расположенных друг над другом, как с несколькими наборами данных.JFreeChart Комбинированный график XY с временными рядами

chart1 = ChartFactory.createTimeSeriesChart("", "", "", tsc1, true, true, false); 
subplot1 = chartCOT.getXYPlot(); 
... 
chart2 = ChartFactory.createTimeSeriesChart("", "", "", tsc2, true, true, false); 
subplot2 = chartCOT.getXYPlot(); 
... 

, где TSC1 и TSC2 являются TimeSeriesCollection наборы данных, содержащие несколько таймсериях, которые оба имеют один и тот же диапазон дат около 5 лет.

Когда я рисую их индивидуально, нет проблем, то есть ось временного домена отражает даты календаря по желанию.

Как только я объединить два участка с помощью конструкции:

CombinedDomainXYPlot plot = new CombinedDomainXYPlot(); 
plot.setGap(10.0); 
plot.add(subplot1, 2); 
plot.add(subplot2, 1); 
chart[ch] = new JFreeChart("label", null, plot, true); 

графики появляются друг над другом, как хотелось бы, но ось времени не показывает календарные даты больше, но значения, как 0, 250'000'000'000, 500'000'000'000 и т. Д., Когда они представляли миллисекунды. Кроме того, временной диапазон распространяется на левую сторону в течение примерно 30 лет, и данные участка (начиная с 2006 года) начинаются с правой стороны и, соответственно, очень сжаты.

Как сохранить правильное представление оси домена (календарные даты в период с 2006 по 2012 год)?

+0

Пожалуйста, измените вопрос, чтобы исправить идентификаторы и для обеспечения [sscce] (http://sscce.org/) который показывает проблему, которую вы описываете. – trashgod

ответ

6

Я, наконец, нашел решение этой проблемы самостоятельно:

Когда я инициализировать CombinedDomainXYPlot, он выделяет numberAxis по умолчанию, и не использует ось уже определяемые подзаговоры.

Поэтому я должен был сказать plot, что ось области является временным рядом:

ValueAxis domainAxis = new DateAxis(""); 
plot.setDomainAxis(domainAxis);