用ZedGraph控件画统计分析图.

article/2025/10/6 21:39:38

由于朋友需要把C1WebChart.替换掉,改用开源的ZedGraph控件.以下做一个示例,供大家参考:

步骤如下:

1、添加ZedGraph控件。如下图:
 

2、添加到控制面版。如下图:

3、制作用户控件。

   a>  建立一个命名为: DrawGrap.ascx 用户控件。
   b>  通过控制面版,把ZedGraphWeb拖到默认页面。 如下图:

    c>   生成代码(DrawGrap.ascx)如下:
     

      <% @ Control Language = " C# "  AutoEventWireup = " true "  CodeFile = " DrawGrap.ascx.cs "  Inherits = " DrawGrap "   %>
<% @ Register TagPrefix = " zgw "  Namespace = " ZedGraph.Web "  Assembly = " ZedGraph.Web "   %>
< ZGW:ZEDGRAPHWEB id = " zedGraphControl "  runat = " server "  width = " 500 "  Height = " 375 "  RenderMode = " ImageTag " />

 

  d>  生成代码(DrawGrap.ascx.cs)如下:

 

using  System;
using  System.Data;
using  System.Configuration;
using  System.Collections;
using  System.Web;
using  System.Web.Security;
using  System.Web.UI;
using  System.Web.UI.WebControls;
using  System.Web.UI.WebControls.WebParts;
using  System.Web.UI.HtmlControls;

using  System.Drawing;
using  ZedGraph;
using  ZedGraph.Web;
using  System.Collections.Generic;

/// <summary>
/// 显示统计图形类型
/// </summary>

public   enum  AnalyticsType
{
    Line,   
//折线图
    Bar,    //柱状图
    Pie     //饼图
}
;
public   partial   class  DrawGrap : System.Web.UI.UserControl
{
    
Private Attribute

    
Public Property
    
protected void Page_Load(object sender, EventArgs e)
    
{
        zedGraphControl.RenderGraph 
+= new ZedGraph.Web.ZedGraphWebControlEventHandler(zedGraphControl_RenderGraph);
    }



   
private void InitDefaultColors()
        
{
            defaultColors.Add(Color.Red);
            defaultColors.Add(Color.Green);
            defaultColors.Add(Color.Blue);
            defaultColors.Add(Color.Yellow);
            defaultColors.Add(Color.YellowGreen);
            defaultColors.Add(Color.Brown);
            defaultColors.Add(Color.Aqua);
            defaultColors.Add(Color.Cyan);
            defaultColors.Add(Color.DarkSeaGreen);
            defaultColors.Add(Color.Indigo);
        }

        
/// <summary>
        
/// 如果属性为空则初始化属性数据
        
/// </summary>

        private void InitProperty()
        
{
            InitDefaultColors();
            
if (string.IsNullOrEmpty(Title))
            
{
                Title 
= "未命名统计图";
            }

            
if (string.IsNullOrEmpty(XAxisTitle))
            
{
                XAxisTitle 
= "横轴";
            }

            
if (string.IsNullOrEmpty(YAxisTitle))
            
{
                YAxisTitle 
= "纵轴";
            }

            
if (Type == AnalyticsType.Pie)
            
{
                Count 
= ScaleData.Count;
            }

            
else
            
{
                Count 
= DataSource.Count;
            }

            
if (Colors.Count == 0 || Colors.Count != Count)
            
{
                Random r 
= new Random();
                
int tempIndex = 0;
                List
<int> tempIndexList = new List<int>();
                
for (int i = 0; i < Count; i++)
                
{
                    tempIndex 
= r.Next(defaultColors.Count);
                    
if (tempIndexList.Contains(tempIndex))
                    
{
                        i
--;
                    }

                    
else
                    
{
                        tempIndexList.Add(tempIndex);
                        Colors.Add(defaultColors[tempIndex]);
                    }

                }

            }

            
if (NameList.Count == 0)
            
{
                
if (Type == AnalyticsType.Bar)
                
{
                    
for (int i = 0; i < DataSource[0].Count; i++)
                    
{
                        NameList.Add(
"" + i.ToString() + "");
                    }

                }

                
else
                
{
                    
for (int i = 0; i < Count; i++)
                    
{
                        NameList.Add(
"" + i.ToString() + "");
                    }

                }

            }

            
if (LabelList.Count == 0)
            
{
                
for (int i = 0; i < Count; i++)
                
{
                    LabelList.Add(
"含义" + i.ToString());
                }

            }

        }

        
/// <summary>
        
/// 画图
        
/// </summary>
        
/// <param name="webObject"></param>
        
/// <param name="g"></param>
        
/// <param name="pane"></param>

