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;

 

posted @ 2022-04-20 22:40  sanmannn  阅读(173)  评论(0)    收藏  举报