1. 程式人生 > >java繪製曲線圖

java繪製曲線圖

import javax.swing.JPanel;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
public class JFramechart extends ApplicationFrame {
/**
  * 
  */
private static final long serialVersionUID = 1L;
public JFramechart(String s) {
   super(s);
   setContentPane(createDemoLine());
   this.pack();
   RefineryUtilities.centerFrameOnScreen(this);
   this.setVisible(true);
 // this.setDefaultCloseOperation(EXIT_ON_CLOSE);
 }
//public static void main(String[] args) {
//   JFramechart fjc = new JFramechart("折線圖",);
//   fjc.pack();
//   RefineryUtilities.centerFrameOnScreen(fjc);
//   fjc.setVisible(true);
//  // fjc.setDefaultCloseOperation(HIDE_ON_CLOSE);
//   }
// 生成顯示圖表的面板
 public static JPanel createDemoLine() {
   JFreeChart jfreechart = createChart(createDataset());
   return new ChartPanel(jfreechart);
 }
// 生成圖表主物件JFreeChart
 public static JFreeChart createChart(DefaultCategoryDataset linedataset) {
   // 定義圖表物件
   JFreeChart chart = ChartFactory.createLineChart("歷史記錄曲線", //折線圖名稱
     "時間", // 橫座標名稱
     "傾角(X軸、Y軸)", // 縱座標名稱
     linedataset, // 資料
    PlotOrientation.VERTICAL, // 水平顯示影象
     true, // include legend
     true, // tooltips
     false // urls
     );
   CategoryPlot plot = chart.getCategoryPlot();
   plot.setRangeGridlinesVisible(true); //是否顯示格子線
   plot.setBackgroundAlpha(0.3f); //設定背景透明度
   NumberAxis rangeAxis = (NumberAxis)plot.getRangeAxis();
   rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits());
   rangeAxis.setAutoRangeIncludesZero(true);
   rangeAxis.setUpperMargin(0.20);
   rangeAxis.setLabelAngle(Math.PI / 2.0);
   return chart;
 }
// 生成資料
 public static DefaultCategoryDataset createDataset() {
   DefaultCategoryDataset linedataset = new DefaultCategoryDataset();
   MyData md=new MyData();
   double x=md.getX();
   double y=md.getX();
   double t=md.getX();
   draw(x,y,t,linedataset);
   return linedataset;
 }
 public static DefaultCategoryDataset draw(double x,double y,double t,DefaultCategoryDataset linedataset){
	 DefaultCategoryDataset lds = new DefaultCategoryDataset();
	 String series1 = "傾角(X軸)";
	   String series2 = "傾角(Y軸)";
	   String series3 = "溫度";
	   // 橫軸名稱(列名稱)
	   String type1 = "1月";
	   String type2 = "2月";
	   String type3 = "3月";
	   String type4="4月";
	 lds=linedataset;
	 lds.addValue(4.2, series1, type1);
	   linedataset.addValue(x, series1, type2);
	   linedataset.addValue(5.2, series1, type3);
	   linedataset.addValue(3.9, series1, type4);
	   linedataset.addValue(y, series2, type1);
	   linedataset.addValue(5.2, series2, type2);
	   linedataset.addValue(7.9, series2, type3);
	   linedataset.addValue(t, series3, type1);
	   linedataset.addValue(9.2, series3, type2);
	   linedataset.addValue(8.9, series3, type3);
	 return linedataset;
 }
}