我有一個雙重的二維矩陣,其中包含負值和正值的浮動值以及NA。這些值屬於圖像數據。值在-0.4到+0.4範圍內我想使用JFreeChart庫創建直方圖並查看寬度爲0.05的頻率。爲了將數據集矩陣準備爲HistogramDataset,我首先將矩陣轉換爲一維雙矩陣(下面的代碼),然後使用chartFactory類中可用的createHistogram方法繪製直方圖。但是,我沒有得到結果。我只能在chartPanel區域看到一條垂直線。我看了這些例子,但他們不使用像數據這樣的2-D矩陣作爲輸入。如何準備數據集以使用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