JFreeChart创建分层时间序列

时间:2012-06-08 16:11:01

标签: java jfreechart

我要求将时间序列数据显示为分层条形图。 JFreeChart可以吗?任何指针都会非常有用。

数据将是以下列表:(TS,X1,X2),其中我将为给定的时间戳(TS)绘制X1,而X2基本上用作给定值X1的标签。

编辑:此外,对于相同的TS,可能存在不同的X1值。我们的想法是将所有这些X1值表示为针对相同TS的分层条。

这是我想要的一个例子:

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

(因此,不是类别,我将在X轴上有TS)

1 个答案:

答案 0 :(得分:1)

听起来你想要一个BarChart(x轴由时间决定),并用标有值的条形图。您不需要为标签添加新的数据系列,但可以修改绘图的渲染。

这是一个简单的例子:

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获得了标签示例。