在用到图表展示某项、多项信息的统计情况,很正常联想到MSChart控件。
        以VS2008开发为例,在工具箱也中右击,选择”choose items“,打开对话框,选择COM组件Tab页,勾选上Microsoft Chart Control,  version 6.0(OLEDB),然后在窗体中拖入此控件即可(默认名称为Chart1)。
        关键的难点有对MSChart赋值,X、Y轴划分刻度以及生产图例。下面结合开发实例,稍作总结下:
标题设置:this.Chart1.Title.Text = "tableName";
图例设置:for (int c = 1; c < iCount + 1; c++)
                            this.Chart1.Plot.SeriesCollection[Convert.ToInt16(c)].LegendText = legend[c - 1];
                  this.Chart1.ShowLegend = true;
注:图例的下标从1开始
图表类型的选择:this.Chart1.chartType = VtChChartType.VtChChartType2dBar;(VtChChartType2dPie/VtChChartType2dLine)
图表内容绑定:this.Chart1.ChartData = arrResult;(一维数组、二维数组)
X、Y轴显示值间距:
            Chart1.ChartAreas["ChartArea1"].AxisX.Interval = 1.0;
//X轴数据显示间隔
            Chart1.ChartAreas["ChartArea1"].AxisX.IntervalType = DateTimeIntervalType.Days;
           Chart1.ChartAreas["ChartArea1"].AxisX.IntervalOffset = 0.0;
            Chart1.ChartAreas["ChartArea1"].AxisX.IntervalOffsetType = DateTimeIntervalType.Days;
            Chart1.ChartAreas["ChartArea1"].AxisX.LabelStyle.Format = "M-d";
            Chart1.ChartAreas["ChartArea1"].AxisY.Interval = 200;//y轴数据显示间隔

贴一张统计的效果图:


网络查找的其他关于MSChart的属性方法资料:

最常用的属性包括

ChartAreas:增加多个绘图区域,每个绘图区域包含独立的图表组、数据源,用于多个图表类型在一个绘图区不兼容时。

AlignmentOrientation:图表区对齐方向,定义两个绘图区域间的对齐方式。

AlignmentStyle:图表区对齐类型,定义图表间用以对其的元素。

AlignWithChartArea:参照对齐的绘图区名称。

InnerPlotPosition:图表在绘图区内的位置属性。

Auto:是否自动对齐。

Height:图表在绘图区内的高度(百分比,取值在0-100)

Width:图表在绘图区内的宽度(百分比,取值在0-100)

X,Y:图表在绘图区内左上角坐标

Position:绘图区位置属性,同InnerPlotPosition。

Name:绘图区名称。

Axis:坐标轴集合

Title:坐标轴标题

TitleAlignment:坐标轴标题对齐方式

Interval:轴刻度间隔大小

IntervalOffset:轴刻度偏移量大小

MinorGrid:次要辅助线

MinorTickMark:次要刻度线

MajorGrid:主要辅助线

MajorTickMark:主要刻度线

DataSourceID:MSChart的数据源。

Legends:图例说明。

Palette:图表外观定义。

Series:最重要的属性,图表集合,就是最终看到的饼图 pie、柱状图 Column 、线图 line、点图 point ,雷达图 Radar ,

极坐标图 Polar。锥形图 ChartType="Pyramid" 等构成的集合;可以将多种相互兼容的类型放在一个绘图区域内,形成复合图。

IsValueShownAsLabel:是否显示数据点标签,如果为true,在图表中显示每一个数据值

Label:数据点标签文本

LabelFormat:数据点标签文本格式

LabelAngle:标签字体角度(有时候如果 标签过多,这个值可以设置为-30  或30)

Name:图表名称

Points:数据点集合

XValueType:横坐标轴类型

YValueType:纵坐标轴类型

XValueMember:横坐标绑定的数据源(如果数据源为Table,则填写横坐标要显示的字段名称)

YValueMembers:纵坐标绑定的数据源(如果数据源为Table,则填写纵坐标要显示的字段名称,纵坐标可以有两个)

ChartArea:图表所属的绘图区域名称

ChartType:图表类型(柱形、饼形、线形、点形等)

Legend:图表使用的图例名称

Titles:标题集合。

width:MSChart的宽度。

height:MSChart的高度。

案例代码。1 四象限图

	<chartareas>
<asp:chartarea Name="ChartArea1" BorderColor="64, 64, 64, 64" BorderDashStyle="Solid" BackSecondaryColor="White" BackColor="Gainsboro" ShadowColor="Transparent" BackGradientStyle="TopBottom">
<area3dstyle Rotation="10" 旋转角度 perspective="10" Inclination="15" IsRightAngleAxes="False" wallwidth="0" IsClustered="False" ></area3dstyle>
<axisy linecolor="64, 64, 64, 64" IsLabelAutoFit="False" IsStartedFromZero="false" Crossing="8" y轴原点位置>
<labelstyle font="Trebuchet MS, 8.25pt, style=Bold" />
<majorgrid linecolor="64, 64, 64, 64" Enabled="false" />
</axisy>
<axisx linecolor="64, 64, 64, 64" IsLabelAutoFit="False" IsStartedFromZero="false" 是否从0点开始 Interval="auto" Minimum="70"X轴最小显示 Crossing="90" X轴原点位置 >
<labelstyle font="Trebuchet MS, 8.25pt, style=Bold" />
<majorgrid linecolor="64, 64, 64, 64" Enabled="false" 是否启用网格/>
</axisx>
</asp:chartarea>
</chartareas>

