Ich habe ein Problem mit einem überlagerten JFreeChart-Diagramm. Ich benutze JFreeChart 1.0.13. Was ich versuche, scheint in früheren Versionen von JFreeChart einfacher zu sein?Hilfe mit JFreeChart-Overlay
Die Grafik zeigt ein Liniendiagramm und ein Balkendiagramm. Der vom Liniendiagramm für die Y-Achse gezeichnete Datenbereich liegt im Bereich 0-100 und die Achse für das Balkendiagramm im Bereich 0-5.
Individuell, wenn ich jedes Diagramm auslege und es male, sehen sie gut aus. Hier ein Beispiel:
Balkendiagramm Liniendiagramm
Aber wenn ich sie überlagern, wird das Balkendiagramm abgespeckte zu unglaublich nutzlos aussehen ... vermutlich weil die Skalen der beiden Datensätze so unterschiedlich sind.
Beispiel:
Was will ich wirklich ist, die Reihendaten für die beiden Datensätze zu spalten, und zeigen Sie die 0-100 Bereich für das Liniendiagramm auf der linken Y-Achse und das Balkendiagramm zu haben Vollgröße wie in meinem ersten Beispiel unten, aber die Skala 0-5 wird auf der rechten Seite der Y-Achse des Diagramms angezeigt.
die Grafik zu erstellen, ich bin mit dem Balkendiagramm zunächst die Schaffung eines XYSeriesCollection verwenden, um die Daten hinzufügen und das Grundstück ... und
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);
Dann erstelle ich das Liniendiagramm in ähnlicher Weise und fügen Sie die zweite Reihe auf dem Grundstück ...
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);
Mein Verdacht ist, dass irgendwie jeder graph eine eigene Handlung sein muss und miteinander kombiniert werden. Kann jemand helfen? Was ich hier mache, ist etwas in der Art:
Außer ich möchte nicht das Balkendiagramm ein Hintergrundbild sein. Die X-Achse sollte die gleiche sein, und die Y-Achse sollte auf der rechten Seite mit der richtigen Skalierung liegen, damit der Graph in voller Größe angezeigt werden kann.
Jede/alle Antworten sind willkommen ...
Nicht in Verbindung mit http://www.jfree.org/jfreechart/; nur ein zufriedener Kunde und irgendwann Mitwirkender. – trashgod
Danke für den Push in die richtige Richtung. Hinzufügen: final ValueAxis yAxis = new NumberAxis ("Prozent Zeit bei Temperatur"); \t \t plot.setRangeAxis (1, yAxis); plot.mapDatasetToRangeAxis (0, 1); MapDataSetToRange war der Schlüssel ... – Griff