Hilfe mit JFreeChart-Overlay
Ich habe ein Problem mit einem überlagerten JFreeChart-Diagramm. Ich benutze JFreeChart 1.0.13. Was ich versuche zu tun, scheint in früheren Versionen von JFreeChart einfacher zu sein?
Das Diagramm zeigt ein Liniendiagramm und ein Balkendiagramm. Der vom Liniendiagramm für die Y-Achse dargestellte Datenbereich liegt im Bereich von 0 bis 100, und die Achse für das Balkendiagramm liegt im Bereich von 0 bis 5.
Individuell, wenn ich jedes Diagramm auslege und es male, sehen sie großartig aus. Hier ist ein Beispiel:
Balkendiagram Liniendiagram
Aber wenn ich sie überlagere, wird das Balkendiagramm so verkleinert, dass es unglaublich nutzlos aussieht ... vermutlich, weil die Maßstäbe der beiden Datensätze so unterschiedlich sind.
Beispiel:
Was ich wirklich möchte, ist, die Seriendaten für die beiden Datensätze zu teilen und den Bereich 0-100 für das Liniendiagramm auf der linken Y-Achse anzuzeigen und das Balkendiagramm in voller Größe anzuzeigen, wie in meinem ersten Beispiel unten, aber Lassen Sie die Skala 0-5 auf der rechten Seite der Y-Achse des Diagramms anzeigen.
Um das Diagramm zu erstellen, erstelle ich das Balkendiagramm mit einer XYSeriesCollection, füge die Daten hinzu und erstelle das Diagramm ...
XYSeriesCollection histogramDataset= new XYSeriesCollectio,n();
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 auf ähnliche Weise und füge dem Plot die zweite Reihe hinzu ...
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 jeder Graph irgendwie ein eigener Plot sein und miteinander kombiniert werden muss. Kann jemand helfen? Was ich hier vorhabe, ist ungefähr so:
Außer ich möchte nicht, dass das Balkendiagramm ein Hintergrundbild ist. Die X-Achse sollte gleich sein und die Y-Achse sollte sich auf der rechten Seite mit der richtigen Skalierung befinden, mit der das Diagramm in voller Größe angezeigt werden kann.
Irgendwelche / alle Antworten werden geschätzt ...