利用Chart控件对学生信息进行统计,最终结果如下:


Chart图形控件主要由以下几个部份组成:

1.Annotations --图形注解集合
2.ChartAreas  --图表区域集合
3.Legends      --图例集合
4.Series    --图表序列集合(即图表数据对象集合)
5.Titles   --图标的标题集合

Annotations :

Annotations是一个对图形的一些注解对象的集合,所谓注解对象,类似于对某个点的详细或者批注的说明,比如,在图片上实现各个节点的关键信息,如下图方框和黄色的小方框:

一个图形上可以拥有多个注解对象,可以添加十多种图形样式的注解对象,包括常见的箭头、云朵、矩行、图片等等注解符号,通过各个注解对象的属性,可以方便的设置注解对象的放置位置、呈现的颜色、大小、文字内容样式等常见的属性。

ChartAreas:

ChartAreas是一个Chart的绘图区,如果要在一个Chart控件上显示多张不同的图,则建立多个不同的ChartArea。

chartPie.ChartAreas.Add("ChartArea1");
chartPie.ChartAreas.Add("ChartArea2");

chartPie.ChartAreas.Add("ChartArea3");

对于每一个ChartArea,可以设置其x,y轴的属性:
columnChart.ChartAreas["ChartArea1"].AxisX.Title = "年龄";
columnChart.ChartAreas["ChartArea1"].AxisX.TextOrientation = TextOrientation.Horizontal;
columnChart.ChartAreas["ChartArea1"].AxisX.TitleAlignment = StringAlignment.Far;//命名空间System.Drawing

 //lineChart.ChartAreas["ChartArea1"].AxisY.Maximum = 1;//设置Y轴最大值
 lineChart.ChartAreas["ChartArea1"].AxisX.Minimum = min;//是在Y轴最小值
 lineChart.ChartAreas["ChartArea1"].AxisX.Maximum = 100;
 lineChart.ChartAreas["ChartArea1"].AxisX.Interval = 5;//设置每个刻度的跨度

开启3D效果:

lineChart.ChartAreas["ChartArea1"].Area3DStyle.Enable3D = true;  

Legends:

  legends是一个图例的集合,可以看成是对图中数据集合的注解,当数据较多时利用legend可分清数据指代:

  

chartPie.Legends.Add("Legend1");//实现图标注解

Series:

  图表序列,应该是整个绘图中最关键的内容了,通俗点说,即是实际的绘图数据区域,实际呈现的图形形状,就是由此集合中的每一个图表来构成的,可以往集合里面添加多个图表,每一个图表可以有自己的绘制形状、样式、独立的数据。

  需要注意的是,每一个图表,你可以指定它的绘制区域(见ChartAreas的说明),让此图表呈现在某个绘图区域,也可以让几个图表在同一个绘图区域叠加,如下图:

  上面两幅图,分别表示了把多个Series放在不同的ChartAreas和放在同一个ChartArea的情况。

  添加数据进series:

第一种:

string[] xValues = { "male", "female" };
int[] yValues = { male, female };
chartPie.Series["Pie"].Points.DataBindXY(xValues, yValues);
chartPie.Series["Pie"]["PieLabelStyle"] = "Inside";

第二种:

lineChart.Series["Series1"].Points.AddXY(XVaule,YValues);

饼状图中实现某一块分离:

chartPie.Series["Pie"].Points[]["Exploded"] = "true";

Titles:

图表的标题:

Title t = new Title("灰常好", Docking.Top, new System.Drawing.Font("Trebuchet MS", , System.Drawing.FontStyle.Bold), System.Drawing.Color.FromArgb(, , ));   lineChart.Titles.Add(t);  

其他属性:

1.ToolTip:

  当鼠标放在图形上显示信息。

columnChart.Series["Column"].ToolTip = "人数:#VAL";

2.Border:

chartPie.BorderSkin.SkinStyle = BorderSkinStyle.Emboss;
chartPie.BorderlineColor = System.Drawing.Color.FromArgb(, , );
chartPie.BorderlineDashStyle = ChartDashStyle.Solid;
chartPie.BorderlineWidth = ;

3.Label:

  Label即标签的含义,可以在图片的关键位置进行一些关键数字或文字的描述,如下图:

  像上图:X轴和Y轴的文字便是标签,以及图表曲线中的红点上的文字,也是标签,添加了标签,可以让人更容易的对内容进行理解。

chart还有许多类型:

如果你想用那个下面为你提供了一个选择。

 

成员名称

说明

 

Point

点图类型。

 

FastPoint

快速点图类型。

 

Bubble

气泡图类型。

 

Line

折线图类型。

 

Spline

样条图类型。

 

StepLine

阶梯线图类型。

 

FastLine

快速扫描线图类型。

 

Bar

条形图类型。

 

StackedBar

堆积条形图类型。

 

StackedBar100

