欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Winform中设置ZedGraph的X轴的刻度根据曲线获取

程序员文章站 2023-11-18 13:23:28
场景 Winforn中设置ZedGraph曲线图的属性、坐标轴属性、刻度属性: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100112573 在对ZedGraph进行添加曲线时,需要对X轴的刻度进行赋值,需要一个string的 ......

场景

winforn中设置zedgraph曲线图的属性、坐标轴属性、刻度属性:

https://blog.csdn.net/badao_liumang_qizhi/article/details/100112573

在对zedgraph进行添加曲线时,需要对x轴的刻度进行赋值,需要一个string的数组。

并且在生成曲线时还要给曲线一个个坐标点的list。

如何在生成完曲线后直接从曲线中取得曲线的横坐标作为x轴的赋值。

注:

博客主页:

关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。

实现

循环添加曲线

pointpairlist list = null;
                for (int i = 0; i < ylist.count; i++)
                {
                    //循环添加曲线
                    foreach(datatreenode node in global.instance.preparecomparedatainone)
                    {
                        ienumerable<entity.record> record =  global.instance.virtualdata.recorddatalist.where(p => p.cycleindex == int.parse(node.id));
                        list = setcurvetextinone(ylist[i].titlekey,record);
                        lineitem mycurve = mypane.addcurve(ylist[i].title, list, system.drawing.colortranslator.fromhtml(ylist[i].color), symboltype.none);
                        mycurve.yaxisindex = i;                                                                 //很关键,对应使用那个坐标值
                    }
                }

 

给曲线赋值

public static pointpairlist setcurvetextinone(string yaxis,ienumerable<entity.record> record)
        {
            pointpairlist list = new pointpairlist();

            #region 数据验证

            if (record == null)
            {
                return list;
            }

            #endregion

            else
            {
                //曲线赋值
                int maxctn = 0;      //最大点数
                double y = 0.0;
                int x =1;
                list<entity.record> recordlist = new list<entity.record>();
                foreach (entity.record re in record)
                {
                    maxctn++;
                    recordlist.add(re);
                }
                func<entity.record, object> getyvalue = basehelper.emitgetter<entity.record>(yaxis);
               
                for (int k = 0; k < recordlist.count; k++)
                {
                    if (basehelper.isexistsproperty<entity.record>(yaxis))
                    {
                        
                        object objy = getyvalue(recordlist[k]);
                        if (objy != null)
                        {
                            double.tryparse(objy.tostring(), out y);
                        }
                    }
                    list.add(x, y, k+1); //添加一组数据(k:x数据点的索引,y:y的值,xtag:x的实际值)
                    x++;
                }
                
                return list;
            }

        }

 

x轴的刻度值在曲线中获取

mypane.xaxis.scale.textlabels = list.select<pointpair, string>(p => p.x.tostring()).toarray<string>();         //x轴文本取值

 

 

效果

Winform中设置ZedGraph的X轴的刻度根据曲线获取

 

Winform中设置ZedGraph的X轴的刻度根据曲线获取