C# Chart控件,chart、Series、ChartArea曲线图绘制的重要属性
http://blog.sina.com.cn/s/blog_621e24e20101cp64.html
为避免耽误不喜欢这种曲线图效果的亲们的时间,先看一下小DEMO效果图:
先简单说一下,从图中可以看到一个chart可以绘制多个ChartArea,每个ChartArea都可以绘制多条Series。ChartArea就是就是绘图区域,可以有多个ChartArea叠加在一起,series是画在ChartAarea上的,Series英文意思是“序列、连续”,其实就是数据线,它可以是曲线、点、柱形、条形、饼图...可以注意该chart当数据非常多的时候可以通过鼠标选择查看区域,进一步拖拽横纵向滚动条来缩小曲线图查看。
代码中的Chart控件的命名是chartData,数据源是dt,由于chart属性太多,不好一一解释,所以请仔细看截图,尤其重视本例用到的属性
一、数据源:
数据返回方式是DataSet.Tables[0],即DataTable,也是最基本的数据源方式。这里只介绍DataTable绑定数据源,很简单:
chartData.DataSource = dt;
chartData.DataBind();
二、Series:
Series是画在ChartArea上的线、点、柱形、条形、饼图,简单点儿说就是画在上面的数据,直接说属性,
1. “标记”:就是数据点,某个数据值的点。如下图所示:
MarkerBorderColor 数据点边框的颜色
MarkerBorderWidth 数据点边框的宽度
MarkColor 数据点的颜色
MakerSize 数据点的大小,默认值为0数据点不存在,建议代码控制
MarkerStep 数据点显示的频率
MarkerStyle 数据点的样式,可以是方块、圆圈、三角、叉子....
2. “标签”:就是现在是在数据点旁边数据值
IsValueShownAsLabel 数据值是否显示,建议代码控制
SmartLabelStyle 数据值样式
SmartLabelStyle.Enabled 直接控制可用不可用,建议不可用
SmartLabelStyle.AllowOutsidePloArea 数据值显示是否允许在外面
其他属性自己试吧
注意:如果要使用SmartLabelStyle的话,所有的数据点的值都会自动找位置显示出来,如果某一个区域数据点较多,就会直线指示;如果不用的话,数据点的值会在数据点旁边显示,不会有直线。如下图所示也可以看到AllowOutsidePlotArea的区别:
3. “Font”:数据标签上的字体和样式
Font 标签字体设置
真好看

