Winform 双指数
因公司需求需要用到Winform chart 控件,用于绘制双指数曲线,网上暂未搜到具体范例,花了一段时间研究得以实现,chart控件的属性设置如下。(仅作为学习交流,sanmannn)
chart_UDC.Series.Clear(); chart_UDC.ChartAreas.Clear(); //表格区域清空 Series series1 = new Series("UDC"); ChartArea chartArea1 = new ChartArea("C1"); //新建区域 // ////第32位为最小值,第35位为最大值(X轴) 此处通过自定义函数Function.Get_NumScale(),动态设置坐标轴的最大最小值 ////第32位为最大值,第35位为最小值(Y轴) // chartArea1.AxisX.Minimum = Math.Pow(10, Function.Get_NumScale(FrmMain.ChartXAxis_InputCurrent[32]) - 1);//定义X Y轴 极值 chartArea1.AxisX.Maximum = Math.Pow(10, Function.Get_NumScale(FrmMain.ChartXAxis_InputCurrent[35])); chartArea1.AxisY.Minimum = Math.Pow(10, Function.Get_NumScale(FrmMain.T_trip[35])); chartArea1.AxisY.Maximum = Math.Pow(10, Function.Get_NumScale(FrmMain.T_trip[32])); //设置坐标轴标题 chartArea1.AxisX.Title = "Current(A)";//设置坐标轴的标题 chartArea1.AxisY.Title = "Time(s)"; // 线宽 series1.BorderWidth = 3; series1.BorderColor = Color.Blue; series1.ChartType = SeriesChartType.Spline; // //添加数据点(用三个for语句添加数据,由于在主要数据点前加了两个点,第二个for循环中series.Points.[2 + i] 从总体第二个点添加标记) // for (int i = 0; i< 2; i++) { series1.Points.AddXY(FrmMain.ChartXAxis_InputCurrent[i + 32], FrmMain.T_trip[i + 32]); } for (int i = 0; i < 32; i++) { series1.Points.AddXY(FrmMain.ChartXAxis_InputCurrent[i], FrmMain.T_trip[i]); series1.Points[2 + i].MarkerColor = Color.Red; //之前存在两个点(不要标记),此处添加的32位点需要进行标记添加 //标记点大小 series1.Points[2 + i].MarkerSize = 8; //标记点样式 series1.Points[2 + i].MarkerStyle = MarkerStyle.Cross; } for (int i = 34; i < 36; i++) { series1.Points.AddXY(FrmMain.ChartXAxis_InputCurrent[i], FrmMain.T_trip[i]);//结尾添加两个点,不需要标记 } // //chart添加新建的区域 // chart_UDC.Series.Add(series1); chart_UDC.ChartAreas.Add(chartArea1); // //网格线 // chartArea1.AxisX.MajorGrid.LineColor = System.Drawing.Color.LightGray; //设置x轴的网格线颜色 chartArea1.AxisX.MajorGrid.LineDashStyle = ChartDashStyle.Dash; //设置网格类型为虚线 chartArea1.AxisY.MajorGrid.LineColor = System.Drawing.Color.LightGray; //设置y轴的网格线颜色 chartArea1.AxisY.MajorGrid.LineDashStyle = ChartDashStyle.Dash; //设置网格类型为虚线 //X轴次网格线属性 chartArea1.AxisX.MinorGrid.LineDashStyle = ChartDashStyle.Dash; chartArea1.AxisX.MinorGrid.LineColor = System.Drawing.Color.LightGray; chartArea1.AxisX.MinorGrid.Interval = 1; //设置间隔大小为 1 chartArea1.AxisX.MinorGrid.Enabled = true; //间隔开启 chartArea1.AxisY.MinorGrid.LineDashStyle = ChartDashStyle.Dash; //Y轴次网格线设置 chartArea1.AxisY.MinorGrid.LineColor = System.Drawing.Color.LightGray; chartArea1.AxisY.MinorGrid.Interval = 1; chartArea1.AxisY.MinorGrid.Enabled = true; //设置X Y轴间隔 chartArea1.AxisX.IsLogarithmic = true; //设置X轴为指数形式,底数为10 chartArea1.AxisX.LogarithmBase = 10; chartArea1.AxisY.IsLogarithmic = true; //设置Y轴为指数形式,底数为10 chartArea1.AxisY.LogarithmBase = 10;


浙公网安备 33010602011771号