У меня проблема с наложенным графиком 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 должна быть с правой стороны с правильным масштабом, который позволяет отображать график в полном размере.
Любые / все ответы приветствуются ...