Java JFreeChart类别步骤图水平(图像到解释)

我需要以下类型的图表:
它应该是一个“steped”折线图,在垂直轴上有类别,如下所示:

这就是它的方式

我找到了这个类别步骤图的例子,但它的方向不适合我的目的。

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); 

我不懂它。 有任何想法吗?

提前致谢!

看起来您需要使用带有XYStepRendererSymbolAxis的标准XYLineChart来替换默认的Range Axis而不是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为Axis中的每个值提供备用标签