百分比堆积条形图类型。

 

Column

柱形图类型。

 

StackedColumn

堆积柱形图类型。

 

StackedColumn100

百分比堆积柱形图类型。

 

Area

面积图类型。

 

SplineArea

样条面积图类型。

 

StackedArea

堆积面积图类型。

 

StackedArea100

百分比堆积面积图类型。

 

Pie

饼图类型。

 

Doughnut

圆环图类型。

 

Stock

股价图类型。

 

Candlestick

K 线图类型。

 

Range

范围图类型。

 

SplineRange

样条范围图类型。

 

RangeBar

范围条形图类型。

 

RangeColumn

范围柱形图类型。

 

Radar

雷达图类型。

 

Polar

极坐标图类型。

 

ErrorBar

误差条形图类型。

 

BoxPlot

盒须图类型。

 

Renko

砖形图类型。

 

ThreeLineBreak

新三值图类型。

 

Kagi

卡吉图类型。

 

PointAndFigure

点数图类型。

 

Funnel

漏斗图类型。

 

Pyramid

棱锥图类型。

Click Event:


当点击饼状图或柱状图中的某一部分数据时,将弹出Gridview显示对应索引的数据:

protected void chartPie_Click(object sender, ImageMapEventArgs e)
{
GridView1.Visible = true;
string[] input = e.PostBackValue.Split(':');
if (input.Length == )//PAGE_LOAD里面传的二个参数,Series名字和索引
{
string[] seriesData = input[].Split(',');
Series s = this.chartPie.Series[seriesData[]];//获取点击的Series,Series集合命名空间:using System.Web.UI.DataVisualization.Charting;
//string m = s.Points[int.Parse(seriesData[1])].XValue.ToString();
string m = seriesData[].ToString();
string sql = "select * from users where Sex = '" + m + "'";
DataTable dt = DBHelper.GetDataSet(sql);
GridView1.DataSource = dt;
GridView1.DataBind();
}
}

在Page_Load里加如下代码:

this.chartPie.Click += new ImageMapEventHandler(chartPie_Click);
foreach (Series series in this.chartPie.Series)
  {
  series.PostBackValue = "Column:" + series.Name + ",#VALX";
  }

页首第三个图的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Data;
using System.Web.UI.DataVisualization.Charting; public partial class chartLine : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string sql = "select * from users";
Dictionary<double, int> chinese = new Dictionary<double, int>();
Dictionary<double, int> math = new Dictionary<double, int>();
Dictionary<double, int> english = new Dictionary<double, int>();
SqlDataReader dr = DBHelper.GetReader(sql);
while (dr.Read())
{
if (chinese.ContainsKey(Convert.ToDouble(dr["chinese"])))
{
chinese[Convert.ToDouble(dr["chinese"])]++;
}
else
{
chinese.Add(Convert.ToDouble(dr["chinese"]), );
}
if (math.ContainsKey(Convert.ToDouble(dr["math"])))
{
math[Convert.ToDouble(dr["math"])]++;
}
else
{
math.Add(Convert.ToDouble(dr["math"]), );
}
if (english.ContainsKey(Convert.ToDouble(dr["english"])))
{
english[Convert.ToDouble(dr["english"])]++;
}
else
{
english.Add(Convert.ToDouble(dr["english"]), );
}
}
dr.Close();
bool flag = false;
int min = ;
int i = ;
for (i =; i < ; i++)
{
if (chinese.ContainsKey(Convert.ToDouble(i)))
{
lineChart.Series["Chinese"].Points.AddXY(Convert.ToDouble(i),chinese[Convert.ToDouble(i)]);
flag = true;
}
if (math.ContainsKey(Convert.ToDouble(i)))
{
lineChart.Series["Math"].Points.AddXY(Convert.ToDouble(i), math[Convert.ToDouble(i)]);
flag = true;
}
if (english.ContainsKey(Convert.ToDouble(i)))
{
lineChart.Series["English"].Points.AddXY(Convert.ToDouble(i), english[Convert.ToDouble(i)]);
flag = true;
}
if (!flag)
{
min = i;
} }
//lineChart.ChartAreas["ChartArea1"].AxisY.Maximum = 1;//设置Y轴最大值
lineChart.ChartAreas["ChartArea1"].AxisX.Minimum = min;//是在Y轴最小值
lineChart.ChartAreas["ChartArea1"].AxisX.Maximum = ;
lineChart.ChartAreas["ChartArea1"].AxisX.Interval = ;//设置每个刻度的跨度 lineChart.Legends.Add("Legend1"); lineChart.ChartAreas["ChartArea1"].Area3DStyle.Enable3D = true; //给图表添加标题
Title title = new Title();
title.Text = "学生成绩分析表";
lineChart.Titles.Add(title); //修改图例名称
lineChart.Series["Chinese"].LegendText = "语文";
lineChart.Series["Math"].LegendText = "数学";
lineChart.Series["English"].LegendText = "英语"; //设置每个数据点标签显示在图表上
lineChart.Series["Math"].Label = "#VAL"; //为每个数据点添加提示信息,同PreRender函数
lineChart.Series["Math"].ToolTip = "#VALX" + "," + "#VAL"; }
protected void lineChart_PreRender(object sender, EventArgs e)
{
//为每个点添加提示信息
for (int i = ; i < lineChart.Series["Chinese"].Points.Count; i++)
{
lineChart.Series["Chinese"].Points[i].ToolTip = "#VAL" + "," + "#VALX";
} }
}

