У меня проблема с наложенным графиком JFreeChart. Я использую JFreeChart 1.0.13. То, что я пытаюсь сделать, похоже, было легче сделать в более ранних версиях JFreeChart?Помощь с наложением JFreeChart
На графике показана линейная диаграмма и гистограмма. Диапазон данных, построенный по линейной диаграмме для оси Y, находится в диапазоне 0-100, а ось для гистограммы находится в диапазоне 0-5.
Индивидуально, когда я выкладываю каждую диаграмму и рисую ее, они отлично смотрятся. Вот пример:
Гистограмма Line Chart
Но когда я обложите их, гистограмма становится уменьшено выглядеть невероятно бесполезно ... предположительно потому, что масштабы двух наборов данных настолько различны.
Пример:
То, что я действительно хочу, чтобы расколоть ряды данных для двух наборов данных, а также отображать 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 должна быть с правой стороны с надлежащим масштабом, что позволяет отображать график в полном размере.
Любого/все ответы оценены ...
Не является аффилированным лицом http://www.jfree.org/jfreechart/; просто довольный клиент и когда-то участник. – trashgod
Спасибо за толкание в правильном направлении. Добавление: final ValueAxis yAxis = new NumberAxis («Процентное время при температуре»); \t \t plot.setRangeAxis (1, yAxis); plot.mapDatasetToRangeAxis (0, 1); MapDataSetToRange был ключевым ... – Griff