xyplot pie example createlinechart chart java charts jfreechart category

pie - Java JFreeChart Category Step Chart horizontal(imagen a explicación)



line chart jfreechart example (1)


Necesito el siguiente tipo de gráfico:
Debe ser un gráfico de líneas "escalonado" con categorías en el eje vertical, como esta:

Encontré este ejemplo de un gráfico de pasos de categoría, pero la orientación no es adecuada para mi propósito.

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


Todo lo que he hecho hasta ahora es esto, pero como pueden ver, la línea roja no se ajusta a la orientación del gráfico (debe ser horizontal):

El código correspondiente a esto:

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

No lo hago funcionar. ¿Algunas ideas?

¡Gracias por adelantado!


Parece que necesita usar un XYLineChart estándar con un XYStepRenderer y un SymbolAxis para reemplazar el Range Axis predeterminado en lugar de un CategoryStepRenderer y una orientación horizontal del plot

Si asocia el estado A y B con un valor numérico, por ejemplo 1 y 2, puede crear un gráfico como este:

Usando esto un 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);

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

En este ejemplo, SymbolAxis proporciona una etiqueta alternativa para cada valor en el Eje