学习中大致参考以下链接:

Chart基本介绍

http://blog.csdn.net/lzq7419/article/details/7693491

Chart的多种用法

http://blog.csdn.net/freeman127/article/details/4437268

http://blog.csdn.net/freeman127/article/details/4437461

Chart属性介绍

http://blog.csdn.net/zfyong/article/details/6049566

MS Chart 学习心得的更多相关文章

  1. windows类书的学习心得(转载)

    原文网址:http://www.blogjava.net/sound/archive/2008/08/21/40499.html 现在的计算机图书发展的可真快,很久没去书店,昨日去了一下,真是感叹万千 ...

  2. css3 3d学习心得

    css3 3d学习心得 卡片反转 魔方 banner图 首先我们要学习好css3 3d一定要有一定的立体感 通过这个图片应该清楚的了解到了x轴 y轴 z轴是什么概念了. 首先先给大家看一个小例子: 卡 ...

  3. windows类书的学习心得

    原文网址:http://www.blogjava.net/sound/archive/2008/08/21/40499.html 现在的计算机图书发展的可真快,很久没去书店,昨日去了一下,真是感叹万千 ...

  4. 我的MYSQL学习心得(一) 简单语法

    我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...

  5. 我的MYSQL学习心得(二) 数据类型宽度

    我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...

  6. 我的MYSQL学习心得(三) 查看字段长度

    我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...

  7. 我的MYSQL学习心得(四) 数据类型

    我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(五) 运 ...

  8. 我的MYSQL学习心得(五) 运算符

    我的MYSQL学习心得(五) 运算符 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据 ...

  9. 我的MYSQL学习心得(六) 函数

    我的MYSQL学习心得(六) 函数 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类 ...

随机推荐

  1. Fidder 工具使用

    Fiddler是最强大最好用的Web调试工具之一,它能记录所有客户端和服务器的http和https请求,允许你监视,设置断点,甚至修改输入输出数据. 使用Fiddler无论对开发还是测试来说,都有很大 ...

  2. SQL Server 查看对象的权限

    例子 1. 查看登录名 loginA的权限: create login loginA with password = '123456'; go use studio; create user logi ...

  3. android 自定义控件,自定义属性设置

    做listView的上拉下拉刷新,网上找了个历程.但是有些界面只有上拉刷新,有些界面是下拉刷新.觉得应该在xml里定义一个属性控制上下拉使能. 0.关于自定义控件: 自定义控件设计主要方式有:a) 继 ...

  4. JS---DOM概述

    DOM DOM:文档对象模型document object model DOM三层模型: DOM1:将HTML文档封装成对象 DOM2:将XML文档封装成对象 DOM3:将XML文档封装成对象 DOM ...

  5. startup_LPC17XX.s 启动文件分析

    工程中startup_LPC17XX.s是M3的启动文件,启动文件由汇编语言写的,它的作用一般是下面这几个: 1)堆和栈的初始化 2)中断向量表定义 3)地址重映射及中断向量表的转移 4)设置系统时钟 ...

  6. oracle解锁表

    select b.owner,b.object_name,a.session_id,a.locked_mode,c.serial#,c.sid||','||c.serial# from v$locke ...

  7. JS isArray记录

    var isArray=Function.isArray||function(0){ return typeof o === "object" && Object. ...

  8. 保护眼睛,绿豆沙颜色的RGB值和HSL值

    现在的人尤其是职场中人,每天都得花很长时间对着电脑,对眼睛的伤害很大,其实我们可以对电脑进行一个简单的设置,把窗口背景设置成绿豆沙颜色的,对眼睛的保护很有帮助的. 下面是绿豆沙颜色的RGB值和HSL值 ...

  9. c# Linq及Lamda表达式应用经验之 GroupBy 分组

    示例1: GroupBy 分组在List<>泛型中的应用 原表: 按姓名Nam 分组后结果: 对DATATABLE 进行LAMDA查询时必须在项目的引用中添加 System.Data.Da ...

  10. Struts学习之文件上传

    * 单文件上传:        * 在动作类action中声明相关属性:            * 在动作类action中,要声明与页面中表单name属性同名的属性,同名的属性的类型是File类型:  ...