C#折线图
来源:互联网 发布:出乎意乎的意思 编辑:程序博客网 时间:2024/05/22 20:39
public void Draw_Curve(PointPairList list) { Random ran = new Random(); this.myPane.GraphPane.Title = "动态折线图"; this.myPane.GraphPane.XAxis.Title = "时间"; this.myPane.GraphPane.YAxis.Title = "数量"; this.myPane.GraphPane.XAxis.Type = ZedGraph.AxisType.Date; this.myPane.GraphPane.CurveList.Clear(); /*double[] x = new double[length]; double[] y = new double[length]; for (int i = 0; i < length; i++) { x[i] = (double)new XDate(DateTime.Now.AddSeconds((-(length - i)))); double temp = (double)i / length * Math.PI * 2.0; y[i] = Math.Sin(temp) + 1.5; //y[i] = ran.NextDouble(); // list.Add(x, y); }*/ // z1.GraphPane.Draw("Sine Wave", x, y, Color.Red, SymbolType.None); myPane.GraphPane.AddCurve("Sine Wave", list, Color.Red, SymbolType.Circle); myPane.AxisChange(); myPane.Invalidate(); }private void Form1_Load( object sender, System.EventArgs e ){ //Draw_Curve(400);/*z1.IsShowPointValues = true;z1.GraphPane.Title = "Test Case for C#";double[] x = new double[100];double[] y = new double[100];inti;for ( i=0; i<100; i++ ){ // x[i] = i;x[i] = (double) i / 100.0 * Math.PI * 2.0;y[i] = Math.Sin( x[i] )+1.5;}z1.GraphPane.AddCurve( "Sine Wave", x, y, Color.Red, SymbolType.None );z1.AxisChange();z1.Invalidate();*/} //输入参数:最后的时间,总点数,实际的点数,数值 public PointPairList Convert_Point(string[] time,double[] data,int total,int count) { int i=0; PointPairList list = new PointPairList(); DateTime dtime = Convert.ToDateTime(time[0]); //获得第一个点的时间值 if (count > total) { Console.WriteLine("count>total"); return list; } for (i = 0; i < total-count; i++) //点数不够,补0 { double x = (double)new XDate(dtime.AddSeconds(-((total - count - i) * 2))); double y = 0; list.Add(x,y); } for (i = 0; i < count; i++) { dtime = Convert.ToDateTime(time[i]); double x = (double)new XDate(dtime); double y = data[i]; list.Add(x,y); } return list; } private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { int selected_index = this.comboBox1.SelectedIndex; int point_count = 5; double[] x = new double[2000]; double[] y = new double[2000]; for (int i = 0; i < 2000; i++) { x[i] = (double)new XDate(DateTime.Now.AddSeconds(i)); double temp = (double)i / 1000 * Math.PI * 2.0; y[i] = Math.Sin(temp) + 1.5; } //this.z1. switch (selected_index) { case 0: //1 point_count = 1; break; case 1: //5 point_count = 5; break; case 2: //10 point_count = 10; break; case 3: //20 point_count = 20; break; case 4: //30 point_count = 30; break; case 5: //60 point_count = 60; break; default: break; } int total = point_count * 30; //要显示的总点数 int len=(int)(total); //实际的总点数 string[] xx = new string[len]; double[] yy = new double[len]; string time_str = "2012-12-11 13:57:20"; DateTime time =Convert.ToDateTime(time_str); //Console.WriteLine(time1.ToString()); for (int i = 0; i < len; i++) { xx[i] = time.AddSeconds(i*2).ToString(); yy[i] = y[i]; } PointPairList list = Convert_Point(xx,yy,total,len); Draw_Curve(list); }