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<intint> 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<intint> 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属性\方法介绍
  8. http://zedgraph.sourceforge.net/samples.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/458219.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习实战之SVM

一引言&#xff1a;支持向量机这部分确实很多&#xff0c;想要真正的去理解它&#xff0c;不仅仅知道理论&#xff0c;还要进行相关的代码编写和测试&#xff0c;二者想和结合&#xff0c;才能更好的帮助我们理解SVM这一非常优秀的分类算法支持向量机是一种二类分类算法&#x…

mysql 时间类型 datetime,timestamp

2019独角兽企业重金招聘Python工程师标准>>> CURRENT_TIMESTAMP 的 timestamp 意思是 根据 mysql 的当前时间&#xff0c;使用mysql 的当前时间。 参考地址&#xff1a;http://blog.sina.com.cn/s/blog_67cc6e7d0100nrwk.html datetime 和 timestamp 都是保存时间格…

机器学习中的交叉验证(cross-validation)

from:https://blog.csdn.net/lhx878619717/article/details/49079785 交叉验证&#xff08;Cross validation)&#xff0c;交叉验证用于防止模型过于复杂而引起的过拟合. 有时亦称循环估计&#xff0c; 是一种统计学上将数据样本切割成较小子集的实用方法。于是可以先在一个子…

轻松谈话:谈话的力量

如何与她人搭话&#xff1f;&#xff1f; 第一&#xff1a;给别人一个好印象 1、环境&#xff1a;通过共同环境来激发兴趣&#xff0c;比如&#xff1a;在球场&#xff0c;你觉得谁会赢。 2、对方:多数人喜欢谈论自己。 3、自己&#xff1a;主动表明意图&#xff0c;要真诚。 第…

libSVM介绍(二)

from&#xff1a;https://blog.csdn.net/carson2005/article/details/6539192 鉴于libSVM中的readme文件有点长&#xff0c;而且&#xff0c;都是采用英文书写&#xff0c;这里&#xff0c;我把其中重要的内容提炼出来&#xff0c;并给出相应的例子来说明其用法&#xff0c;大家…

四则运算题2

本题新学知识点&#xff1a; itoa函数 char *itoa( int value, char *string,int radix);[1]原型说明&#xff1a;value&#xff1a;欲转换的数据。string&#xff1a;目标字符串的地址。radix&#xff1a;转换后的进制数&#xff0c;可以是10进制、16进制等。程序实例:#includ…

c++调用Libsvm

libSVM中的readme中文版&#xff1a;http://blog.csdn.net/carson2005/article/details/6539192 LibSVM的package中的Readme文件中介绍了怎样具体的使用LibSvm&#xff0c;可以在Dos下以命令形式进行调用&#xff0c;也可以用程序包中提供的GUI程序Svm-toy进行图形化的操作。sv…

STL -set

转载自&#xff1a;http://blog.csdn.net/LYHVOYAGE/article/details/22989659 set集合容器实现了红黑树&#xff08;Red-Black Tree&#xff09;的平衡二叉检索树的的数据结构&#xff0c; 在插入元素时&#xff0c;它会自动调整二叉树的排列&#xff0c;把该元素放到适当的位…

【机器学习实战之一】:C++实现K-近邻算法KNN

本文不对KNN算法做过多的理论上的解释&#xff0c;主要是针对问题&#xff0c;进行算法的设计和代码的注解。 KNN算法&#xff1a; 优点&#xff1a;精度高、对异常值不敏感、无数据输入假定。 缺点&#xff1a;计算复杂度高、空间复杂度高。 适用数据范围&#xff1a;数值…

javascript设计模式-继承

javascript继承分为两种&#xff1a;类式继承&#xff08;原型链、extend函数&#xff09;、原型式继承&#xff08;对继承而来的成员的读和写的不对等性、clone函数&#xff09;。 类式继承-->prototype继承&#xff1a; 1 function Person(name){2 this.name …

GIS基础软件及操作(二)

原文 GIS基础软件及操作(二) 练习二、管理地理空间数据库 1.利用ArcCatalog 管理地理空间数据库 2.在ArcMap中编辑属性数据 第1步 启动 ArcCatalog 打开一个地理数据库 当 ArcCatalog打开后&#xff0c;点击, 按钮&#xff08;连接到文件夹&#xff09;. 建立到包含练习数据的…

libSVM分类小例C++

from&#xff1a;http://www.doczj.com/list_31/ 使用libSVM求解分类问题的C小例 1.libSVM简介 训练模型的结构体 struct svm_problem//储存参加计算的所有样本 { int l; //记录样本总数 double *y; //指向样本类别的组数 //prob.y new double[prob.l]; struct svm_node …

qunit 前端脚本测试用例

首先引用qunit 测试框架文件 <link rel"stylesheet" href"qunit-1.22.0.css"> <script src"qunit-1.22.0.js"></script> <div id"qunit"></div> <div id"qunit-fixture"></div>…

非常规文件名删除

生活中我们偶尔会遇到这样一件事&#xff1a;走在路上&#xff0c;突然感觉鞋底有东西&#xff0c;抬脚一看&#xff0c;是个泡泡糖。拿不掉&#xff0c;走路还一粘一粘的。要多难受有多难受&#xff01;同样在linux中也有这么一种文件名。看着不舒服&#xff0c;却删不掉。今天…

Machine Learning(Stanford)| 斯坦福大学机(吴恩达)器学习笔记【汇总】

from&#xff1a;https://blog.csdn.net/m399498400/article/details/52556168 定义本课程常用符号 训练数据&#xff1a;机器用来学习的数据 测试数据&#xff1a;用来考察机器学习效果的数据&#xff0c;相当于考试。 m 训练样本的数量&#xff08;训练集的个数) x 输入的…

模板匹配算法

from&#xff1a;https://blog.csdn.net/zhi_neng_zhi_fu/article/details/51029864 模板匹配(Template Matching)算法 模板匹配&#xff08;Template Matching&#xff09;是图像识别中最具代表性的方法之一。它从待识别图像中提取若干特征向量与模板对应的特征向量进行比较…

立体匹配十大概念综述---立体匹配算法介绍

from&#xff1a;https://blog.csdn.net/wintergeng/article/details/51049596 一、概念 立体匹配算法主要是通过建立一个能量代价函数&#xff0c;通过此能量代价函数最小化来估计像素点视差值。立体匹配算法的实质就是一个最优化求解问题&#xff0c;通过建立合理的能量函数…

zjnu1730 PIRAMIDA(字符串,模拟)

Description Sample Input 6 JANJETINA 5 1 J 1 A 6 N 6 I 5 E Sample Output 1 0 2 1 1题意&#xff1a;给你一个长度小于等于10^6的字符串&#xff0c;然后每次让它循环铺盖&#xff0c;构成层数为n的塔&#xff0c;让你求得第i层塔中某个字符的个数。 思路&#xff1a;首先要…

ICP算法理解

from&#xff1a;https://blog.csdn.net/linear_luo/article/details/52576082 1 经典ICP ICP的目的很简单&#xff0c;就是求解两堆点云之间的变换关系。怎么做呢&#xff1f;思路很自然&#xff0c;既然不知道R和t(针对刚体运动)&#xff0c;那我们就假设为未知量呗&#xf…

图像处理的灰度化和二值化

from&#xff1a;http://blog.sina.com.cn/s/blog_13c6397540102wqtt.html 在图像处理中&#xff0c;用RGB三个分量&#xff08;R&#xff1a;Red&#xff0c;G&#xff1a;Green&#xff0c;B&#xff1a;Blue&#xff09;&#xff0c;即红、绿、蓝三原色来表示真彩色&#x…