Je rencontre un problème avec un graphique superposé JFreeChart. J'utilise JFreeChart 1.0.13. Qu'est-ce que j'essaie de faire semble que c'était plus facile à faire dans les versions antérieures de JFreeChart?Aide sur l'incrustation JFreeChart
Le graphique montre un graphique linéaire et un graphique à barres. La plage de données tracée par le graphique linéaire de l'axe Y est comprise entre 0 et 100 et l'axe du graphique à barres est compris entre 0 et 5.
Individuellement, lorsque j'étale chaque graphique et le peins, ils ont fière allure. Voici un exemple:
Bar Chart Graphique ligne
Mais quand je les superposer, le graphique à barres se réduite à regarder incroyablement inutile ... probablement parce que les échelles des deux ensembles de données sont si différents.
Exemple:
Ce que je veux vraiment est de diviser les données en série pour les deux ensembles de données, et afficher la gamme 0-100 pour le graphique en ligne sur l'axe côté Y gauche et d'avoir le diagramme à barres s'affiche en taille réelle comme dans mon premier exemple ci-dessous, mais affiche l'échelle 0-5 sur le côté droit de l'axe Y du graphique.
Pour créer le graphique, je suis d'abord créais le diagramme à barres en utilisant un XYSeriesCollection, en ajoutant les données et la création de l'intrigue ...
XYSeriesCollection histogramDataset= new XYSeriesCollection();
XYSeries xy= new XYSeries("Temp");
xy.add(100,0.0);
xy.add(101,0.3769791404875597);
histogramDataset.addSeries(xy);
...
final NumberAxis xAxis = new NumberAxis("Temperature C");
xAxis.setAutoRangeIncludesZero(false);
final ValueAxis yAxis = new NumberAxis("Percent Time above Temperature");
final XYItemRenderer renderer = new XYBarRenderer();
final XYPlot plot = new XYPlot((XYDataset) histogramDataset, xAxis, yAxis, renderer);
Puis-je créer le graphique en ligne d'une manière similaire et ajouter la deuxième série à l'intrigue ...
final XYSeries xy = new XYSeries("First");
final XYDataset xySeriesData = new XYSeriesCollection();
final XYItemRenderer xyLineRenderer = new XYLineAndShapeRenderer();
xyLineRenderer.setSeriesShape(0, new Line2D.Double(0.0, 0.0, 0.0, 0.0));
xyLineRenderer.setSeriesStroke(0, new BasicStroke(4.5f));
xy.add(100,100.0);
xy.add(101,100.0);
xyseriesData.add(xy);
plot.setDataset(1, xySeriesData);
plot.setRenderer(1, xyLineRenderer);
plot.setDatasetRenderingOrder(DatasetRenderingOrder.FORWARD);
Je soupçonne que en quelque sorte chaque graphique doit être son propre terrain et combinés ensemble. Quelqu'un peut-il aider? Ce que je vais faire ici est quelque chose comme ceci:
Sauf que je ne veux pas que l'histogramme soit une image de fond. L'axe X doit être le même, et l'axe Y doit être sur le côté droit avec l'échelle appropriée qui permet au graphique d'être affiché en taille réelle.
/toutes les réponses sont appréciées ...
Non affilié à http://www.jfree.org/jfreechart/; juste un client satisfait et parfois un contributeur. – trashgod
Merci pour la poussée dans la bonne direction. Ajout: final ValueAxis yAxis = new NumberAxis ("Pourcentage de temps à la température"); \t \t plot.setRangeAxis (1, yAxis); plot.mapDatasetToRangeAxis (0, 1); MapDataSetToRange était la clé ... – Griff