        private void zedGraphControl_RenderGraph(ZedGraph.Web.ZedGraphWeb webObject, System.Drawing.Graphics g, ZedGraph.MasterPane pane)
        
{
            InitProperty();

            GraphPane myPane 
= pane[0];

            myPane.Title.Text 
= Title;
            myPane.XAxis.Title.Text 
= XAxisTitle;
            myPane.YAxis.Title.Text 
= YAxisTitle;

            
//if (true)
            
//{
            
//    DrawMessage(myPane, "yiafdhaskjhfasfksahfasdlhfaslf lasgfasglgsadi");
            
//    pane.AxisChange(g);
            
//    return;
            
//}

            
switch (Type)
            
{
                
case AnalyticsType.Line:
                    DrawLine(myPane);
                    
break;
                
case AnalyticsType.Bar:
                    DrawBar(myPane);
                    
break;
                
case AnalyticsType.Pie:
                    DrawPie(myPane);
                    
break;
                
default:
                    
break;
            }

            pane.AxisChange(g);
        }


        
Draw
    }

  e>  用户控件制作完成。


4、对控件的使用。

  a>  创建测试页面(DrawGrap.aspx)

  b> 把用户控件DrawGrap.ascx 拖到默认的测试页面上(DrawGrap.aspx)

  c> 后台代码如下:

 

using  System;
using  System.Data;
using  System.Configuration;
using  System.Collections;
using  System.Web;
using  System.Web.Security;
using  System.Web.UI;
using  System.Web.UI.WebControls;
using  System.Web.UI.WebControls.WebParts;
using  System.Web.UI.HtmlControls;

public   partial   class  DrawGrap : System.Web.UI.Page
{
    
protected void Page_Load(object sender, EventArgs e)
    
{
        
//柱状图
        DrawBar();
        
//饼图
        
//DrawPie();
        
//曲线图
        
//DrawLine();
    }

    
private void DrawBar()
    
{
        DrawGrap1.Type 
= AnalyticsType.Bar;
        DrawGrap1.Title 
= "用户访问柱状图";
        DrawGrap1.XAxisTitle 
= "月份";
        DrawGrap1.YAxisTitle 
= "用户访问数量";
        Random rand 
= new Random();
        
for (int i = 0; i < 6; i++)
        
{
            ZedGraph.PointPairList ppl 
= new ZedGraph.PointPairList();
            
for (int j = 0; j < 3; j++)
            
{
                
double x = rand.Next(10);
                
double y = rand.NextDouble() * 1000;
                ppl.Add(x, y);
            }

            DrawGrap1.DataSource.Add(ppl);
        }

    }


    
private void DrawPie()
    
{
        DrawGrap1.Type 
= AnalyticsType.Pie;
        DrawGrap1.Title 
= "用户访问饼图";
        Random rand 
= new Random();
        
for (int i = 0; i < 3; i++)
        
{
            DrawGrap1.ScaleData.Add((i 
+ 2* rand.Next(100));
            DrawGrap1.NameList.Add(i.ToString());
        }

    }


    
private void DrawLine()
    
{
        DrawGrap1.Type 
= AnalyticsType.Line;
        DrawGrap1.Title 
= "用户访问曲线图";
        DrawGrap1.XAxisTitle 
= "月份";
        DrawGrap1.YAxisTitle 
= "用户访问数量";
        Random rand 
= new Random();
        
for (int i = 0; i < 3; i++)
        
{
            ZedGraph.PointPairList ppl 
= new ZedGraph.PointPairList();

            
for (double x = 0; x < 5; x += 1.0)
            
{
                
double y = rand.NextDouble() * 1000;
                ppl.Add(x, y);
            }

            DrawGrap1.DataSource.Add(ppl);
            DrawGrap1.NameList.Add(i.ToString());
        }

    }

}

d>  生成的柱状图如下:

 e>  生成的曲线图如下:

