#java #charts #jfreechart #scatter-plot #bigdata
#java #Диаграммы #jfreechart #точечная диаграмма #bigdata
Вопрос:
мне нравится отображать FastScatterPlot в сочетании с линейной диаграммой. Возможно ли каким-либо образом объединить эти диаграммы в комбинированный график? К сожалению, это не похоже на руководство для разработчиков?! По крайней мере, здесь нет примера. Кажется, что это возможно только с набором XYDataset, но вместо FastScatterPlot, который использует двумерный массив для хранения данных, набор XYDataset должен быть заполнен методом add (), например:
DefaultXYDataset dataset = new DefaultXYDataset();
XYSeries dataSeries = new XYSeries("series 1");
dataSeries.add(xValue, yValue); //populate data: 6.8 million entries!
dataset.addSeries(new String(), dataset )
JFreeChart chart = ChartFactory.createScatterPlot("normaler scatterplot test", "X", "Y", dataset, PlotOrientation.HORIZONTAL, true,false, false);
ChartPanel chartPanel = new ChartPanel(chart, true);
getContentPane.add(chartPanel);
что приводит к замедлению и в конечном итоге приводит к переполнению стека (размер кучи уже составляет 512 МБ)! Поэтому я использую FastScatterPlot, который успешно отображает диаграмму. Но, как уже упоминалось, я не знаю, как объединить это, например, с линейной диаграммой. Вот сокращенный код на данный момент:
double[][] data = new double[2][6800000]; //6.8 million entries!!!! static data!
//populate data ...
FastScatterPlot plot = new FastScatterPlot(data, new NumberAxis("X"), new NumberAxis("Y"));
JFreeChart chart = new JFreeChart("Fast Scatter Plot", plot);
ChartPanel chartPanel = new ChartPanel(chart, true);
getContentPane.add(chartPanel);
Комментарии:
1. Вы пытаетесь создать график с комбинированной осью или наложенный график?
2. Вы пробовали использовать
series.add(x, y, false)
метод вместоadd(x, y)
? Замедление может быть вызваноSeriesChangeEvent
который запускается при вызовеadd(x, y)
метода.