2011-12-09 14 views
3

現在、JFreeChartを使用して2Dグラフで3Dデータを表現しようとしています。カラーマップを使用して2Dグラフに3Dデータを表現するJFreeChart

本質的に、私はdata[i][j]と呼ばれる2次元配列を持っています。 ijは、プロットしたいところの座標をyxと表します。 data[i][j]の値は周波数値を表しています。この値はグラフで色として表したいものです。

私はと呼ばれるものをこのような何か全くわからないんだけど、それはこのようなものになります。しかし、私は問題を抱えています、今

enter image description here

私はXYBlockRendererを使用してこれを実行しようとしているがデータセットを定義します。私はDefaultXYZDatasetを使用しようとしていますが、ここでデータを定義する方法についても本当に混乱しています。

誰かがDefaultXYZDatasetを使用してそのようなタスクを実行する方法を説明できますか?

DefaultXYZDataset dataset = new DefaultXYZDataset(); 

Concentration.dataoutHeight = Concentration.dataout[0].length; 

System.out.println(Concentration.dataoutHeight); 
System.out.println(ImageProcessor.MAXCBVINT); 
double[][] data = new double[3][ImageProcessor.MAXCBVINT]; 


for (int i = 0; i < Concentration.dataoutHeight; i++) { 
    for (int j = 0; j < ImageProcessor.MAXCBVINT; j++) { 
     data[0][j] = j;//x value 
     data[1][j] = i;//y value 
     data[2][j] = Concentration.dataout[j][i][0];//Colour 
    } 
    dataset.addSeries(i, data); 

} 
NumberAxis xAxis = new NumberAxis("Intensity"); 
xAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits()); 
xAxis.setLowerMargin(0.0); 
xAxis.setUpperMargin(0.0); 
NumberAxis yAxis = new NumberAxis("Distance to Closest Blood Vessel (um)"); 
yAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits()); 
yAxis.setLowerMargin(0.0); 
yAxis.setUpperMargin(0.0); 
XYBlockRenderer renderer = new XYBlockRenderer(); 
PaintScale scale = new GrayPaintScale(0, 10000.0); 
renderer.setPaintScale(scale); 
renderer.setBlockHeight(1); 
renderer.setBlockWidth(1); 
XYPlot plot = new XYPlot(dataset, xAxis, yAxis, renderer); 
plot.setBackgroundPaint(Color.lightGray); 
plot.setDomainGridlinesVisible(false); 
plot.setRangeGridlinePaint(Color.white); 
JFreeChart chart = new JFreeChart("Surface Plot", plot); 
chart.removeLegend(); 
chart.setBackgroundPaint(Color.white); 

ChartFrame frame = new ChartFrame("Surface Map - " 
    + (Concentration.testing ? "TESTING using " 
    + Concentration.testfile : currentFile.getName()), chart); 
frame.pack(); 
frame.setVisible(true); 
+0

あなたが説明している問題を示す[sscce](http://sscce.org/)を提供してください。 ['XYBlockChartDemo1'](http://www.jfree.org/jfreechart/jfreechart-1.0.13-demo.jnlp)がその一例です。 – trashgod

+0

あなたは解決策@Akibを見つけましたか? – user847988

答えて

1

あなたは2つのオプションがあります。XYBlockRendererあなたが求めている正確に何を行います

  1. は、あなたがクラスを使用する必要が3D 3D Lib for JFreeChart

  2. としてそれらを表します。 JFreeChartのデモコレクションをダウンロードするには、このコードを入手してください。 (ソースコードherethis 4Dの完全なコード例も非常に似ています。

関連する問題