当前位置: 首页 > news >正文

zed graph使用经验

转自:http://www.cnblogs.com/gaizai/archive/2010/02/22/1671154.html

ZedGraph使用经验

  开源的统计图控件中基本常用的是OpenFlashChar和ZedGraph,今天就先来讲讲ZedGraph的使用。

ZedGraph资源

  • ZedGraph来源:http://sourceforge.net/project/showfiles.php?group_id=114675
  • ZedGraph相关例子资源:http://zedgraph.org/wiki/index.php?title=Sample_Graphs 

 

ZedGraph的特点:

  • 第一,可以先生成图片后再显示,这对一些多用户并发有点帮助。(RenderMode.ImageTag)
  • 第二,可以动态生成,不用保存文件,可以减少IO的读写消耗。(RenderMode.RawImage)
  • 第三,比较多的呈现方式,比如曲线图、柱状图、饼图等。 

 

ZedGraph的缺点:

  • 第一,编码的时候,在设置属性时太烂了,一点注释都没有,不要说是中文的啦,就连英文都没有,太不方便了。
  • 第二,图表的显示比较简陋,没有OpenFlashChar来得好看。

 

注意事宜

  • 第一,当前的最新版本是5.1.5,我以前也使用过4.3.4的版本,这两个版本的差别很大,很多属性都已经不存在了,面向对象的感念可能加强了不少,也清晰了不少,因为现在的属性设置都是先实体,再属性了,而以前就比较混乱了。所以在使用不同的版本的时候要注意这点。
  • 第二,在Windows Forms和 ASP.Net Web Form中使用是不同。

 

一个简单的入门例子 

  • 第一,在 bin文件夹中加入 Zedgraph.dll 和Zedgraph.web.dll
  • 第二,添加这两个dll的引用;
  • 第三,在网站下要创建一个空文件夹,名称为 'ZedGraphImages',这个文件夹名称是默认的,要修改这个文件夹名称,可以修改属性 RenderedImagePath,CacheDuration缓存的持续时间。ZedGraph会生成一图片存放在缓存的目录中,显示图片时,会生成一个img标签代替ZedGraphWeb标签,并在一个时间内,"欺骗"浏览器加载这张图片;
  • 第四,在 aspx文件中加入:<%@ Register TagPrefix="zgw" Namespace="ZedGraph.Web" Assembly="ZedGraph.Web" %>;在html中加入<zgw:ZedGraphWeb ID="ZedGraphWeb1" runat="server" Width="300" Height="130" RenderMode="ImageTag"></zgw:ZedGraphWeb>  
  • 第五,在cs文件中添加引用: using ZedGraph;using ZedGraph.Web;using System.Drawing;//颜色
  • 第六,注册事件,this.ZedGraphWeb1.RenderGraph += new ZedGraph.Web.ZedGraphWebControlEventHandler(GetImage);//注册事件
  • 第七,写方法,private void GetImage(ZedGraphWeb zgw, Graphics g, MasterPane masterPane){}
  • 具体代码可以参考ZedGraph webform 初学小例子 (代码有详细解释)

一些经验

  • 传递数据的时候可以使用字典:IDictionary<int, int> dic; 
  • 一些属性设置
myPane.XAxis.Scale.FontSpec.Size  =   30 ; // 设置x轴的文字大小.
myPane.YAxis.Scale.FontSpec.Size  =   30 ; // 设置y轴的文字大小.
myPane.YAxis.MajorGrid.IsVisible  =   true ; // 设置虚线.
myPane.Chart.Border.IsVisible  =   false ; // 图表区域的边框设置.
myPane.Legend.IsVisible  =   false ; // 图表的注释标签显示设置项目.
  • 动态根据传入的数据显示的方法
         ///   <summary>
        
///  曲线图.
        
///   </summary>
         public   void  CreateLineChart(GraphPane myPane, IDictionary < int int >  dic,  string  title,  string  xField,  string  yFields,  string  format)
        {
            myPane.XAxis.Scale.FontSpec.Size 
=   30 ; // 设置x轴的文字大小.
            myPane.YAxis.Scale.FontSpec.Size  =   30 ; // 设置y轴的文字大小.
            myPane.YAxis.MajorGrid.IsVisible  =   true ; // 设置虚线.
            myPane.Chart.Border.IsVisible  =   false ; // 图表区域的边框设置.
            myPane.Legend.IsVisible  =   false ; // 图表的注释标签显示设置项目.

            
int  rows  =  dic.Count;
            
double [] arrY  =   new   double [rows];
            
double [] arrX  =   new   double [rows];
            
string [] labels  =   new   string [rows];

            
int  i  =   0 ;
            
foreach  (KeyValuePair < int int >  kvp  in  dic)
            {
                arrX[i] 
=  Convert.ToDouble(kvp.Key);
                arrY[i] 
=  Convert.ToDouble(kvp.Value);
                labels[i] 
=  kvp.Key.ToString();
                i
++ ;
            }

            LineItem myCurve 
=  myPane.AddCurve(title, arrX, arrY, Color.Red, SymbolType.Square);
            myCurve.Symbol.Fill 
=   new  Fill(Color.Blue, Color.White, Color.Blue); // 填充这个蓝条,让这蓝条看起来有3D的效果
            myCurve.Line.Width  =   2 ;

            myPane.XAxis.Scale.TextLabels 
=  labels;  // X轴的说明文字
            myPane.XAxis.Type  =  AxisType.Text;
        }

  • 小图的属性设置
            myPane.XAxis.Scale.FontSpec.Size  =   30 ; // 设置x轴的文字大小.
            myPane.YAxis.Scale.FontSpec.Size  =   30 ; // 设置y轴的文字大小.
            myPane.YAxis.MajorGrid.IsVisible  =   true ; // 设置虚线.
            myPane.Chart.Border.IsVisible  =   false ; // 图表区域的边框设置.
            myPane.Legend.IsVisible  =   false ; // 图表的注释标签显示设置项目.

  • 小图的属性设置刻度问题
            myPane.YAxis.Scale.Min  =   0 ; // 设置只显示正半轴.
            myPane.YAxis.Scale.MajorStep  =   1 ; // 设置刻度为1;
  • 属性分布图,From Arbean.Wu

 

 

 