设置最大值和最小值不同颜色演示

 // Find point with maximum Y value and change color
if (Chart_TJ.Series[0].Points.Count > 2)
{
DataPoint maxValuePoint = Chart_TJ.Series[0].Points.FindMaxByValue();
maxValuePoint.Color = Color.Red; // Find point with minimum Y value and change color
DataPoint minValuePoint = Chart_TJ.Series[0].Points.FindMinByValue();
minValuePoint.Color = Color.Orange;
}
private void Page_Load(object sender, System.EventArgs e)
{
// Resolve the address to the Access database
string fileNameString = this.MapPath(".");
fileNameString += "..\\..\\..\\data\\chartdata.mdb"; // Initialize a connection string
string myConnectionString = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileNameString; // Define the database query
string mySelectQuery="SELECT * FROM REPSALES;"; // Create a database connection object using the connection string
OleDbConnection myConnection = new OleDbConnection(myConnectionString); // Create a database command on the connection using query
OleDbCommand myCommand = new OleDbCommand(mySelectQuery, myConnection); // Open the connection
myCommand.Connection.Open(); // Create a database reader
OleDbDataReader myReader = myCommand.ExecuteReader(CommandBehavior.CloseConnection); // Data bind chart to a table where all rows are grouped in series by the "Name" column
Chart1.DataBindCrossTable(
myReader,
"Name",
"Year",
"Sales",
"Label=Commissions{C}"); // Close the reader and the connection
myReader.Close();
myConnection.Close(); }

// Set series appearance
   MarkerStyle marker = MarkerStyle.Star4;  这里要注意。线条超过9 的话,最多9个Star。marker.Star 要null下。
   foreach(Series ser in Chart1.Series)
   {
    ser.ShadowOffset = 2;
    ser.BorderWidth = 3;
    ser.ChartType = SeriesChartType.Line;
    ser.MarkerSize = 12;
    ser.MarkerStyle = marker;
    ser.MarkerBorderColor = Color.FromArgb(64, 64, 64);
    ser.Font = new Font("Trebuchet MS", 8, FontStyle.Bold);
    marker++;
   }

常用事件:

数据绑定方式1

Chart1.Series[0].Points.AddXY(zhiBiaoDt.Rows[i]["TargetName"].ToString(), zhiBiaoDt.Rows[i]["BenDanweiScore"].ToString());
                Chart1.Series[0].Points[i - 1].ToolTip = zhiBiaoDt.Rows[i]["BenDanweiScore"].ToString();

Chart1.Series[1].Points.AddXY(zhiBiaoDt.Rows[i]["TargetName"].ToString(), zhiBiaoDt.Rows[i]["QiTaDanweiScore"].ToString());
                Chart1.Series[1].Points[i - 1].ToolTip = zhiBiaoDt.Rows[i]["QiTaDanweiScore"].ToString();

//绑定统计报表    添加属性
            Chart_TJ.Series[0].Name = company;
            Chart_TJ.Series[0].ChartType = SeriesChartType.Radar;  
            Chart_TJ.Series[0].IsValueShownAsLabel = false;
          //  Chart_TJ.Series[0].IsVisibleInLegend = false;
            Legend leg = new Legend(); 添加图例
            leg.BackColor = Chart_TJ.Series[0].Color;
            leg.Name = company;
            Chart_TJ.Legends.Add(leg);

Chart1.Series[0]["DrawingStyle"] = "Cylinder";   圆柱(圆柱体)风格

Chart1.Series[1]["DrawingStyle"] = "Cylinder";

Chart2.Series[0]["LabelStyle"] ="Bottom"; 数据标签位置  有left right  toplefp bottomleft  bottomrigth ……
            Chart2.Series[1]["LabelStyle"] = "Bottom";

Series1.Points.DataBind()
绑定数据点集合,如果要在一个MSChart控件的一个绘图区(ChartArea)内添加多个不同数据源的图表,就用这个主动绑定数据集合的方法。可以将表中指定字段的值绑定到指定的坐标轴上。

MSChart1.DataBind()
给整个MSChart绑定一个数据源,该MSChart中的图表全部可以使用该数据源作为统计来源。

注意。给图绑定数据时候,数据类型尽量统一。不要一个是x字符型 Y decimal  。

