最近要做一个类似的东东,在网上找了好久,发现了下面的例子.决定一边学习一边翻译,呵呵.
Introduction
ZedGraph 是一个类库, 可以对Windows Forms的UserControl及ASP 可存取网页控制(web-accessible control)的任意数据集制作二维的线图,条形图和饼图. 这些类库为用户提供高度的自由--几乎图表的所有属性都可以依用户的爱好而修改. 同时,这些类库的使用非常简单,所有的属性都会分配一个默认值. 根据所要制的图表的数据的范围,在类库中可以选择合适尺度的程序码.
ZedGraph是一个在sourceforge上的开源的开发项目,地址为:
http://sourceforge.net/projects/zedgraph ,可以在这个网页上找到关于这个项目的Wiki(
http://zedgraph.org/wiki/index.php?title=Main_Page ), 文件说明(
http://zedgraph.sourceforge.net/documentation/index.html ), 过渡期的CVS更新资料和所有发布过的版本.
http://zedgraph.org/wiki/index.php?title=Sample_Graphs 在这个网站上可以找到一些带源码的例子, 通常是用C#或者VB开发的
5.0版本需要.NET 2.0, 不过你可以下载之前的版本, 比如4.3.5布使用.NET1.1
Background
ZedGraph 处理二维图表: 线条/离散点, 水平/垂直条形图, 堆叠式条形图, 层叠式百分比图, 错误条形(烛台式)图和饼图. 并不提供三维的面或者图形, 最近所加的一个功能是可以在ASP.NET中加入图形. 用户可以修改轴的名称,标题,图例,文本标签,箭头,图像等等,非常方便.
这篇文章是使用C#的, 如果你是VB的程序员,可以去上面的链接看一些VB的例子.
Using ZedGraph as a UserControl
下载ZedGraph,如果不想深入研究,下载只包含DLL文件的压缩包就可以了, 然后解压到硬盘某一目录.
Source Code:
private
void
Form1_Resize(
object
sender, EventArgs e)
... { SetSize(); } // 当改变窗体大小时,call SetSize()这个方法
private void SetSize() // SetSize()函数
... {
zg1.Location = new Point(10, 10);
//在图表和窗体边缘留下一点空白
zg1.Size = new Size(ClientRectangle.Width - 20, ClientRectangle.Height - 20);
//让图表充满整个窗体
}
private void Form1_Load( object sender, EventArgs e) // 当打开窗体时
... {
// 创建图表
CreateGraph(zg1);
// call SetSize()来使图表合适窗体大小
SetSize();
}
// 建立图表, 只是示例
private void CreateGraph(ZedGraphControl zgc)
... {
// 建立一个GraphPane的参考
GraphPane myPane = zgc.GraphPane;
// 确定图表的标题及轴名称
myPane.Title.Text = "My Test Graph (For CodeProject Sample)";
myPane.XAxis.Title.Text = "My X Axis";
myPane.YAxis.Title.Text = "My Y Axis";
// 在三角函数Sin()基础上创建一些数据
double x, y1, y2;
PointPairList list1 = new PointPairList();
PointPairList list2 = new PointPairList();
for (int i = 0; i < 36; i++)
...{ //可以按照自己要求写方程式
x = (double)i + 5;
y1 = 1.5 + Math.Sin((double)i * 0.2);
y2 = 3.0 * (1.5 + Math.Sin((double)i * 0.2));
list1.Add(x, y1);
list2.Add(x, y2);
}
//创建棱形标志的红色曲线, 图例名为”Porshe”(保时捷)
LineItem myCurve = myPane.AddCurve("Porsche",
list1, Color.Red, SymbolType.Diamond);
// 创建圆形标志的蓝色曲线, 图例名为”Piper”
LineItem myCurve2 = myPane.AddCurve("Piper", list2, Color.Blue, SymbolType.Circle);
//更新图表的两个轴,因为数据有改变
zgc.AxisChange();
//每当增加或者修改数据时,都要call这个方法, 它会自动调整图表中轴所表示的值的范围
}
... { SetSize(); } // 当改变窗体大小时,call SetSize()这个方法
private void SetSize() // SetSize()函数
... {
zg1.Location = new Point(10, 10);
//在图表和窗体边缘留下一点空白
zg1.Size = new Size(ClientRectangle.Width - 20, ClientRectangle.Height - 20);
//让图表充满整个窗体
}
private void Form1_Load( object sender, EventArgs e) // 当打开窗体时
... {
// 创建图表
CreateGraph(zg1);
// call SetSize()来使图表合适窗体大小
SetSize();
}
// 建立图表, 只是示例
private void CreateGraph(ZedGraphControl zgc)
... {
// 建立一个GraphPane的参考
GraphPane myPane = zgc.GraphPane;
// 确定图表的标题及轴名称
myPane.Title.Text = "My Test Graph (For CodeProject Sample)";
myPane.XAxis.Title.Text = "My X Axis";
myPane.YAxis.Title.Text = "My Y Axis";
// 在三角函数Sin()基础上创建一些数据
double x, y1, y2;
PointPairList list1 = new PointPairList();
PointPairList list2 = new PointPairList();
for (int i = 0; i < 36; i++)
...{ //可以按照自己要求写方程式
x = (double)i + 5;
y1 = 1.5 + Math.Sin((double)i * 0.2);
y2 = 3.0 * (1.5 + Math.Sin((double)i * 0.2));
list1.Add(x, y1);
list2.Add(x, y2);
}
//创建棱形标志的红色曲线, 图例名为”Porshe”(保时捷)
LineItem myCurve = myPane.AddCurve("Porsche",
list1, Color.Red, SymbolType.Diamond);
// 创建圆形标志的蓝色曲线, 图例名为”Piper”
LineItem myCurve2 = myPane.AddCurve("Piper", list2, Color.Blue, SymbolType.Circle);
//更新图表的两个轴,因为数据有改变
zgc.AxisChange();
//每当增加或者修改数据时,都要call这个方法, 它会自动调整图表中轴所表示的值的范围
}