zoukankan      html  css  js  c++  java
  • Winform中设置ZedGraph的X轴的刻度根据曲线获取

    场景

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

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

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

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

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

    注:

    博客主页:
    https://blog.csdn.net/badao_liumang_qizhi
    关注公众号
    霸道的程序猿
    获取编程相关电子书、教程推送与免费下载。

    实现

    循环添加曲线

    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轴文本取值

    效果

  • 相关阅读:
    java通过sort()方法实现数组和集合升序降序排列
    基本数据类型和它们的包装类
    final和static关键字
    对象的回收
    栈和堆
    成员变量和局部变量
    Nginx服务器的Websockets配置方法
    failed: Error during WebSocket handshake: Unexpected response code: 404
    使用Nginx做WebSockets代理教程
    详解Nginx反向代理WebSocket响应403的解决办法
  • 原文地址:https://www.cnblogs.com/badaoliumangqizhi/p/11839699.html
Copyright © 2011-2022 走看看