MSChart使用小结的更多相关文章

  1. 从零开始编写自己的C#框架(26)——小结

    一直想写个总结,不过实在太忙了,所以一直拖啊拖啊,拖到现在,不过也好,有了这段时间的沉淀,发现自己又有了小小的进步.哈哈...... 原想框架开发的相关开发步骤.文档.代码.功能.部署等都简单的讲过了 ...

  2. Python自然语言处理工具小结

    Python自然语言处理工具小结 作者:白宁超 2016年11月21日21:45:26 目录 [Python NLP]干货!详述Python NLTK下如何使用stanford NLP工具包(1) [ ...

  3. java单向加密算法小结(2)--MD5哈希算法

    上一篇文章整理了Base64算法的相关知识,严格来说,Base64只能算是一种编码方式而非加密算法,这一篇要说的MD5,其实也不算是加密算法,而是一种哈希算法,即将目标文本转化为固定长度,不可逆的字符 ...

  4. iOS--->微信支付小结

    iOS--->微信支付小结 说起支付,除了支付宝支付之外,微信支付也是我们三方支付中最重要的方式之一,承接上面总结的支付宝,接下来把微信支付也总结了一下 ***那么首先还是由公司去创建并申请使用 ...

  5. iOS 之UITextFiled/UITextView小结

    一:编辑被键盘遮挡的问题 参考自:http://blog.csdn.net/windkisshao/article/details/21398521 1.自定方法 ,用于移动视图 -(void)mov ...

  6. K近邻法(KNN)原理小结

    K近邻法(k-nearst neighbors,KNN)是一种很基本的机器学习方法了,在我们平常的生活中也会不自主的应用.比如,我们判断一个人的人品,只需要观察他来往最密切的几个人的人品好坏就可以得出 ...

  7. scikit-learn随机森林调参小结

    在Bagging与随机森林算法原理小结中,我们对随机森林(Random Forest, 以下简称RF)的原理做了总结.本文就从实践的角度对RF做一个总结.重点讲述scikit-learn中RF的调参注 ...

  8. Bagging与随机森林算法原理小结

    在集成学习原理小结中,我们讲到了集成学习有两个流派,一个是boosting派系,它的特点是各个弱学习器之间有依赖关系.另一种是bagging流派,它的特点是各个弱学习器之间没有依赖关系,可以并行拟合. ...

  9. scikit-learn 梯度提升树(GBDT)调参小结

    在梯度提升树(GBDT)原理小结中,我们对GBDT的原理做了总结,本文我们就从scikit-learn里GBDT的类库使用方法作一个总结,主要会关注调参中的一些要点. 1. scikit-learn ...

随机推荐

  1. 64_s3

    sugar-toolkit-gtk3-devel-0.110.0-2.fc26.i686.rpm 13-Feb-2017 10:56 22626 sugar-toolkit-gtk3-devel-0. ...

  2. React 16 源码瞎几把解读 【三 点 一】 把react组件对象弄到dom中去(矛头指向fiber,fiber不解读这个过程也不知道)

    一.ReactDOM.render 都干啥了 我们在写react的时候,最后一步肯定是 ReactDOM.render( <div> <Home name="home&qu ...

  3. discuz伪静态设置

        Discuz! 通用伪静态 -包含所有类型主机本人找了一下午才找到的,谢谢这位原创者,发出来让大家用. 第一步:打开后台  全局 SEO设置 全部打勾<ignore_js_op>  ...

  4. Shp上传至Oracle Spatial

    1.下载shp2sdo,将shp文件拷贝至shp2sdo相同路径下,打开windows命令窗口,执行: shp2sdo shp文件名 表名 -i id -s 4326 -d 例如:shp2sdo ci ...

  5. 【转载】OpenMAXIL介绍与其体系

    1 OpenMAX IL介绍与其体系 这一部分的文档描述 OpenMAX IL的特性与体系. 1.1 OpenMAX IL 简述 OpenMAX IL 软件接口层定义了一套API,用于访问系统中的组件 ...

  6. 15、Spark Streaming源码解读之No Receivers彻底思考

    在前几期文章里讲了带Receiver的Spark Streaming 应用的相关源码解读,但是现在开发Spark Streaming的应用越来越多的采用No Receivers(Direct Appr ...

  7. Windows 8.1 操作系统常用快捷键

    安装了 windows 8.1 有一段时间了,刚使用时有点儿不太习惯,后面知道了一些常用快捷键后,使用起来习惯多了.下面是一些常用的 Windows 8.1 快捷键: Ctrl + Tab: 访问所有 ...

  8. 【C#】编码史记

    计算机中的字是如何处理的? 如果你用放大镜看一下,可以看出屏幕上的字是由一个一个的像素点组成的,每一个字符用一组像素点拼接出来,这些像素点组成一幅图像,变成了我们的文字,计算机又是如何将我们的文字保存 ...

  9. OOD沉思录 --- 继承

    一,继承只应被用来为特化层次结构建模 实际上也就是要满足LSP原则,水果类<-榴莲的继承是特化   二,派生类必须知道他们的基类,基类不应当知道他们的派生类   复用的前提   三,基类中的所有 ...

  10. IDA问题相关

    1.当想使用F5时出现“please position the cursor within a function”,那么就创建函数,但是创建时出现“The function has undefined ...