2012-06-08 6 views
0

У меня есть требование отображать данные временных рядов в виде многослойной гистограммы. Возможно ли это с JFreeChart? Любые указатели были бы действительно полезны.JFreeChart Создание многослойных временных рядов

Данные будут представлять собой список: (TS, X1, X2), где я должен построить график X1 для заданной временной метки (TS) и X2, будет в основном служить меткой для данного значения X1.

Редактировать: Кроме того, для одного и того же TS могут существовать разные значения X1. Идея состоит в том, чтобы обозначить все эти значения X1 как многоуровневые столбцы против одного и того же TS.

Вот несколько из примера того, что я хочу:

chart image http://oi50.tinypic.com/2qlvo5z.jpg.

(так что вместо категории, я буду иметь TS в X-оси)

+0

Можете ли вы опубликовать макет или процитировать [образец/демонстрационный пример] (http://www.jfree.org/jfreechart/samples.html)? – trashgod

+0

Я только что отредактировал мое сообщение, чтобы добавить больше ясности и скриншот чего-то близкого к тому, что я хочу. – Sujay

+0

@Sujay - что вы имеете в виду, желая TS по оси x? Вы хотите пометить столбцы на оси x датами/временами (в этом случае вы можете использовать «CategoryDataSet»), или вы хотите, чтобы расстояние между столбцами по оси X отражалось на таймингах TS (в котором Если вы хотите что-то вроде «TimeAxis»)? – amaidment

ответ

1

Это звучит, как вы хотите BarChart (с осью х, определяемой по времени) с решеткой, меченных с их значениями. Вам не нужно добавлять новую серию данных для ярлыков, но изменять рендеринг сюжета.

Вот простой пример:

public class LabelledBarChartTest { 
    public static void main(String[] args) { 
    JFrame frame = new JFrame(); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

    DefaultCategoryDataset dataset = new DefaultCategoryDataset(); 
    dataset.addValue(10.0, "Series", new Integer(2010)); 
    dataset.addValue(20.0, "Series", new Integer(2011)); 
    dataset.addValue(30.0, "Series", new Integer(2012)); 
    JFreeChart chart = ChartFactory.createBarChart(null,null,null,dataset, 
     PlotOrientation.VERTICAL,true,true,false); 
    CategoryPlot plot = (CategoryPlot) chart.getPlot(); 
    CategoryItemRenderer renderer = plot.getRenderer(); 

    // label the points 
    NumberFormat format = NumberFormat.getNumberInstance(); 
    format.setMaximumFractionDigits(2); 
    CategoryItemLabelGenerator generator = new StandardCategoryItemLabelGenerator(
     StandardXYItemLabelGenerator.DEFAULT_ITEM_LABEL_FORMAT, format, format); 
    renderer.setBaseItemLabelGenerator(generator); 
    renderer.setBaseItemLabelsVisible(true); 

    frame.setContentPane(new ChartPanel(chart)); 
    frame.pack(); 
    frame.setVisible(true); 
    } 
} 

Кредит, где кредит должен - я получил пример маркировки из этого example.

+0

Спасибо @amaidment за образец. Однако это не совсем то, что я хочу. Я только что обновил свой первоначальный пост, возможно, это даст вам лучшее представление о том, что я хочу делать. – Sujay

+0

+1 для [sscce] (http://sscce.org/). – trashgod

Смежные вопросы