相关资料

  1. http://weblogs.asp.net/scottgu/archive/2008/11/24/new-asp-net-charting-control-lt-asp-chart-runat-quot-server-quot-gt.aspx
  2. http://zedgraph.org/wiki/index.php?title=Sample_Graphs
  3. 波浪线图:http://zedgraph.org/wiki/index.php?title=Dual-Y_Demo
  4. RenderMode.ImageTag例子:http://zedgraph.org/wiki/index.php?title=Use_RenderMode.ImageTag_in_a_web_page
    RenderMode.RawImage例子:http://zedgraph.org/wiki/index.php?title=Use_RenderMode.RawImage_in_a_web_page
  5. ZedGraph webform 初学小例子 (代码有详细解释)

    ZedGraph属性

    一个简单例子
  6. 开源图表控件ZedGraph控件的研究(1)
  7. ZedGraph属性\方法介绍

相关文章:

  • vim语法高亮
  • vbscript脚本用二进制方式读写文件
  • 15个最佳Flash物理游戏
  • ARX 反回曲线上一定距离的点 函数
  • 2008主流数据库产品回顾与展望
  • ARX 沿着多段线绘制一定距离,递归执行
  • WinDBG 技巧: 显示GetLastError() 错误码 (!gle命令)
  • C# 窗体间传值总结
  • 诺基亚5800XM 承认质量缺陷
  • ASP.NET Web Application 中使用 Unity 依赖注入容器
  • ARX 多段线的合并
  • 参加ESB沙龙
  • 未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序
  • Unix哲学基础
  • C# EXCEL 导入导出类(OLEDB的方式)
  • 【跃迁之路】【463天】刻意练习系列222(2018.05.14)
  • 8年软件测试工程师感悟——写给还在迷茫中的朋友
  • Apache的80端口被占用以及访问时报错403
  • css的样式优先级
  • ES6 学习笔记(一)let,const和解构赋值
  • Javascript Math对象和Date对象常用方法详解
  • mysql外键的使用
  • React+TypeScript入门
  • spark本地环境的搭建到运行第一个spark程序
  • VirtualBox 安装过程中出现 Running VMs found 错误的解决过程
  • 对象引论
  • 漂亮刷新控件-iOS
  • 如何使用Mybatis第三方插件--PageHelper实现分页操作
  • 微信如何实现自动跳转到用其他浏览器打开指定页面下载APP
  • 自动记录MySQL慢查询快照脚本
  • “十年磨一剑”--有赞的HBase平台实践和应用之路 ...
  • 组复制官方翻译九、Group Replication Technical Details
  • #if和#ifdef区别
  • $(selector).each()和$.each()的区别
  • (4)STL算法之比较
  • (Arcgis)Python编程批量将HDF5文件转换为TIFF格式并应用地理转换和投影信息
  • (论文阅读32/100)Flowing convnets for human pose estimation in videos
  • (企业 / 公司项目)前端使用pingyin-pro将汉字转成拼音
  • (亲测)设​置​m​y​e​c​l​i​p​s​e​打​开​默​认​工​作​空​间...
  • (删)Java线程同步实现一:synchronzied和wait()/notify()
  • (十一)图像的罗伯特梯度锐化
  • (提供数据集下载)基于大语言模型LangChain与ChatGLM3-6B本地知识库调优:数据集优化、参数调整、Prompt提示词优化实战
  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)
  • (原創) 系統分析和系統設計有什麼差別? (OO)
  • (转)fock函数详解
  • (轉貼) 資訊相關科系畢業的學生,未來會是什麼樣子?(Misc)
  • .[hudsonL@cock.li].mkp勒索加密数据库完美恢复---惜分飞
  • .NET / MSBuild 扩展编译时什么时候用 BeforeTargets / AfterTargets 什么时候用 DependsOnTargets?
  • .net core 3.0 linux,.NET Core 3.0 的新增功能
  • .net core MVC 通过 Filters 过滤器拦截请求及响应内容
  • .NET Core中的去虚
  • .NET Standard 支持的 .NET Framework 和 .NET Core
  • .NETCORE 开发登录接口MFA谷歌多因子身份验证
  • .netcore 如何获取系统中所有session_如何把百度推广中获取的线索(基木鱼,电话,百度商桥等)同步到企业微信或者企业CRM等企业营销系统中...
  • .net中调用windows performance记录性能信息