Итак, я посмотрел на то, что trashgod предложил мне и пришел с этим кодом:
public class PolarTest extends JFrame {
public PolarTest(double[][] dipaz, double[][] val){
JFrame f = new JFrame("Title");
ChartPanel panel = new ChartPanel(createChart(val, dipaz));
panel.setPreferredSize(new Dimension(500,500));
f.add(panel);
f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);
}
private JFreeChart createChart(double[][] val,double[][] dipaz){
XYSeriesCollection dataset = new XYSeriesCollection ();
double step, min, max;
min = val[0][2];
max = val[val.length-1][2];
step = (max-min)/10; //creation of 10 areas of similar heat range
dataset = (XYSeriesCollection) createDataset(val,step);
JFreeChart chart = ChartFactory.createPolarChart("test", dataset, true, true, true);
PolarPlot plot = (PolarPlot) chart.getPlot();
DefaultPolarItemRenderer r = (DefaultPolarItemRenderer) plot.getRenderer();
r.setFillComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER,0.5f));
for(int i =0; i<dataset.getSeriesCount(); i++){
r.setSeriesFilled(i, true);
r.setShapesVisible(false);
r.setDrawOutlineWhenFilled(false);
}
NumberAxis rangeAxis = (NumberAxis) plot.getAxis();
rangeAxis.setTickLabelsVisible(false);
return chart;
}
private XYDataset createDataset(double[][] val, double step){
XYSeriesCollection result = new XYSeriesCollection();
double dpTmp, breakPoint;
int cpt=1;
boolean t;
t= true;
dpTmp = val[0][2];
breakPoint = dpTmp + step;
XYSeries series = null ;
for(int i = 0; i< val.length; i++){
if(val[i][2] < breakPoint){
if(t){
series = new XYSeries(String.valueOf(cpt));
t = false;
}
series.add(val[i][1],val[i][0]);
cpt++;
}else{
result.addSeries(series);
i--;
t=true;
breakPoint = val[i][2] + step;
}
}
return result;
}
Массив dipaz
содержит мой угол и наклон (из X, Y точек, которые я хотел быпозже нанесите на диаграмму полярное представление), в то время как val a 3 by N array: val[][0]
= dip val[][1]
= angle val[][2]
= значение "heat", если мы рассматриваем эту проблему как тепловую карту.
val
по возрастанию отсортировано по третьему столбцу.Моя идея состояла в том, чтобы разбить весь массив на 10 (или более) областей с одинаковыми значениями тепловыделения.
Если я запускаю этот код, я получаю следующий вывод (см. Рис.).Мы можем видеть, что это там, но не совсем.Я не уверен, что этот код может правильно отобразить мою высокую температуру на полярном графике>
Как я могу приблизиться к фотографии, которую я опубликовалв моем первом посте?
Спасибо за помощь.Flo