场景

winform中实现zedgraph的多条y轴(附源码下载):

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

在上面实现显示多条自定义y轴的效果上,效果是左边一条y轴,第二条在右边显示,然后第三条以及以后都在左边显示。

上面实现的效果

 

 

zedgraph的graphpane对象的自带yaxis和y2axis代表一左一右两个坐标轴对象。

默认显示左边的yaxis对象,右边的y2xis需要设置才能显示。

如果要继续添加,在左边则在yaxislist中添加,在右边则在y2axislist中添加。

注:

博客主页:

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

实现

右边显示坐标设置

//第二条y轴标题
mypane.y2axis.title.text = "第二条y轴标题";
//第二条y轴字体
mypane.y2axis.title.fontspec = myfont;
//让第二条y轴显示
mypane.y2axis.isvisible = true;
// 创建第三条y轴
yaxis yaxis3 = new yaxis("第三条y轴标题");
//添加到y轴的list
mypane.yaxislist.add(yaxis3);

如果想让坐标轴都显示在左边

// 设置第一条y轴
mypane = setyaxisstyle(mypane, ylist[0]);
//循环剩下的y轴
for (int i = 1; i < ylist.count; i++)
     {
        yaxis yaxisnew = new yaxis(ylist[i].title);
        mypane = setnewyaxisstyle(mypane, yaxisnew, ylist[i]);
      }

设置第一条y轴的方法

public static graphpane setyaxisstyle(graphpane mypane, yaxismodel yaxismodel)
        {
            mypane.yaxis.title.text = yaxismodel.title;
            mypane.yaxis.title.fontspec.fontcolor = system.drawing.colortranslator.fromhtml(yaxismodel.color);
            mypane.yaxis.scale.min = yaxismodel.min;
            mypane.yaxis.scale.max = yaxismodel.max;       
            mypane.yaxis.scale.labelgap = 0f;
            mypane.yaxis.scale.align = alignp.outside;
            mypane.yaxis.scale.fontspec.size = global.font_size;
            mypane.yaxis.color = system.drawing.colortranslator.fromhtml(yaxismodel.color);
            mypane.yaxis.title.fontspec.fontcolor = system.drawing.colortranslator.fromhtml(yaxismodel.color);
            mypane.yaxis.scale.fontspec.fontcolor = system.drawing.colortranslator.fromhtml(yaxismodel.color);
            mypane.yaxis.title.fontspec.size = global.font_size;
            mypane.yaxis.title.fontspec.family = global.font_family;
            mypane.yaxis.title.fontspec.isbold = true;
            mypane.yaxis.title.isvisible = false;               //隐藏y轴标题显示

            #region 刻度设置-小刻度

            mypane.yaxis.minorgrid.isvisible = false;          //隐藏小刻度网格线
            mypane.yaxis.minortic.isopposite = false;          //隐藏对面的刻度-小刻度
            mypane.yaxis.minortic.isinside = false;            //隐藏内测刻度线-小刻度
            mypane.yaxis.minortic.isoutside = true;            //显示外侧刻度线-小刻度
            mypane.yaxis.minortic.iscrossinside = false;       //隐藏内测交叉刻度线-小刻度
            mypane.yaxis.minortic.iscrossoutside = false;      //隐藏外侧交叉刻度线-小刻度

            #endregion

            #region 刻度设置-主刻度

            mypane.yaxis.majorgrid.isvisible = true;           //显示主刻度网格线
            mypane.yaxis.majorgrid.iszeroline = false;         //隐藏主刻度的0刻度线
            mypane.yaxis.majortic.isopposite = false;          //隐藏对面的刻度-主刻度
            mypane.yaxis.majortic.isinside = false;            //隐藏内测刻度线-主刻度
            mypane.yaxis.majortic.isoutside = true;            //显示外侧刻度线-主刻度
            mypane.yaxis.majortic.iscrossinside = false;       //隐藏内测交叉刻度线-主刻度
            mypane.yaxis.majortic.iscrossoutside = false;      //隐藏外侧交叉刻度线-主刻度

            #endregion
            return mypane;
        }

 

设置新增y轴的方法

public static graphpane setnewyaxisstyle(graphpane mypane, yaxis yaxis, yaxismodel yaxismodel)
        {
            yaxis.title.text = yaxismodel.title;
            yaxis.title.fontspec.fontcolor = system.drawing.colortranslator.fromhtml(yaxismodel.color);
            yaxis.scale.min = yaxismodel.min;
            yaxis.scale.max = yaxismodel.max;          
            yaxis.scale.labelgap = 0.2f;
            yaxis.scale.align = alignp.outside;
            yaxis.scale.fontspec.fontcolor = system.drawing.colortranslator.fromhtml(yaxismodel.color);
            yaxis.scale.fontspec.size = global.font_size;
            yaxis.scale.fontspec.fontcolor = system.drawing.colortranslator.fromhtml(yaxismodel.color);
            yaxis.color = system.drawing.colortranslator.fromhtml(yaxismodel.color);
            yaxis.title.fontspec.fontcolor = system.drawing.colortranslator.fromhtml(yaxismodel.color);
            yaxis.title.fontspec.size = global.font_size;
            yaxis.title.fontspec.family = global.font_family;
            yaxis.title.fontspec.isbold = true;
            yaxis.title.isvisible = false;              //隐藏y轴标题
            //yaxis.type = axistype.text;               //y轴不能设置此属性,应该以刻度值显示
            #region 刻度设置-小刻度

            yaxis.minorgrid.isvisible = false;          //隐藏小刻度网格线
            yaxis.minortic.isopposite = false;          //隐藏对面的刻度-小刻度
            yaxis.minortic.isinside = false;            //隐藏内测刻度线-小刻度
            yaxis.minortic.isoutside = true;            //显示外侧刻度线-小刻度
            yaxis.minortic.iscrossinside = false;       //隐藏内测交叉刻度线-小刻度
            yaxis.minortic.iscrossoutside = false;      //隐藏外侧交叉刻度线-小刻度

            #endregion

            #region 刻度设置-主刻度

            yaxis.majorgrid.isvisible = true;           //显示主刻度网格线
            yaxis.majorgrid.iszeroline = false;         //隐藏主刻度的0刻度线
            yaxis.majortic.isopposite = false;          //隐藏对面的刻度-主刻度
            yaxis.majortic.isinside = false;            //隐藏内测刻度线-主刻度
            yaxis.majortic.isoutside = true;            //显示外侧刻度线-主刻度
            yaxis.majortic.iscrossinside = false;       //隐藏内测交叉刻度线-主刻度
            yaxis.majortic.iscrossoutside = false;      //隐藏外侧交叉刻度线-主刻度

            #endregion

            //添加到y轴的list
            mypane.yaxislist.add(yaxis);
            return mypane;
        }

 

效果