1

JPEGの係数ヒストグラムを描きたいです。Chart2Dライブラリの使用方法を知るためにGoogleで何時間も検索していますが、例を含むチュートリアルはありません。描きたい配列はですhist[]。のオブジェクトを作成しましたLBChart2Dが、配列をデータセットとして設定する方法がわかりません。

//coeff[] is the coefficients array
for(int i=0;i<coeff.length;i++)
hist[coeff[i]]++;

LBChart2D lbChart2D = new LBChart2D();

編集:これが私が試していることです:

Object2DProperties object2DProps = new Object2DProperties();
object2DProps.setObjectTitleText ("Title ");
Chart2DProperties chart2DProps = new Chart2DProperties();
chart2DProps.setChartBetweenChartAndLegendGapThicknessModel(5);
LegendProperties legendProps = new LegendProperties();
legendProps .setLegendBorderThicknessModel(5);
legendProps.setLegendBackgroundColor(Color.yellow);
legendProps.setLegendExistence (false);
GraphChart2DProperties graph2DProps = new GraphChart2DProperties();
GraphProperties graphProps = new GraphProperties();
object2DProps .setObjectTitleFontName("test");
Dataset dataset = new Dataset (1, hist.length, 1);
for(int i=0;i<hist.length;i++)
dataset.set (0, i, 0, hist[i]) ; 
LBChart2D lbChart2D = new LBChart2D();
lbChart2D.setObject2DProperties (object2DProps);
lbChart2D.setChart2DProperties (chart2DProps);
lbChart2D.setLegendProperties (legendProps);
lbChart2D.setGraphChart2DProperties (graph2DProps);
lbChart2D.addGraphProperties (graphProps);
lbChart2D.addDataset (dataset);
lbChart2D.setSize(width, height);
BufferedImage lbImage = lbChart2D.getImage();
jLabel15.setIcon(new ImageIcon(lbImage)); 

java.lang.NullPointerExceptionこれで、次の行に例外が生成されます。

BufferedImage lbImage = lbChart2D.getImage();

どうしたの?

4

2 に答える 2

2

いくつかのデモがディストリビューションに含まれています。経由で取得した からデータを収集できます。も参照してください。Chart2D BufferedImageImageIO

補遺: 完全な例がない場合は、validate()デバッグ メッセージを取得するために使用できます。少なくとも、ラベルを付けて呼び出しsetLabelsAxisLabelsTexts()ていることを確認してください。hist.length

//Optional validation:  Prints debug messages if invalid only.
if (!chart2D.validate(false)) {
    chart2D.validate(true);
}
于 2012-04-01T14:05:52.633 に答える
1

私を助けてくれてありがとう@trashgod。心配しないでください。 ライブラリを使用してヒストグラムを描画しました。使用したコードは次のとおりです。

int hist[]=new int[11];
int val[]=new int[11];
for(int ii=0;ii<11;ii++)
    hist[ii]=ii-5;//to get negative indeces I used an array to save them 
for(int kk=0;kk<coeff.length;kk++)
if(coeff[kk]<=5 &coeff[kk]>=-5) val[coeff[kk]+5]++;
DefaultCategoryDataset dataset = new DefaultCategoryDataset();  
for(int ii=0;ii<hist.length;ii++)
dataset.setValue(val[ii], "Coefficient value",""+hist[ii]);
JFreeChart chart = ChartFactory.createBarChart("Original Histogram",
    "Coefficient value", "", dataset,
    PlotOrientation.VERTICAL, false,true, false);      
//chart.setBackgroundPaint(Color.yellow); 
chart.getTitle().setPaint(Color.blue); 
CategoryPlot p = chart.getCategoryPlot(); 
p.setOutlinePaint(Color.BLUE);
p.setRangeGridlinePaint(Color.blue); 
orgim=chart.createBufferedImage(400,400);
Image im1= orgim.getScaledInstance(jLabel12.getWidth(),jLabel12.getHeight(),1);
jLabel12.setIcon(new ImageIcon(im1));
///
于 2012-04-04T13:30:32.903 に答える