 f>  生成的饼图如下:

5、补充说明

a>  成功部署该项目需要在虚拟网站建临时文件夹(ZedGraphImages),便于存放生成的临时文件。

b> 据说该控件支持3D图效果,具体我没测试。希望有兴趣的同学可以测试。

     (这些图一般的项目应用就足够了。)


http://chatgpt.dhexx.cn/article/Zgv0ajpk.shtml

相关文章

C# 利用ZedGraph控件画简单折线图示例

下载ZedGraph 官网下载地址 http://sourceforge.net/projects/zedgraph/files/ 添加 ZedGraph.dll 和ZedGraph.Web.dll的引用 在控件库中添加ZedGraph控件 右键点击工具箱 - 选择项 - .Net Framework 组件 - 浏览 - 找到ZedGraph.dll 和ZedGraph.Web.dll添加…

zed graph使用经验

转自&#xff1a;http://www.cnblogs.com/gaizai/archive/2010/02/22/1671154.html ZedGraph使用经验 开源的统计图控件中基本常用的是OpenFlashChar和ZedGraph&#xff0c;今天就先来讲讲ZedGraph的使用。 ZedGraph资源 ZedGraph来源&#xff1a;http://sourceforge.net/proj…

ZedGraph

ZedGraph使用经验 2010-02-22 14:28 by 听风吹雨, 8194 阅读, 3 评论, 收藏, 编辑 开源的统计图控件中基本常用的是OpenFlashChar和ZedGraph&#xff0c;今天就先来讲讲ZedGraph的使用。 ZedGraph资源 ZedGraph来源&#xff1a;http://sourceforge.net/project/showfiles.php…

zedGraph 绘制实时曲线 卡顿

zedGraph是一个开源的曲线绘制插件&#xff0c;由于要制作上位机显示实时数据&#xff0c;百度搜索到了zedgraph&#xff0c;优点是开源&#xff0c;功能也够使用。 缺点是看网址08年后就没有更新过。尝试使用了一下&#xff0c;感觉还可以。 曲线绘制直接看下图。 原理很简单…

ZedGraph 官网下载和帮助文档ZedGraph.chm

ZedGraph介绍 ZedGraph是用C#编写的.NET的类库控件&#xff0c;可用于绘制曲线图、饼图、柱状图、股票K线图等&#xff0c;功能非常强大。 1、ZedGraph的官网是&#xff1a; https://sourceforge.net/projects/zedgraph/ 2、ZedGraph.CHM帮助文档 官网的链接&#xff1a; htt…

graphviz简介

前几天去杨瑞那儿玩&#xff0c;他向我介绍了一个叫graphviz的工具&#xff0c;回来之后试用了一下&#xff0c;觉得真的是很好很强大。下面简单的介绍一下这个工具。 graphviz是贝尔实验室设计的一个开源的画图工具&#xff0c;它的强大主要体现在“所思即所得"&#xff…

zedgraph控件使用

最近做一个上位机的项目&#xff0c;要求实时显示温度曲线&#xff0c;开始用.net自带的 chart控做的&#xff0c;在动态显示那块&#xff0c;在删除一个数据点、加入一个新的数据点的时候&#xff0c;新的数据点显示不出来&#xff1b;纠结好久&#xff0c;解决不了这个问题。…

ZedGraph控件常用方法和属性总结

最近在WPF使用ZedGraph控件&#xff0c;发现这个控件的功能很强大&#xff0c;据说采用了双缓冲机制来绘制图&#xff0c;只要控制好显示的帧速&#xff0c;能够显示速度较快的动态图。 参考&#xff1a;https://blog.csdn.net/qq_26093511/article/details/51329059 1、常用…

ZedGraph设置刻度轴的颜色、刻度文本颜色以及网格线的颜色

1 刻度轴的设置 本小节介绍 如何设置刻度的颜色、长度、生长方向以及将正上方的刻度隐藏掉&#xff0c;还有设置刻度文本的颜色Scale.FontSpec.FontColor。 Color axisColor Color.FromArgb(150, 150, 150);#region X轴//设置主刻度的长度this.zedGraph.GraphPane.XAxis.Majo…

ZedGraph 总论

ZedGraph 总论 ZedGraph 是一个开源的.NET图表类库&#xff0c; 并且全部代码都是用C#开发的。它可以利用任意的数据集合创建2D的线性和柱形图表。 ZedGraph的类库具有很高的灵活性。几乎图表的每个层面都可以被用户修改。同时&#xff0c;为了保证类库的易用性&#xff0c;所…

ZedGraph做统计

下载ZedGraph.dll,在工具箱添加 &#xff0c;然后将空间拖入界面&#xff0c;&#xff0c; ZedGraph.dll下载地址 &#xff1a; http://download.csdn.net/detail/happy09li/4276410 参考资料 点击打开链接 private void Form9_Load(object sender, EventArgs e){DataTable …

ZedGraph使用(一) 柱形图

ZedGraph使用&#xff08;一&#xff09; 柱形图 作者&#xff1a;Kevin 日期&#xff1a; 2008-12-04 QQ:475762235 关键字&#xff1a;ZedGraph、柱形图、统计图、C#、绘图、绘图控件、WebFrom 内容摘要&#xff1a; ZedGraph是一个开源的控件&#xff0c;提供了用户控件和…

ZedGraph绘图

一、下载及配置 下载ZedGraph 官网下载地址 http://sourceforge.net/projects/zedgraph/files/ 添加 ZedGraph.dll 和ZedGraph.Web.dll的引用 在控件库中添加ZedGraph控件 右键点击工具箱 - 选择项 - .Net Framework 组件 - 浏览 - 找到ZedGraph.dll 和ZedGraph.Web.d…

ZedGraph类库之基本教程篇

第一部分&#xff1a;基本教程篇 ZedGraphDemo中一共有9个基本教程的例子。其中大部分都类似&#xff0c;我会讲解其中一些比较典型的例子。把ZedGraph类库的使用逐步展现给大家。 第一节&#xff1a; InitialSampleDemo.cs这个文件 http://blog.csdn.net/tjvictor/archive/20…

ZedGraph使用经验

ZedGraph资源 ZedGraph来源&#xff1a;http://sourceforge.net/project/showfiles.php?group_id114675 ZedGraph 相关例子资源&#xff1a;http://zedgraph.org/wiki/index.php?titleSample_Graphs ZedGraph的特点&#xff1a; 第一&#xff0c;可以先生成图片后再显示&…

C#zegraph用法

一、引用using ZedGraph; 在资源管理器中点击引用&#xff0c;将ZedGraph.dll添加到工程项目中。 二、添加zedGraphControl控件 在工具箱的常规项目右击添加选择项&#xff0c;浏览zedgraph.dll 二、基本图、直方图、折线图、圆饼图 三、zedgraph相关属性 classDescrip…

ZedGraph 绘制动态曲线

文章目录 前言&#xff1a;开发环境&#xff1a;1 下载ZedGraph 控件并设置图形界面2 功能实现3 需求升级4 小结 话不多数&#xff0c;先上一个效果图&#xff1a; 前言&#xff1a; 需要采集一些设备的数据以图表的形式展示出来&#xff0c;研究数据的走向是否平稳&#xff0…

ZedGraph如何显示鼠标附近的曲线的点?介绍三种方法

使用ZedGraph绘制曲线图的时候&#xff0c;不仅仅是看曲线的走向&#xff0c;也需要查看曲线上某位位置处采集到的数据是多少。下面介绍三种方法&#xff0c;从简单到复杂。 文章目录 1、使用自带的功能显示点的坐标2、 多条曲线的坐标点同时显示3、 多条曲线的坐标点同时显示…

开源框架ZedGraph的使用

.Net的绘图控件ZedGraph的使用 ZedGraph 是一个开源的.NET图表类库&#xff0c; 全部代码都是用C#开发的。它可以利用任意的数据集合创建2D的线性和柱形图表 我们一般不直接使用ZedGraphControl对象&#xff0c;而是使用它的面板对象来进行操作&#xff0c;这里我们将它的面板…

redis解决高并发问题,如商品秒杀

redis真的是一个很好的技术&#xff0c;它可以很好的在一定程度上解决网站一瞬间的并发量&#xff0c;例如商品抢购秒杀等活动。。。 redis之所以能解决高并发的原因是它可以直接访问内存&#xff0c;而以往我们用的是数据库(硬盘),提高了访问效率,解决了数据库服务器压力。 …