C#下MSchart的应用总结
【WinForm】MSChart主要属性
一、绘图区域ChartAreas
在一个Chart控件中可增加多个绘图区域,每个绘图区域包含独立的图表组、数据源,可用于多个图表类型。
1.AlignmentOrientation:图表区对齐方向,定义两个绘图区域间的对齐方式,默认为Vertical。
2.AlignmentStyle:图表区对齐类型,定义图表间用以对其的元素。
3.AlignWithChartArea:参照对齐的绘图区名称。
4.InnerPlotPosition:图表在绘图区内的位置属性。
a.Auto:是否自动对齐。
b.Height:图表在绘图区内的高度(百分比,取值在0-100)
c.Width:图表在绘图区内的宽度(百分比,取值在0-100)
d.X,Y:图表在绘图区内左上角坐标
5.Position:绘图区位置属性,选项如同InnerPlotPosition。
6.Name:绘图区名称。
7.Axes:坐标轴集合-非常重要的部分,可分别设置X轴(X axis),Y轴(Y axis),第二X轴(SecnondaryX axis)和第二Y轴(Secnondary Y axis),常用的属性包括:
a.ArrowStyle设置坐标轴是否有箭头
b.Interval:轴刻度间隔大小
c.IntervalOffset:轴刻度偏移量大小
d.LableStyle 设置坐标轴的文字大小等
e.MajorGrid:主要辅助线
f.MajorTickMark:主要刻度线
g.MinorTickMark:次要刻度线
h.MinorGrid:次要辅助线
i.Title:坐标轴标题
j.TitleAlignment:坐标轴标题对齐方式
二、数据系列Series
Series:最重要的属性,图表集合,就是最终看到的饼图、柱状图、线图、点图等构成的合;可以将多种相互兼容的类型放在一个绘图区域内,形成复合图。
1.ChartArea:图表所属的绘图区域名称
2.ChartType:图表类型(柱形、饼形、线形、点形等)
3.IsValueShownAsLabel:是否显示数据点标签,如果为true,在图表中显示每一个数据值
4.Label:数据点标签文本
5.LabelFormat:数据点标签文本格式
6.LabelAngle:标签字体角度
7.Legend:当前数据系列(图表)使用的图例名称
8.Name:数据系列的名称
9.Palette:数据系列(图表)外观定义
10.Points:数据点集合,构成数据系列的点
11.XValueMember:横坐标绑定的数据源
12.XValueType:横坐标轴类型
13.YValueMembers:纵坐标绑定的数据源
14.YValueType:纵坐标轴类型
三、图例Legends
MSChart的图例默认不显示,但可进行如下设置:
1.Alignment:对齐方式
2.AutoFitMinFontSize:当IsTextAutoFit为true时,显示的最小字体
3.BackColor:背景颜色,当本身的绘图区域有背景时,将其设置为transparent效果更佳。
4.enabled:是否显示图例
5.IsTextAutoFit:文字大小根据图例区域的大小自动调整
6.Position:图例出现的位置
从图中可以看到一个chart可以绘制多个ChartArea,每个ChartArea都可以绘制多条Series。ChartArea就是就是绘图区域,可以有多个ChartArea叠加在一起,series是画在ChartAarea上的,Series英文意思是“序列、连续”,其实就是数据线,它可以是曲线、点、柱形、条形、饼图...可以注意该chart当数据非常多的时候可以通过鼠标选择查看区域,进一步拖拽横纵向滚动条来缩小曲线图查看。
一、数据源:
数据返回方式是DataSet.Tables[0],即DataTable,也是最基本的数据源方式。这里只介绍DataTable绑定数据源,很简单:
chartData.DataSource = dt;
chartData.DataBind();
二、Series:
Series是画在ChartArea上的线、点、柱形、条形、饼图,简单点儿说就是画在上面的数据,直接说属性,
1. “标记”:就是数据点,某个数据值的点。如下图所示:
3. “Font”:数据标签上的字体和样式
Font 标签字体设置
Font.Unit 个人设置此值为Document,自己体会
LabelAngle 标签角度,斜多少度,建议就正着
LabelBackColor 标签背景颜色
LabelBorderColor 标签边框颜色
LabelBorderDahStyle 标签边框样式
LabelBorderWidth 标签边框宽度
LabelForeColor 标签字体颜色
其他属性自己试
4、空白点(EmptyPointStyle):就是连续的数据,譬如X轴对应Y轴没数据,或Y轴对应X轴没数据,这样的数据点可以对其设置相应的属性;
5、数据源:注意这里是Series的数据源(XValueMember、YValueMembers)
注意:
第一,这两个属性对应的是DataTable的两个列,也就是一般的X轴对应时间,Y轴对应数据值,但是也要注意对DataTable的每个数据单元的值做判断,尤其是DBNull或空。我这里的数据库的NewDateTime列数据类型是DateTime类型,NewFyj是Double类型。
第二,Series的数据源和Chart控件的数据源有区别,只有DataTable先绑定了Chart,Series才对应到列,否则无法对应。
6. 图表(ChartArea):也就是Serie画在哪个ChartArea上,ChartType是Serie的图表类型,也就是画何种图,曲线图、直线图、点、柱状图、饼图等...
7. 图例(Legend):也就是每个Serie的名字和样式,只要创建Serie就会自动产生加载在Legend里,里面的属性可以试一下,如果想调整Legend的位置,可以去Legend集合里设置,比较简单,这里不多说
8. 映射区(TooTip):鼠标放在数据点上出现的小提示,建议用代码控制;
9. 杂项: EmptyPointValue:空数据点的值做平均还是做零处理
LabelStyle: 对标签硬性的规定显示在数据点旁的哪个位置
10. 轴:也就是X轴和Y轴,X轴有主轴和副轴,Y轴也有主轴和副轴,主轴为Primary,副轴为Secondary。X主轴在下方,Y主轴在右方,X副轴在上方,Y副轴在右方。
三、ChartAreas:
Chart控件里最重要的,每个Serie都画在ChartArea上,Chart控件可以有多个ChartArea叠加在一起显示。比如第一个ChartArea绘制的是曲线,第二个画的柱状图或者是别的,这也是上面说过的Serie的ChartType,我们也可以把多个Serie画在一个ChartArea上,但是如果有一个列数据单位范围在500~10000之间的数据浮动最大,有一列数据单位范围在0.1~2.0之间,有一列数据单位范围在50~100之间,那画在同一个ChartArea上显示的话,0.1到2.0的数据会变成一条直线。当只有1、2条这样的数据时,可以在Serie中设置主轴和副轴,但当出现多条数据,多种类型的显示,就需要多个ChartArea来解决了。
1. 对齐:ChartArea对齐方式;
AlignmentOrientation水平对齐、垂直对齐、全部对齐
AlignmentStyle 根据哪种方式对齐 AlignmentWithChartArea和哪个对齐
2. 三维(Area3DStyle):自己试试,效果很沉重,不是很好;
3. 外观:可以对ChartArea颜色、边框、位置的设置;
注意:
第一,InnerPlotPosition和Position一个是大的,一个是内部绘制的,试一下就明白了,这里最重要的是多个ChartArea重叠在一起的时候,两个Position一定要设置相同,否则就重叠不上了。
第二,多个ChartArea重叠在一起的时候,颜色或图片只能在叠在最底下的ChartArea来设置,上面的ChartArea都设置为透明即可,最底下的ChartArea是ChartAreas[0],所以不要设置错。
4. 游标:CursorX和CursorY,就是横向和纵向滚动条, 首先强调一下,只要想选择区域细看曲线图,就一定要启用游标,游标的设置只能在叠加在最上面的ChartArea进行设置,也就是ChartArea[ChartArea.Count-1],X轴和Y轴上都可以有游标,可以拖动,可以注意看有个按钮上面有个圆圈,就是向后退,滑动用户选择的区域,松开鼠标就会变成该区域的图形;
5. 轴Axes!!:非常重要,一个ChartArea有4个轴:主轴X axis、主轴Y(Value)axis、副轴X axis、副轴Y(Value)axis,每个轴属性均相同;属性:标签、间隔(Interval)、标题、数据视图(ScaleView)、滑动条(ScrollBar),外观、网络刻度线等;
注意: ScaleView是数据视图,也就是当前绘制出图表的一个区域,如果用鼠标选择某个区域展开显示,新展开的就又是一个ScaleView,只把它想成当前显示的视图就好理解了。ScrollBar就是游标,之前我们说的ChartArea.CursorX或Y是也是游标,这里的ScrollBar是滚动条,仔细看两者的属性不难发现,一个是选择区域,一个是拖拽滚动条查看所有数据。