У меня проблема с наложенным графиком JFreeChart. Я использую JFreeChart 1.0.13. Кажется, что то, что я пытаюсь сделать, было проще сделать в более ранних версиях JFreeChart?
На графике показаны линейная диаграмма и гистограмма. Диапазон данных, отображаемый линейной диаграммой для оси Y, находится в диапазоне от 0 до 100, а ось для гистограммы находится в диапазоне от 0 до 5.
По отдельности, когда я выкладываю каждую диаграмму и раскрашиваю ее, они выглядят великолепно. Вот пример:
Гистограмма Линейная диаграмма
Но когда я накладываю их, гистограмма уменьшается, чтобы выглядеть невероятно бесполезной ... предположительно потому, что масштабы двух наборов данных сильно различаются.
Пример:
Что я действительно хочу, так это разделить данные серии для двух наборов данных и отобразить диапазон от 0 до 100 для линейной диаграммы на левой оси Y, а также чтобы гистограмма отображалась в полном размере, как в моем первом примере ниже, но шкала от 0 до 5 отображается справа от оси Y графика.
Чтобы создать график, я сначала создаю гистограмму с помощью XYSeriesCollection, добавляю данные и создаю график ...
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);
Затем аналогичным образом создаю линейную диаграмму и добавляю вторую серию к сюжету ...
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);
Я подозреваю, что каким-то образом каждый график должен быть отдельным графиком и объединен вместе. Кто-нибудь может помочь? Я собираюсь сделать что-то вроде этого:
За исключением того, что я не хочу, чтобы гистограмма была фоновым изображением. Ось X должна быть такой же, а ось Y должна находиться с правой стороны с надлежащим масштабом, позволяющим отображать график в полном размере.
Любые / все ответы приветствуются ...