У меня есть двойная двумерная матрица, которая содержит отрицательные и постные значения float, а также NA. Эти значения относятся к данным изображения. Значения лежат в диапазоне от -0,4 до +0,4. Я хочу использовать библиотеку JFreeChart для создания гистограммы и просмотра частоты с шириной ячейки 0,05. Чтобы подготовить матрицу набора данных как HistogramDataset, я сначала преобразовал матрицу в одномерную двойную матрицу (код ниже), а затем использовал метод createHistogram, доступный в классе chartFactory, для рисования гистограммы. Но я не получаю результатов. Я могу просто увидеть вертикальную линию в области chartPanel. Я посмотрел на эти примеры, но они не используют двумерную матрицу, такую как данные в качестве входных данных.Как подготовить набор данных для отображения в виде гистограммы с помощью JFreeChart?
http://www.java2s.com/Code/Java/Chart/JFreeChartXYSeriesDemo3.htm
Image histogram generated by JFreeChart
Второй пример был немного похож, но он не использует 2-D матрицу.
Это код, который я применил для подготовки набора данных и создания гистограммы.
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.statistics.HistogramDataset;
import org.jfree.data.statistics.HistogramType;
import java.awt.*;
public class Histogram {
public JFreeChart createHistogram(double[][] doubleMatrix){
// Generate a one dimensional array of the size w*h of the double matrix
double[] data = new double[doubleMatrix.length * doubleMatrix[0].length];
int count = 0;
for (int i=0; i<doubleMatrix.length; i++) {
for (int j = 0; j < doubleMatrix[i].length; j++) {
data[count] = doubleMatrix[i][j];
count++;
}
}
// int number = data.length;
HistogramDataset dataset = new HistogramDataset();
dataset.setType(HistogramType.FREQUENCY);
dataset.addSeries("Hist",data,50); // Number of bins is 50
String plotTitle = "";
String xAxis = "Frequency";
String yAxis = "Mass Error (Da)";
PlotOrientation orientation = PlotOrientation.VERTICAL;
boolean show = false;
boolean toolTips = false;
boolean urls = false;
JFreeChart chart = ChartFactory.createHistogram(plotTitle, xAxis, yAxis,
dataset, orientation, show, toolTips, urls);
chart.setBackgroundPaint(Color.white);
return chart;
}
}
2-D двойной матрицы я использую, можно найти здесь: http://www.filedropper.com/data_4
Что я получаю на использование приведенного выше кода для этого набора данных является следующей гистограммой (!). Это размер гистограммы, который не вписывается в ChartPanel или JPanel?
Пожалуйста, измените вопрос, чтобы включить [полный пример] (http://stackoverflow.com/help/mcve), который показывает ваш текущий подход к [например] (HTTP: // stackoverflow.com/q/28519355/230513) и [пример] (http://stackoverflow.com/q/29279550/230513). – trashgod
Я добавил свою текущую реализацию кода :) – novicegeek
Вам не нужен 'SimpleHistogramBin'? Что находится в 'doubleMatrix'? Небольшие репрезентативные данные позволят другим попробовать ваш код. – trashgod