[quote=BrunoNave]Valeu!!Muito Obrigado pela ajuda!!
Percebi perfeitamente a sua dica.
Isso de ler/escrever os dados num vector e depois num ficheiro em formato .txt ja tenho feito!
Agora não estou a ver é como mando fazer o grafico porque não tenho grandes conhecimentos de jfreechart
e respectiva construção do grafico a partir dos dados(data/hora e temperatura) do ficheiro.
Se me puder arranjar algum exemplo agradecia imenso!!
Abraço e Muito Obrigado[/quote]
Olá,
Vou enviar o que fiz na minha monografia, acho q vai ajudar:
package Monografia;
import java.awt.Font;
import java.awt.event.WindowEvent;
import java.awt.event.WindowAdapter;
import javax.swing.JOptionPane;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.annotations.XYTextAnnotation;
import org.jfree.chart.axis.AxisLocation;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.plot.CombinedDomainXYPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.StandardXYItemRenderer;
import org.jfree.chart.renderer.xy.XYItemRenderer;
import org.jfree.data.xy.XYDataset;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
/**
* A demonstration application showing how to create a vertical combined chart.
*
*/
//setDefaultCloseOperation(java.awt.Window.getWindows() .awt.WindowConstants.DISPOSE_ON_CLOSE);
public class gerar_graficos extends ApplicationFrame {
public gerar_graficos(final String title, int linhas, int i_curta, int f_curta, int f_longa, int i_longa, double ewma_b[], double media_longa[], double ewma_a[], double media_curta[], double dados_planilha[]) {
super(title);
final JFreeChart chart = createCombinedChart(linhas, i_longa, f_longa, i_curta, f_curta, ewma_b, media_longa, ewma_a, media_curta, dados_planilha);
final ChartPanel panel = new ChartPanel(chart, true, true, true, false, true);
panel.setPreferredSize(new java.awt.Dimension(500, 270));
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
setContentPane(panel);
}
private JFreeChart createCombinedChart(int linhas, int i_curta, int f_curta, int f_longa, int i_longa, double ewma_b[], double media_longa[], double ewma_a[], double media_curta[], double dados_planilha[]) {
// create subplot 1...
final XYDataset data1 = createDataset1(linhas, i_longa, f_longa, i_curta, f_curta, ewma_b, media_longa, ewma_a, media_curta, dados_planilha);
final XYItemRenderer renderer1 = new StandardXYItemRenderer();
final NumberAxis rangeAxis1 = new NumberAxis("Escala - Em R$");
final XYPlot subplot1 = new XYPlot(data1, null, rangeAxis1, renderer1);
subplot1.setRangeAxisLocation(AxisLocation.BOTTOM_OR_LEFT);
final XYTextAnnotation annotation = new XYTextAnnotation("Hello!", 50.0, 10000.0);
annotation.setFont(new Font("SansSerif", Font.PLAIN, 9));
annotation.setRotationAngle(Math.PI / 4.0);
subplot1.addAnnotation(annotation);
// create subplot 2...
final XYItemRenderer renderer2 = new StandardXYItemRenderer();
final NumberAxis rangeAxis2 = new NumberAxis("Escala 2");
rangeAxis2.setAutoRangeIncludesZero(false);
// parent plot...
final CombinedDomainXYPlot plot = new CombinedDomainXYPlot(new NumberAxis("Dominio - Nº de elementos"));
plot.setGap(10.0);
// add the subplots...
plot.add(subplot1, 1);
plot.setOrientation(PlotOrientation.VERTICAL);
// return a new chart containing the overlaid plot...
JFreeChart graf=new JFreeChart("Gráficos",
JFreeChart.DEFAULT_TITLE_FONT, plot, true);
return graf;
}
private XYDataset createDataset1(int linhas, int i_curta, int f_curta, int f_longa, int i_longa, double ewma_b[], double media_longa[], double ewma_a[], double media_curta[], double dados_planilha[]) {
int i; int j;
final XYSeries series1 = new XYSeries("Média Longa");
final XYSeries series2 = new XYSeries("EWMA - Média Longa");
final XYSeries series3 = new XYSeries("Média Curta");
final XYSeries series4 = new XYSeries("EWMA - Média Curta");
//final XYSeries series5 = new XYSeries("Dados reais - Planilha Excel");
for(i = (10 + i_curta); i <= linhas; i++){
series1.add(i , media_longa[i]); // plota grafico de media longa
series2.add(i , ewma_b[i]); // plota grafico ewma de media longa
series3.add(i , media_curta[i]); // plota grafico de media curta
series4.add(i , ewma_a[i]); // plota grafico ewma de media curta
// series5.add(i , dados_planilha[i]); // plota grafico de valores reais da planilha
} // fim do for i
final XYSeriesCollection collection = new XYSeriesCollection();
collection.addSeries(series1);
collection.addSeries(series2);
collection.addSeries(series3);
collection.addSeries(series4);
//collection.addSeries(series5);
return collection;
}
public void windowClosed(WindowEvent event) {
dispose();
}
}
esse arquivo eu usei só pra gerar o grafico, todo o tratamento dos vetores eu fiz em outro arquivo e passei como parametro para esse gerar o grafico;
gerar_graficos grafico = new gerar_graficos("Gráficos - EWMA, Média Longa e Média Curta", linhas, f_longa, i_longa, i_curta, f_curta, ewma_b, media_longa, ewma_a, media_curta, dados_planilha);
grafico.pack();
RefineryUtilities.centerFrameOnScreen(grafico);
grafico.setVisible(true);
dispose();
não sei se sabe, mais vc vai ter a add as bibliotecas no seu java, no netbeans é facil de fazer isso.
T+