public static void 绘制曲线(控件库.曲线控件.XYGraph graph, double[] 电压, double[] 电流, double[] 流量, double[] 进口压力, double[] 出口压力, double[] 转速, double[] 时间轴) { graph.Graph.Plots[0].PlotXY(时间轴, 电压); graph.Graph.Plots[1].PlotXY(时间轴, 电流); graph.Graph.Plots[2].PlotXY(时间轴, 流量); graph.Graph.Plots[3].PlotXY(时间轴, 进口压力); graph.Graph.Plots[4].PlotXY(时间轴, 出口压力); graph.Graph.Plots[5].PlotXY(时间轴, 转速); }
public 调整坐标轴(XYGraph graph) { InitializeComponent(); 曲线控件 = graph; for (int i = 0; i < 曲线控件.Graph.Plots.Count; i++) { if (曲线控件.Graph.Plots[i].Tag == null) continue; if (曲线控件.Graph.Plots[i].Tag.ToString().EndsWith("S")) continue; CB_所属曲线.Items.Add(曲线控件.Graph.Plots[i].Tag.ToString()); } }
public 调整坐标轴(XYGraph graph) { InitializeComponent(); 曲线控件 = graph; for (int i = 0; i < 曲线控件.Graph.Plots.Count; i++) { if (曲线控件.Graph.Plots[i].Tag == null) { continue; } if (曲线控件.Graph.Plots[i].Tag.ToString().EndsWith("S")) { continue; } CB_所属曲线.Items.Add(曲线控件.Graph.Plots[i].Tag.ToString()); } }
private double[] f_绘制性能曲线(XYGraph 曲线控件, string 需要进行绘制的曲线ID, Grid 表格控件, string 采集样本_流量数据列名, string 采集样本_Y轴数据列名, int 拟合次数,int 分割点数) { List<double> 曲线X坐标集合 = new List<double>(); List<double> 曲线Y坐标集合 = new List<double>(); double[] 方程常量组; List<double> 拟合曲线X坐标集合; List<double> 拟合曲线Y坐标集合; for (int i = 0; i < 表格控件.ExportBandView.RowCount; i++) { double X = Convert.ToSingle(((DataRowView)表格控件.ExportBandView.GetRow(i))[采集样本_流量数据列名]); double Y = Convert.ToSingle(((DataRowView)表格控件.ExportBandView.GetRow(i))[采集样本_Y轴数据列名]); 曲线X坐标集合.Add(X); 曲线Y坐标集合.Add(Y); } if (曲线X坐标集合.Count == 0) return null; 辅助库.CurveFitting.f_曲线拟合(曲线X坐标集合.ToArray(), 曲线Y坐标集合.ToArray(), 拟合次数, 分割点数, out 拟合曲线X坐标集合, out 拟合曲线Y坐标集合, out 方程常量组); //_曲线拟合.f_曲线拟合(曲线X坐标集合, 曲线Y坐标集合, 4,1000 ,out 拟合曲线X坐标集合, out 拟合曲线Y坐标集合); for (int j = 0; j < 曲线控件.Graph.Plots.Count; j++) { if (曲线控件.Graph.Plots[j].Tag.ToString().Equals(需要进行绘制的曲线ID)) { 曲线控件.Graph.Plots[j].PlotXY(拟合曲线X坐标集合.ToArray(), 拟合曲线Y坐标集合.ToArray()); } } return 方程常量组; }
private void f_绘制影子性能曲线(XYGraph 曲线控件, string 需要进行绘制的曲线ID, Grid 表格控件, string 采集样本_流量数据列名, string 采集样本_Y轴数据列名) { List<double> 曲线X坐标对集合 = new List<double>(); List<double> 曲线Y坐标对集合 = new List<double>(); for (int i = 0; i < 表格控件.ExportBandView.RowCount; i++) { double X = Convert.ToSingle( ((DataRowView)表格控件.ExportBandView.GetRow(i))[采集样本_流量数据列名]); double Y = Convert.ToSingle(((DataRowView)表格控件.ExportBandView.GetRow(i))[采集样本_Y轴数据列名]); 曲线X坐标对集合.Add(X); 曲线Y坐标对集合.Add(Y); } for(int j=0;j<曲线控件.Graph.Plots.Count;j++) { if (曲线控件.Graph.Plots[j].Tag.ToString().Equals(需要进行绘制的曲线ID)) { 曲线控件.Graph.Plots[j].PlotXY(曲线X坐标对集合.ToArray(), 曲线Y坐标对集合.ToArray()); } } }
private void 显示曲线(XYGraph 曲线控件, string 曲线ID) { /* for (int j = 0; j < 曲线控件.Graph.Plots.Count; j++) { if (曲线控件.Graph.Plots[j].Tag.ToString().Equals(曲线ID) || 曲线控件.Graph.Plots[j].Tag.ToString().Equals(曲线ID+"汽蚀余量")) { 曲线控件.Graph.Plots[j].Visible = true; } else { 曲线控件.Graph.Plots[j].Visible = false; } }*/ }
private void f_绘制采集曲线(XYGraph 曲线控件, string 需要进行绘制的曲线ID, Grid 表格控件, string 采集样本_Y轴数据列名) { List<double> 曲线X坐标对集合 = new List<double>(); List<double> 曲线Y坐标对集合 = new List<double>(); 曲线控件.汽蚀余量X轴 = 0; 曲线控件.汽蚀余量Y轴 = 0; DataTable datatable汽蚀试验 = 数据库操作类.GetTableBySql("select * from 汽蚀试验 ORDER by 汽蚀余量 DESC"); foreach (DataRow dr in datatable汽蚀试验.Rows) { if (需要进行绘制的曲线ID.Equals(Convert.ToString(dr["批次编号"]))) { double n流量 = Convert.ToDouble(dr["流量"]); double n温度 = Convert.ToDouble(dr["温度"]); double n进口表压 = Convert.ToDouble(dr["进口压力"]); double 汽蚀余量 = Convert.ToDouble(dr["汽蚀余量"]); double Y = Convert.ToDouble(dr[采集样本_Y轴数据列名]); 曲线X坐标对集合.Add(汽蚀余量); 曲线Y坐标对集合.Add(Y); } } //显示曲线(曲线控件, 需要进行绘制的曲线ID); for (int j = 0; j < 曲线控件.Graph.Plots.Count; j++) { if ((曲线控件.Graph.Plots[j].Tag.ToString().Equals(需要进行绘制的曲线ID)) && ((曲线X坐标对集合.Count > 0) && (曲线Y坐标对集合.Count > 0))) { 曲线控件.Graph.Plots[j].Visible = true; 曲线控件.Graph.Plots[j].PlotXY(曲线X坐标对集合.ToArray(), 曲线Y坐标对集合.ToArray()); //曲线控件.f_设置汽蚀余量(需要进行绘制的曲线ID, 曲线汽蚀余量, 曲线X坐标对集合, 曲线Y坐标对集合); f_绘制临界点(曲线控件, 需要进行绘制的曲线ID, 采集样本_Y轴数据列名); } } }
private void f_绘制临界点(XYGraph 曲线控件, string 需要进行绘制的曲线ID, string 采集样本_Y轴数据列名) { List<double> 曲线X坐标对集合 = new List<double>(); List<double> 曲线Y坐标对集合 = new List<double>(); 曲线控件.汽蚀余量X轴 = 0; 曲线控件.汽蚀余量Y轴 = 0; DataTable datatable汽蚀试验批次 = 数据库操作类.GetTable("汽蚀试验批次"); foreach (DataRow dr in datatable汽蚀试验批次.Rows) { if (需要进行绘制的曲线ID.Equals(Convert.ToString(dr["批次编号"]))) { double 汽蚀余量 = Convert.ToDouble(dr["汽蚀余量"]); double Y = Convert.ToDouble(dr[采集样本_Y轴数据列名]); 曲线X坐标对集合.Add(汽蚀余量); 曲线Y坐标对集合.Add(Y); } } 曲线控件.f_设置临界值(需要进行绘制的曲线ID, 曲线X坐标对集合, 曲线Y坐标对集合); }