Bar 3D 和Pie 3D的统计图形
2016-04-11 19:08
429 查看
最近在做一个关于图形统计的界面,主要用到的是Dev控件ChartControl(功能很强大,能解决基本和复杂图形统计问题)。
ChartControl主要有Diagram、Series、Legend三个重要属性
diagram主要是用来控制图形X、Y、Z轴显示的样式和是否允许旋转以及旋转的角度和绕那个轴旋转。
series主要是用来给chartcontrol控件增加各种图形,图形的种类用viewtype来控制。
legend主要是用来说明图形的分类(可以说是图例)。
第一部分是以饼状图来分类显示各种情况所占的百分比:例如最近一段时间水果占销售总量的百分比是多少等等。
View Code
以上主要是提供一个思路怎么来解决这种图形统计类问题,以及怎么进行数据绑定,如有不对的地方请指出。
ChartControl主要有Diagram、Series、Legend三个重要属性
diagram主要是用来控制图形X、Y、Z轴显示的样式和是否允许旋转以及旋转的角度和绕那个轴旋转。
series主要是用来给chartcontrol控件增加各种图形,图形的种类用viewtype来控制。
legend主要是用来说明图形的分类(可以说是图例)。
第一部分是以饼状图来分类显示各种情况所占的百分比:例如最近一段时间水果占销售总量的百分比是多少等等。
private void AddBar3DChart() { series1 = new Series("Attendance", ViewType.Bar3D); series2 = new Series("Delays", ViewType.Bar3D); series3 = new Series("Absences", ViewType.Bar3D); series4 = new Series("Exception", ViewType.Bar3D); if (cmbType.SelectedIndex == 1) { ChangeEmployeeBarData(); } else if (cmbType.SelectedIndex == 2) { ChangeDepartmentBarData(); } staticsChart.Series.AddRange(new Series[] { series1, series2, series3, series4 }); //series1.Label.ResolveOverlappingMode = ResolveOverlappingMode.Default; #region set the series view's value Bar3DSeriesView myView1 = (Bar3DSeriesView)series1.View; myView1.BarDepthAuto = false; myView1.BarDepth = 0.2; myView1.BarWidth = 0.5; Bar3DSeriesView myView2 = (Bar3DSeriesView)series2.View; myView2.BarDepthAuto = false; myView2.BarDepth = 0.2; myView2.BarWidth = 0.5; Bar3DSeriesView myView3 = (Bar3DSeriesView)series3.View; myView3.BarDepthAuto = false; myView3.BarDepth = 0.2; myView3.BarWidth = 0.5; Bar3DSeriesView myView4 = (Bar3DSeriesView)series4.View; myView4.BarDepthAuto = false; myView4.BarDepth = 0.2; myView4.BarWidth = 0.5; #endregion XYDiagram3D myDiagram = (XYDiagram3D)staticsChart.Diagram; myDiagram.RotationType = RotationType.UseAngles; myDiagram.RotationOrder = RotationOrder.XYZ; myDiagram.RotationAngleX = 0; myDiagram.RotationAngleY = 0; myDiagram.RotationAngleZ = 270; myDiagram.RuntimeScrolling = true; SetChartFormat(); } private void ChangeDepartmentBarData() { List<Employee> empList = treeModule.CheckedEmps; List<Department> depList = treeModule.CheckedDepartment; DateTime fromDate = dteFromDate.DateTime; DateTime endDate = dteEndDate.DateTime; List<DaySummary> dsList = new DaySummaryBLL().GetEmployeesDailySummary(empList, fromDate, endDate); List<Paycode> paycodeList = new PaycodeBLL().GetMainFields(); var dsPaycodeList = from ds in dsList join p in paycodeList on ds.paycode.id equals p.id where ds.pc_results > 0 orderby ds.employee.id ascending, ds.att_date descending select new { ID = ds.employee.id, Minutes = ds.pc_results, Date = ds.att_date, Paycode = p.pc_code }; foreach (Department dep in depList) { int attendanceDay = 0; int delaysDay = 0; int absencesDay = 0; int ExceptionDay = 0; List<Employee> depEmpList = new EmployeeBLL().GetMainFields(string.Format("where e.department.id={0}", dep.id)); foreach (Employee employee in depEmpList) { attendanceDay += dsPaycodeList.Count(dspaycode => dspaycode.ID == employee.id && dspaycode.Paycode == 2); delaysDay += dsPaycodeList.Count(dspaycode => dspaycode.ID == employee.id && dspaycode.Paycode == 6); absencesDay += dsPaycodeList.Count(dspaycode => dspaycode.ID == employee.id && dspaycode.Paycode == 8); ExceptionDay += dsPaycodeList.Count(dspaycode => dspaycode.ID == employee.id && dspaycode.Paycode == 11) + dsPaycodeList.Count(dspaycode => dspaycode.ID == employee.id && dspaycode.Paycode == 12); } series1.Points.Add(new SeriesPoint(dep.dept_name.ToString(), attendanceDay)); series2.Points.Add(new SeriesPoint(dep.dept_name.ToString(), delaysDay)); series3.Points.Add(new SeriesPoint(dep.dept_name.ToString(), absencesDay)); series4.Points.Add(new SeriesPoint(dep.dept_name.ToString(), ExceptionDay)); } }
View Code
以上主要是提供一个思路怎么来解决这种图形统计类问题,以及怎么进行数据绑定,如有不对的地方请指出。
相关文章推荐
- PDNN安装与使用
- 让NSArray数组中每个对象都调用的方法
- 彻底了解android view 事件机制中的“隧道”和“冒泡”
- 测试算法的执行时间(借助Excel的“分列”和“ 排序”功能)
- VolleyAir
- HDoj.1864 最大报销额【动归、背包】 2016/04/11
- 每个顶点指定流量的无源汇最小费用流(80人环游地球)
- ubuntu14.04下安装matlab2015b
- 数据结构之数组结构(一)
- android shape 属性大全
- [New learn]动画-基于UIView
- Android 如何用HttpClient 以Post方式提交数据并添加http头信息
- MyBatis3与Spring3无缝集成-从iBatis平滑过渡
- 【BZOJ 4517】【SDOI 2016 Round1 Day2 T2】排列计数
- js学习笔记3
- GSM BTS Hacking: 利用BladeRF和开源BTS 5搭建基站
- 一个Demo学习Notification
- Android 实现自定义的卫星式菜单
- NGINX-PHP组合
- MySQL基础二:数据表操作