Silverlight/WPF的数据可视化学习简介了解图表的相关知识通过简单的介绍,认识并学习微软的可视化界面库System.Windows.Controls.DataVisualization议程概述实践应用相关资源议程概述实践应用相关资源概述图表百度百科:图表泛指在屏幕中显示的,可直观展示统计信息属性(时间性、数量性等),对知识挖掘和信息直观生动感受起关键作用的图形结构,是一种很好的将对象属性数据直观、形象地“可视化”的手段。维基百科:是指统计学领域当中用于可视化定量数据的信息图形。统计学中基于图表的一种分析方法。图表的分类条形图、柱状图、折线图和饼图是图表中四种最常用的基本类型。还有冒泡图、散点图、面积图、雷达图…图表的构成要素图表的基本构成要素有:标题、刻度、图例和主体等。概念术语数据系列:在图表中绘制的相关数据点,这些数据源自数据表的行或列。图表中的每个数据系列具有唯一的颜色或图案并且在图表的图例中表示。可以在图表中绘制一个或多个数据系列。饼图只有一个数据系列。数据点:在图表中绘制的单个值,这些值由条形、柱形、折线、饼图或圆环图的扇面、圆点和其他被称为数据标记的图形表示。相同颜色的数据标记组成一个数据系列。概述Silverlight/WPFDataVisualization微软可视化控件库是Silverlight/WPFTookit的一部分,提供关于图表制作的控件(chartingcontrols)SilverlightTookit和WPFTookit分别是Silverlight和WPF的一套控件集合Silverlight和WPF的制图和图表控件使用相同的源代码和xamlSilverlight/WPFTookit支持Silverlight3,Silverlight4,WPF3.5,andWPF4以及WindowsPhone7平台(参见Delay文章)Silverlight/WPFTookit是开放源代码的,采用微软公共许可证(Ms-PL)允许用户出于商业或非商业目的查看、修改及重新发布相应源代码和议程概述实践应用相关资源实践应用——一个简单的例子下载并安装Silverlight/WPFTookit(从这里开始以后的例子主要以Sliverlight为主)实践应用——一个简单的例子新建一个Sliverlight应用程序添加引用System.Windows.Controls.DataVisualization.Toolkit.dllXaml中添加应用声明xmlns:chartingToolkit=clr-namespace:System.Windows.Controls.DataVisualization.Charting;assembly=System.Windows.Controls.DataVisualization.Toolkit“或者xmlns:chartingTookit=编写代码Xaml:(推荐的方式)chartingToolkit:Chartx:Name=“chartTitle=简单的图表Width=400chartingToolkit:ColumnSeriesItemsSource={Binding}IndependentValuePath=“XDependentValuePath=Y/chartingToolkit:ColumnSeries/chartingToolkit:Chart注:数据源设置为=“{Binding}”,需要在cs代码中为chart.DataContext属性设定绑定对象。Cs:Chartchart=newChart();ColumnSeriescs=newColumnSeries();cs.Title=“柱状图序列;cs.ItemsSource=DataContainer.SimplePointCollection();cs.DependentValuePath=Y;cs.IndependentValuePath=X;chart.Series.Add(cs);注:DataContainer.SimplePointCollection();提供一个PointCollection类型的数据集。看实例实践应用——一个简单的例子ChartSeries•ColumnSeries•LineSeries•AreaSeries•ScatterSeries•BubbleSeries•BarSeries•PieSeries•StackedAreaSeries•StackedColumnSeries•StackedBarSeries•StackedLineSeries•Stacked100LineSeries•Stacked100AreaSeries•Stacked100BarSeries•Stacked100ColumnSeriesAxes•LinearAxis•DateTimeAxis•CategoryAxis各种Style实践应用——一个简单的例子Chart类表示显示一个图表的控件实例化:Chartchart=newChart();等价于chartingTookit:ChartName=“chart”/Title、TitleStyle:图表的标题和样式LegendTitle、LegendStyle:图例的标题和样式Series:表格的序列集合序列具体的数据序列展现,多种不同或相同类型的序列可以添加到同一个Chart上面。ColumnSeries柱状图序列LineSeries折线图序列AreaSeries面积图序列ScatterSeries散点图序列BubbleSeries气泡图序列BarSeries条形图序列PieSeries饼状图序列StackedAreaSeriesStackedColumnSeriesStackedBarSeriesStackedLineSeriesStacked100LineSeriesStacked100AreaSeriesStacked100BarSeriesStacked100ColumnSeries一般序列堆积序列普通堆积序列100%堆积序列实践应用——简单的自定义图表一般序列的设置:ColumnSeries、LineSeries、AreaSerie、ScatterSeries、BubbleSeries、BarSeries、PieSeriesItemsSource:设置序列的数据源IndependentValueBinding或IndependentValuePath:设置序列非依赖轴(X轴)的绑定内容,默认作为序列图例名称DependentValueBinding或DependentValuePath:设置序列依赖轴(Y轴)的绑定内容SizeValueBinding或SizeValuePath:设置BubbleSeries序列的冒泡面积绑定内容。未设置时默认采用DependentValuePath绑定的值IndependentAxis(Iaxis):自定义序列的非依赖轴DependentRangeAxis(IRangeAxis:具有范围的轴):自定义序列的依赖轴。使用时必须注意要与绑定的数据类型匹配Title:设置序列的标题,显示在图例处注意:IndependentAxis和DependentRangeAxis不适用于PieSeries;SizeValueBinding或SizeValuePath仅适用于BubbleSeries;代码示例.chartingTookit:ChartName=“chart”Title=“简单的图表LegendTitle=”图例Height=299Width=318chartingTookit:Chart.SerieschartingTookit:ColumnSeriesTitle=序列ItemsSource={BindingPath=SimplePointCollection,ElementName=ucSample2}DependentValuePath=YIndependentValuePath=X//chartingTookit:Chart.Series/chartingTookit:ChartColumnSeriescs=newColumnSeries();cs.Title=“柱状图序列;cs.ItemsSource=(newDataContainer()).SimplePointCollection;cs.IndependentValuePath=X;cs.DependentValuePath=Y;chart.Series.Add(cs);实践应用——自定义图表自定义轴:三种轴LinearAxis:显示数值的轴,要求对应绑定数据的类型必须是数值类型DateTimeAxis:显示时间的轴,可以使数值或者日期时间类型CategoryAxis:显示分类的轴(无法用于用于DependentRangeAxis)轴的属性Title、Orientation、Location、ShowGridLines、Maximum、Minimum、Interval以及轴相关的各元素Style自定义轴的使用:LinearAxisdtAxis=newLinearAxis();dtAxis.Title=“X”;//轴标题dtAxis.Orientation=AxisOrientation.X;//指向dtAxis.Location=AxisLocation.Bottom;//位置注意指向和位置要与数据绑定位置匹配实践应用——自定义图表堆积序列:StackedBarSeries、StackedColumnSeries、StackedLineSeries、StackedAreaSeriesStacked100BarSeries、Stacked100ColumnSeries、Stacked100LineSeries、Stacked100AreaSeries与一般序列实现自DataPointSeries不同,堆积序列实现自DefinitionSeries;SeriesDefinitions:设置或获取堆积序列的SeriesDefinition集合。命名原因和关系类似于ColumnDefinition和GridColumnDefinitioncolDef1=newColumnDefinition();grid.ColumnDefinitions.Add(colDef1);SeriesDefinition类的用法与一般序列相同。使用方法:StackedColumnSeriesscs=newStackedColumnSeries();SeriesDefinitionsd=newSeriesDefinition();sd.Title=“栈图序列;sd.IndependentValuePath=X;sd.DependentValuePath=Y;sd.ItemsSource=(newDataContainer()).SimplePointCollection;scs.SeriesDefinitions.Add(sd);chart.Series.Add(scs);通过上述代码可以发现,可以通过将同一批序列定义(SeriesDefinition)放在不同类型的堆积序列里面,实现同一套数据的不同展现堆积序列的自定义轴同一般序列相同,设置IndependentAxis和DependentAxis即可。S