3. 空白点:就是连续的数据,譬如X轴对应Y轴没数据,或Y轴对应X轴没数据,这样的数据点可以对其设置相应的属性,属性大多都是上面说过的,自己试一下即可
4. 数据:其实就是就是serie的名字和值类型
Name 就是唯一的名字
XvalueType X轴值类型
YValuesPerPoint 数据点的Y值数目
YValueType Y轴值类型
其他属性自己试
默认不用设置就好,主要是X轴和Y轴值类型设置的是Auto,也就是根据X轴上的值和Y轴上的值的类型自动匹配,当然手动设置的话不设错就行了。
5. 数据源:注意这里是Series的数据源
注意:
第一,这两个属性对应的是DataTable的两个列,也就是一般的X轴对应时间,Y轴对应数据值,但是也要注意对DataTable的每个数据单元的值做判断,尤其是DBNull或空。我这里的数据库的NewDateTime列数据类型是DateTime类型,NewFyj是Double类型。
第二,Series的数据源和Chart控件的数据源有区别,只有DataTable先绑定了Chart,Series才对应到列,否则无法对应。
第三,假如用户需要先查看所有数据,然后取消某几条进行数据对比,但是不需要重新查询数据,推荐赋值string.Empty实现,如下图:
6. 图表:也就是Serie画在哪个ChartArea上,ChartType是Serie的图表类型,也就是画何种图,曲线图、直线图、点、柱状图、饼图等...
7. 图例:也就是每个Serie的名字和样式,只要创建Serie就会自动产生加载在Legend里,里面的属性可以试一下,如果想调整Legend的位置,可以去Legend集合里设置,比较简单,这里不多说
8. 图表
9. 映射区:鼠标放在数据点上出现的小提示,建议用代码控制
10. 杂项
EmptyPointValue 空数据点的值做平均还是做零处理
LabelStyle 对标签硬性的规定显示在数据点旁的哪个位置
11. 轴:也就是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 和哪个对齐
老实说,没啥用,可以设置Position,一会儿在外观里会说到
2. 三维:自己试试,效果很沉重,不是很好
3. 外观:可以对ChartArea颜色、边框、位置的设置
BackColor ChartArea的背景颜色
BackGradientStyle 背景颜色的渐变方式
BackHatchStyle 背景阴影
BackImage 背景图片
BackImageAlignment 图片显示位置
BackImageTransparentColor 绘制图像时显示的颜色
BackImageWrapMode 包装模式
BackSecondaryColor ChartArea的第二背景颜色,搭配渐变用的
BorderColor 边框颜色
BorderDashStyle 边框线的样式
BorderWidth 边框宽度
ShadowColor 整个图标的背影颜色
ShadowOffset 背影偏移量
注意:
第一,InnerPlotPosition和Position一个是大的,一个是内部绘制的,试一下就明白了,这里最重要的是多个ChartArea重叠在一起的时候,两个Position一定要设置相同,否则就重叠不上了。
第二,多个ChartArea重叠在一起的时候,颜色或图片只能在叠在最底下的ChartArea来设置,上面的ChartArea都设置为透明即可,最底下的ChartArea是ChartAreas[0],所以不要设置错。
4. 游标:CursorX和CursorY,就是横向和纵向滚动条
CursorX.AutoScroll 滚动条自动滚动
CursorX.AxisType 游标作用在主轴还是副轴
CursorX.Interval 游标偏移的间隔
CursorX.IntervalOffset 游标间隔偏移量
CursorX.IntervalOffsetType 游标间隔的单位,建议Auto
CursorX.Type 游标间隔偏移量的单位,建议Auto
CursorX.IsUserEnabled 启用游标
CursorX.IsUserSelectedEnabled 启用游标选择区域
CursorX.LineColor 游标线颜色
CursorX.LineDashStyle 游标线样式
CursorX.LineWidth 游标线的宽度
CursorX.SelectionColor 游标选择区域的颜色
CursorY相同,其他属性自己试
首先强调一下,只要想选择区域细看曲线图,就一定要启用游标,游标的设置只能在叠加在最上面的ChartArea进行设置,也就是ChartArea[ChartArea.Count-1],。列了这么多属性看一下图更直观:
X轴和Y轴上有游标,可以拖动,可以注意看有个按钮上面有个圆圈,就是向后退,图中的蓝色矩形方块就是用户选择的区域,松开鼠标就会变成该区域的图形。
5. 杂项:Name,没啥好说的
6. 轴Axes!!:非常重要,一个ChartArea有4个轴:主轴X axis、主轴Y(Value)axis、副轴X axis、副轴Y(Value)axis,每个轴属性均相同,只说一个一个轴
IsLabelAutoFit 轴上的标签自动调整
LabelAutoFitMaxFontSize 轴上标签自适应字体大号
LabelAutoFitMaxFontSize 轴上标签自适应字体小号
LabelStyle.Angle 标签显示角度
LabelStyle.IsEndLabelVisible 最后一个标签是否显示
其他属性自己试
我的Interval这里设置都是NotSet,没有设置Auto,为什么,自己试就明白了。
TextOrientation 轴的标题方向
Title 轴的名字,X轴是时间轴,Title就是时间
其他属性自己试,简单
IntervalAutoMode 间隔是固定值还是随着轴变化,自己试
ScaleView 数据视图,就是当前绘制展开的图!重要!
MinSizeType 游标滚动类型
ScrollBar 滚动条
ScaleView是数据视图,也就是当前绘制出图表的一个区域,如果用鼠标选择某个区域展开显示,新展开的就又是一个ScaleView,只把它想成当前显示的视图就好理解了。
ScrollBar就是游标,之前我们说的ChartArea.CursorX或Y是也是游标,这里的ScrollBar是滚动条,仔细看两者的属性不难发现,一个是选择区域,一个是拖拽滚动条查看所有数据。
这些属性都不是重点,自己试试吧,就是外观设计
不多说了,需要网格的在这里设置就行,感觉设置完了很丑,不过各花入个眼,如下图,还不错哈
简单不说
别忘了,咱们还停留在ChartArea.Axis里呢,这仅是一个轴,有需要的别忘了设置其他的轴哦
C# Chart控件,chart、Series、ChartArea曲线图绘制的重要属性的更多相关文章
- 九、chart控件的使用(图表数据的展示)
chart属于老插件网上还有新的插件功能也更多) Chart控件是VS自带的控件,只是比较老了,功能肯定不如现在出来的某些插件强,不过对于简单的显示还是够用:那么现在来看看chart控件的使用方法: ...
- Chart控件,chart、Series、ChartArea曲线图绘制的重要属性介绍
先简单说一下,从图中可以看到一个chart可以绘制多个ChartArea,每个ChartArea都可以绘制多条Series.ChartArea就是就是绘图区域,可以有多个ChartArea叠加在一起, ...
- 使用.net 的Chart控件绘制曲线图
在进行软件开发过程中我们可能会碰到需要生成图表的情况,在.NET中以前经常用GDI去绘制,虽然效果也不错,自从.NET 4.0开始,专门为绘制图表而生的Chart控件出现了,有了它,就可以轻松的绘制你 ...
- javascript曲线图和面积图Line & Area chart控件功能及下载
Line & Area chart 控件是一款新型的.可用性极强的曲线图和面积图产品.一个您网站的访问者可以放大他感兴趣的一段区域,打开和关闭数值气球,并可显示和隐藏图表.您能创建简单.堆积. ...
- ASP.NET中的chart控件绑定SQL Server数据库
网上很多的chart控件的实例都没有绑定数据库,经过一番摸索后,终于实现了chart控件绑定数据库. 首先,在Visual Studio中建立一个网站,新建一个WebForm项目,名称为ChartTe ...
- winform Chart控件 获取鼠标处坐标值方法
Chart控件本身功能强大,应用广泛,因此其属性.方法也很多.此处介绍在很多应用中需要查看鼠标位置处坐标值的一些方法 1,调用Chart事件 GetToolTip 利用ToolTipEventArg ...
- C# chart控件绘制曲线
在.NET中以前经常用GDI去绘制,虽然效果也不错,自从.NET 4.0开始,专门为绘制图表而生的Chart控件出现了,有了它,就可以轻松的绘制你所需要的曲线图.柱状图什么的了. using Syst ...
- Chart控件的多种使用方法
花了近一周时间专门研究.net 3.5平台提供的Chart控件的使用方法,感觉该控件的功能很强大,做出的图表效果也很美观,使用方法也并不复杂.如今先讲下Chart控件的部署及一些基本使用方法. 一.安 ...
- 使用WinForm Chart控件 制作饼装,柱状,折线图
http://blog.csdn.net/dream2050csdn/article/details/53510340 chart控件的属性很多,主要用到Chart控件图表区域的属性有五个属性 1.A ...
随机推荐
- T-SQL查看数据库恢复(RESTORE)时间
WITH LastRestores AS ( SELECT DatabaseName = [d].[name] , [d].[create_date] , [d].[compatibility_lev ...
- FindBugs 入门——帮你减少代码中的bug数
FindBugs 入门 FindBugs 作用 开发人员在开发了一部分代码后,可以使用FindBugs进行代码缺陷的检查.提高代码的质量,同时也可以减少测试人员给你报的bug数. 代码缺陷分类 根据缺 ...
- union和union all用法
工作中,遇到同事之前写的oracle语句中有一个union all,并且很多地方都用到了.便在网上查了一下用法,以下是自己的理解. union (联合)将两个或者多个结果集合并. 在使用时,两个结果 ...
- Windows10 会不会成为微软的新起点?
Because if you change the way you see the world, you can change the world you see. 如果你改变看世界的方式,你就能改变 ...
- MySql access denied for user错误
MySql access denied for user错误 | 浏览:2812 | 更新:2014-11-27 11:16 MySql access denied for user错误 方法/步骤 ...
- Python学习记录day5
title: Python学习记录day5 tags: python author: Chinge Yang date: 2016-11-26 --- 1.多层装饰器 多层装饰器的原理是,装饰器装饰函 ...
- 基于Zabbix IPMI监控服务器硬件状况
基于Zabbix IPMI监控服务器硬件状况 zabbix ipmi 公司有多个分部,且机房没有专业值班,机房等级不够.在这种情况下,又想实时监控机房环境,于是使用IPMI方式来达到目的.由于之前已经 ...
- java设计模式之策略模式
策略模式 定义了算法家族,分别封装起来,让它们之间可以相互替换,此模式让算法的变化,不会影响到使用算法的客户(大话设计模式). 策略模式UML图 策略模式代码 古代的各种计谋都是一种策略,这次我们 ...
- java设计模式之备忘录模式
备忘录模式 备忘录模式是一种软件设计模式:在不破坏封闭的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态.这样以后就可将该对象恢复到原先保存的状态.一听到备忘录这个字的时候想起了小小时打的游 ...
- 使用Ecplise git commit时出现"There are no stages files"
异常 解决方案 进入Window--Preferences--Team--Git--Committing,反选下图红圈部分: 保存后即可出线我们熟悉的提交代码界面啦: