Sto riscontrando un problema con un grafico sovrapposto JFreeChart. Sto usando JFreeChart 1.0.13. Quello che sto cercando di fare sembra che fosse più facile da fare nelle versioni precedenti di JFreeChart?Guida con overlay JFreeChart
Il grafico mostra un grafico a linee e un grafico a barre. L'intervallo di dati tracciato dal grafico a linee per l'asse Y è compreso nell'intervallo 0-100 e l'asse per il grafico a barre è compreso nell'intervallo 0-5.
Individualmente, quando dispongo ogni grafico e lo dipingo, hanno un bell'aspetto. Ecco un esempio:
Bar Chart Grafico a linee
Ma quando li sovrappongo, il grafico a barre viene ridimensionato a guardare incredibilmente inutile ... presumibilmente perché la bilancia dei due insiemi di dati sono così diverse.
Esempio:
Quello che voglio è quello di dividere i dati di serie per le due serie di dati, e visualizzare l'intervallo 0-100 per il grafico linea sull'asse Y mano sinistra e di avere il grafico a barre visualizzato a grandezza intera come nel mio primo esempio qui sotto, ma avere la scala 0-5 visualizzata sul lato dell'asse Y destro del grafico.
Per creare il grafico, sto creando prima il grafico a barre utilizzando un XYSeriesCollection, aggiungendo i dati e creare la trama ...
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);
Poi ho creare il grafico a linee in modo simile e aggiungere il seconda serie per la trama ...
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);
il mio sospetto è che in qualche modo ogni grafico ha bisogno di essere il proprio appezzamento e combinate insieme. Qualcuno può aiutare? Quello che sto andando qui è qualcosa del genere:
Tranne che non voglio che il grafico a barre sia un'immagine di sfondo. L'asse X dovrebbe essere lo stesso e l'asse Y dovrebbe essere sul lato destro con la scala appropriata che consente di mostrare il grafico a grandezza intera.
Qualsiasi/tutte le risposte sono apprezzati ...
Non affiliato con http://www.jfree.org/jfreechart/; solo un cliente soddisfatto e qualche volta contributore. – trashgod
Grazie per la spinta nella giusta direzione. Aggiunta: valore finaleAxis yAxis = new NumberAxis ("Percent Time at Temperature"); \t \t plot.setRangeAxis (1, yAxis); plot.mapDatasetToRangeAxis (0, 1); MapDataSetToRange era la chiave ... – Griff