如何画点图和柱状图

diasuler 2008-03-25 02:05:12
用c#怎么画点图跟柱状图,然后再输出为jpg文件
...全文
181 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
FantasyFreed 2008-03-25
  • 打赏
  • 举报
回复
用ZedGraph控件,用1.1和2.0版本的,也有WINFORM和WEB版本的。
我用的是2.0 web版本
private void InitializeComponent()
{
this.ZedGraphWeb1.RenderGraph += new ZedGraph.Web.ZedGraphWebControlEventHandler(this.OnRenderGraph);//注册事件
this.Load += new System.EventHandler(this.Page_Load);
}

protected void Page_Load(object sender, EventArgs e)
{
string strsql = "select * from Test";
DataSet ds = dataSet(strsql);
GridView1.DataSource = ds;
GridView1.DataBind();
InitializeComponent();
}


private void OnRenderGraph(ZedGraphWeb zgw, Graphics g, MasterPane masterPane)
{
GraphPane myPane = masterPane[0];

myPane.Title.Text = "消费者学历统计"; //设计图表的标题
myPane.XAxis.Title.Text = "学历类型"; //X轴标题
myPane.YAxis.Title.Text = "人数"; //Y轴标题

PointPairList list = new PointPairList(); //初始化一个PointPariList对象,说白了就是一条曲线或一条柱子要生出来了

PointPairList list2 = new PointPairList(); //如果你要在一个图表城显示多条曲线或柱子你就可以增加一个PointPariList对像,相对应下面的 y2,List2也是这个List相关的东西了

PointPairList list3 = new PointPairList(); //原理同上


for (int x = 0; x < this.GridView1.Rows.Count; x++) //循环,x的初始值为0,最终值是我数据源中的记录总数 这里主要是gdvEdulist.Rows.Count的设定,根据你的数据源来设定
{

int careerCount = Convert.ToInt32(this.GridView1.Rows[x].Cells[1].Text.Trim());// 这个是获取所对应的每条柱子所对应的数据的文本,我是从gridvew中直接取到的



int y = careerCount;//这句就是要充的值了,将CareerCount的值都整到Y里面去了,其实你也可以直接将值赋予Y,注意,这里的Y应该代表Y轴
Random rand = new Random();
double y2 = rand.NextDouble() * 300;

double y3 = rand.NextDouble() * 300;

list.Add(x, y); // 将XY的值整到list里面存储起来


list2.Add(x, y2);
list3.Add(x, y3);
}

BarItem myCurve = myPane.AddBar("数据统计", list, Color.Green); //增加一个Bar,List里面是不是包含了(X,Y)

myCurve.Bar.Fill = new Fill(Color.Green, Color.Green, Color.Green); //将颜色直译


BarItem myCurve2 = myPane.AddBar("续费", list2, Color.Red);
myCurve2.Bar.Fill = new Fill(Color.Red, Color.White, Color.Red);
BarItem myCurve3 = myPane.AddBar("升级", list3, Color.Green);
myCurve3.Bar.Fill = new Fill(Color.Green, Color.White, Color.Green);

myPane.XAxis.MajorTic.IsBetweenLabels = true; //这个我不知道乍么解释,不好意思

string[] labels = new string[GridView1.Rows.Count];

for (int i = 0; i < this.GridView1.Rows.Count; i++) //这个循环主要是取到里面的说明文字,用了一个数组的方法
{
labels[i] = this.GridView1.Rows[i].Cells[0].Text.Trim();
}
}
using ZedGraph;
using ZedGraph.Web;
using System.Drawing;
using System.Drawing.Imaging;
using System.Data.SqlClient;

你自己写一个dataSet()方法返回DataSet
llyzcy 2008-03-25
  • 打赏
  • 举报
回复
http://bbs.bc-cn.net/thread-102356-1-1.html

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