Java JFreeChart Catégorie Étape Graphique horizontal (image à expliquer)



j'ai besoin du type de graphique suivant:
Il devrait s'agir d'un graphique linéaire "gradué" avec des catégories sur l'axe vertical, comme ceci:

voilà comment il shold être

J'ai trouvé cet exemple de graphique d'étape de catégorie, mais l'orientation n'est pas adaptée à mon objectif.

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


Tout ce que j'ai fait jusqu'à présent est le présent, mais comme vous pouvez le voir la ligne rouge à ne pas ajustement à l'orientation du graphique (doit être horizontal):

état actuel

Le code correspondant à ceci:

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

Je ne le fais pas fonctionner. Des idées?

Merci d'avance!

Author: Vertexwahn, 2012-10-11

1 answers

Il semble que vous deviez utiliser un XYLineChart standard avec un XYStepRenderer et un SymbolAxis pour remplacer l'axe de plage par défaut plutôt qu'un CategoryStepRenderer et une orientation de tracé horizontal

Si vous associez les statuts A et B à une valeur numérique, par exemple 1 et 2, vous pouvez créer un graphique comme ceci:

entrez la description de l'image ici

En utilisant cette a 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);

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

Dans cet exemple, le SymbolAxis fournit une étiquette alternative pour chaque valeur de l'axe

 8
Author: GrahamA, 2012-10-11 12:07:48