/// <summary> /// 生成统计图片的数据源模型(单一或对比图都可以) /// </summary> /// <returns></returns> private SeriesCollection GetDataSource() { SeriesCollection SC = new SeriesCollection(); Random rd = new Random(); //DataTable newTable = new DataTable(); //newTable.Columns.Add("Month", typeof(int));//月份 //newTable.Columns.Add("Count", typeof(float));//载客量 //for (int i = 1; i <= 12; i++) //{ // newTable.Rows.Add(new object[] { i, rd.Next(50) }); //} ////生成单一图,将返回的DataTable数据处理成序列集合类型的数据,以便保持数据源类型的统一 //Series s = new Series(); //s.Name = "载客量合计"; //for (int b = 1; b <= 12; b++) //X轴尺度个数,如一年12个月表示有12个尺度数 //{ // Element e = new Element(); // e.Name = b.ToString();//对应于X轴个尺度的名称 // e.YValue = rd.Next(50);//与X轴对应的Y轴的数值 // s.Elements.Add(e); //} //SC.Add(s); // 生成对比图 for (int a = 1; a <= 2; a++) //对比的项数,如2008年各月的公交和地铁载客量数据对比就相当于有两个数据项 { Series s = new Series(); s.Name = (a == 1 ? "公交载客量合计" : "地铁载客量合计");//各个数据项代表的名称,如公交和地铁12个月载客量走势图,则一条表示公交,一条表示地铁 for (int b = 1; b <= 12; b++) //X轴尺度个数,如12个月表示有12个尺度数 { Element e = new Element(); e.Name = b.ToString();//对应于X轴个尺度的名称 e.YValue = rd.Next(50);//与X轴对应的Y轴的数值 s.Elements.Add(e); } SC.Add(s); } //可自定义填充图的填充色,系统采取默认分配各数据项的填充色 //SC[0].DefaultElement.Color = Color.Blue; //SC[1].DefaultElement.Color = Color.Red; //SC[2].DefaultElement.Color = Color.FromArgb(255, 99, 49); //SC[3].DefaultElement.Color = Color.FromArgb(0, 156, 255); return SC; } /// <summary>
本文最后给出的下载示例中,统一采用数据源为序列集合,原本定义了两种类型的数据源SeriesCollection和DataTable,后来有想过定义一个泛型或 IDataSource接受不同的数据源,觉得还是不怎么好,就统一用序列数据源类型。
三、柱状和折线型的叠加(其实也属于对比图的一类) 应用场景如,公交和地铁某年12个月的载客量对比,同时还要反映出12个公交和地铁的发车次数的对比, 这时就要求纵轴的左右两边都有尺度,左边纵轴可以 对应载客量,右边纵轴可以对应发车次数,这种意义在于,可以看到在发车量相同的情况下,载客量对比是怎样的,发车量不同的情况下,载客量又有什么变化, 通过这种对比可以制定方案对那些线路增加或减少发车次数,有点点类似于下面这样的图 |
上图不算是一个完整的图,因为柱状和折线都少了一个对比,而且右边的纵轴没有刻度,但是这也是可以做到的 dotnetcharting官方网上近千个样图中其中我看到一个类似的http://www.dotnetcharting.com/gallery/view.aspx?id=RateCharts, 做一下处理是可以满足要求的。 PS:引用的dotnetcharting.dll有隐藏的链接,就是生成出来的统计图的上边和下边的,当鼠标移上去时有导向.netCHARTING网站的链接,简单 用JS脚本移除了链接的map标签(网上给的方法是修改IL代码后重新生成破解的dll,没试过)。
总之,应用这个组件绘统计图确实带来了很大的方便和灵活性。 最后该小demo下载地址给出 :demo下载 (本文由控件中国网转载) |