【问题标题】:Java JFreeChart Category Step Chart horizontal (image to explane)Java JFreeChart 类别步骤图水平(图像到 explane)
【发布时间】:2012-10-11 08:33:14
【问题描述】:


我需要以下类型的图表:
它应该是一个“阶梯式”折线图,纵轴为类别,如下所示:

我找到了这个类别阶梯图示例,但它的方向不适合我的目的。

http://www.jfree.org/jfreechart/api/javadoc/org/jfree/chart/renderer/category/CategoryStepRenderer.html


到目前为止我所做的就是这个,但是正如你所看到的,红线不适合图表的方向(应该是水平的):

这个对应的代码:

   DefaultCategoryDataset ds = new DefaultCategoryDataset(); 

// create dataset

    for (int k = 0; k < ffCount; k++) {
                  StateSignal ss1 = (StateSignal) this.ffDSet.getFframes().get(k).getSignals().get(i);
                  ds.setValue((double) k + 1, ss1.getName(), ss1.getStates().get(0).getStatus());

     }
    CategoryStepRenderer categorysteprenderer = new CategoryStepRenderer(false);
    categorysteprenderer.setBaseToolTipGenerator(new StandardCategoryToolTipGenerator());
    CategoryAxis categoryaxis = new CategoryAxis("Category");
    NumberAxis numberaxis = new NumberAxis("Value");
    CategoryPlot categoryplot = new CategoryPlot(ds, categoryaxis, numberaxis, categorysteprenderer);
    categoryplot.setRangePannable(true);
    categoryplot.setOrientation(PlotOrientation.HORIZONTAL);
    chart = new JFreeChart("test", null, categoryplot, true);

我不让它工作。有什么想法吗?

提前致谢!

【问题讨论】:

  • @Vertexwahn 清理标签时,请修复帖子中的所有内容。

标签: java charts jfreechart categories


【解决方案1】:

您似乎需要使用带有XYStepRendererSymbolAxis 的标准XYLineChart 来替换默认的范围轴而不是CategoryStepRenderer 和水平绘图方向

如果您将状态 A 和 B 与数值 1 和 2 相关联,您可以创建如下图表:

使用XYStepRenderer

  XYStepRenderer renderer = new XYStepRenderer();
  renderer.setBaseShapesVisible(true);
  renderer.setSeriesStroke(0, new BasicStroke(2.0f));
  renderer.setSeriesStroke(1, new BasicStroke(2.0f));
  renderer.setBaseToolTipGenerator(new StandardXYToolTipGenerator());
  renderer.setDefaultEntityRadius(6);
  plot.setRenderer(renderer);

还有一个Symbol Axis

  String[] grade =  new String[3];
  grade[0] = "";
  grade[1] = "Status A";
  grade[2] = "Status B";
  SymbolAxis rangeAxis = new SymbolAxis("", grade);
  rangeAxis.setTickUnit(new NumberTickUnit(1));
  rangeAxis.setRange(0,3);
  plot.setRangeAxis(rangeAxis);

在此示例中,SymbolAxis 为轴中的每个值提供了一个替代标签

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-15
    • 1970-01-01
    • 2011-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多