上文中我给大家展示了微软提供的开源toolkit中图表控件的效果和使用,但是与fusion charts相比效果还是显得逊色。本篇将介绍另一种charts控件库—visifire charts。

visifire控件库不仅涵盖wpf/silverlight,还有windows phone的版本(由此可见将wpf的代码移植到silverlight和windows phone上是一个非常平滑的过程)。我们可以从visifire官网下载试用版本。

更加丰富的图表样式

wpf toolkit中的charts提供了7中现成的控件:AreaSeries,PieSeries,LineSeries,BarSeries,BubbleSeries,ColumnSeries,ScatterSeries。visifire-charts则提供了23中图表,但不是一种图表对应一种控件,这也是其高明之处,我们无需更换控件,只需设置一下Visifire.Charts.DataSeries的RenderAs属性即可即时的改变图表类型。

<vCharts:DataSeries x:Name="dataSeries" RenderAs="Polar"  DataSource="{Binding Path=ChartData}">
                        <vCharts:DataSeries.DataMappings>
                            <vCharts:DataMapping MemberName="AxisXLabel" Path="Left" />
                            <vCharts:DataMapping MemberName="YValue" Path="Right" />
                        </vCharts:DataSeries.DataMappings>
                    </vCharts:DataSeries>

定制设置横向/纵向轴线

这也是tool-kit charts不好用的地方之一,在visifire的Chart中我们可以直接在xaml中定制。

<vCharts:Chart.AxesX>
                <vCharts:Axis Title="horizontal title" />
            </vCharts:Chart.AxesX>
            <vCharts:Chart.AxesY>
                <vCharts:Axis Title="vertical title" />
            </vCharts:Chart.AxesY>

使用DataSource和DataMapping绑定数据并进行属性映射

要为表格绑定一个数据源是很简单的,只需设置<vCharts:DataSeris的DataSource属性。然后通过DataMapping将绑定集合对象中的属性与图表的现实目标对应起来。

<vCharts:DataSeries RenderAs="Polar"  DataSource="{Binding Path=ChartData}">
                        <vCharts:DataSeries.DataMappings>
                            <vCharts:DataMapping MemberName="AxisXLabel" Path="Left" />
                            <vCharts:DataMapping MemberName="YValue" Path="Right" />
                        </vCharts:DataSeries.DataMappings>
                    </vCharts:DataSeries>

实战visifire

有了上面的知识我们就可以在实际项目中应用visifire了。这里我们准备做一个用来像客户展示图表数据的demo,它能够及时的变化图表类型,数据的变化也能立即体现到图表上。

我们仍然然使用上篇的demo工程,由于我们上篇的demo中使用了mvvm,所以对于更换视图这样的工作不需要去修改任何viewmodel和业务代码!只需增加一个新的窗口Show2并在app.xaml中设置其为启动窗口。像其中添加visifire的Chart控件,并将图表的DataSource绑定到到ViewModel中。(此外,为了方便演示加了个button用于变更数据和一个combobox用于选择图表样式,visifire的Chart本身高度和宽度不能伸缩,我将它们绑定到父容器的长宽上。)

<vCharts:Chart Watermark="False" Theme="Theme3" Width="{Binding ElementName=scrViewer, Path=ActualWidth}" Height="{Binding ElementName=scrViewer, Path=ActualHeight}"
                            AnimationEnabled="True" AnimatedUpdate="True">
            <vCharts:Chart.Titles>
                <vCharts:Title Text="This is a chart" FontSize="12" />
                <vCharts:Title Text="This is another chart" FontSize="10" HorizontalAlignment="Right" />
            </vCharts:Chart.Titles>
            <vCharts:Chart.AxesX>
                <vCharts:Axis Title="horizontal title" />
            </vCharts:Chart.AxesX>
            <vCharts:Chart.AxesY>
                <vCharts:Axis Title="vertical title" />
            </vCharts:Chart.AxesY>
            <vCharts:Chart.Series>
                    <vCharts:DataSeries x:Name="dataSeries" RenderAs="Polar"  DataSource="{Binding Path=ChartData}">
                        <vCharts:DataSeries.DataMappings>
                            <vCharts:DataMapping MemberName="AxisXLabel" Path="Left" />
                            <vCharts:DataMapping MemberName="YValue" Path="Right" />
                        </vCharts:DataSeries.DataMappings>
                    </vCharts:DataSeries>
                </vCharts:Chart.Series>
        </vCharts:Chart>

这样,只需更换一个View而ViewModel和Model无需任何更改,我们就将一个之前使用toolkit charts的demo改成一个使用visifire的demo,由此可见合理的设计能够节省程序员的大量时间。
  
本文demo源码下载地址

相关资源

最后奉上visifire的相关资源:

visifire@codeplex

官方showcase

visifire文档(visifire官方提供的文档还是非常详细的)

在线设计器

转载于:https://www.cnblogs.com/wJiang/archive/2010/12/16/1907430.html

数据统计的视觉盛宴---visifire charts相关推荐

  1. 数据统计软件SPSS PASW Statistics v18 多国语言版功能介绍

    数据统计软件SPSS PASW Statistics v18 多国语言版功能介绍 1.增强的数据管理功能 在10版以后,SPSS的每个新增版本都会对数据管理功能作一些改进,以使用户的使用更为方便.13 ...

  2. php 自定义表格并统计,PHP 使用Echarts生成数据统计报表的实现

    这篇文章主要介绍了PHP 使用Echarts生成数据统计报表的实现代码,需要的朋友可以参考下 echarts统计,简单示例 先看下效果图 看下代码 HTML页面 为ECharts准备一个Dom,宽高自 ...

  3. 数据统计之用户总量统计

    数据统计 在进入到后台页面后,首先我们需要完成如下功能: 1.用户总数统计 2.日增用户统计 3.日活用户统计 4.下单用户统计 5.月新增用户统计 6.商品访问量统计 [将所有的业务逻辑的代码都放在 ...

  4. 常用的数据统计Sql 总结(转)

    转:http://www.cnblogs.com/zhangweizhong/p/5577842.html 最近刚在搞一个BI的项目,里面需要大量的sql 数据统计相关运用,加深了我又对SQL的理解与 ...

  5. GraphPad Prism —— 简单又好用的生物数据统计绘图软件

    GraphPad Prism 简介 GraphPad Prism是一个数据处理软件,它的优点是专门为生物.医学等生命科学学科所设计,从原始数据到统计绘图,简单地数据分析都可以轻松搞定,并且很容易上手. ...

  6. 多条记录取最近日期的一条_Excel VBA:基于员工打卡记录的考勤数据统计

    微信公众号:金融数学 使用VBA做一个基于员工打卡记录的考勤数据分析工具; 1应用场景 某公司通过门禁系统记录了每位员工上下班打卡时间,现在需要对一段特定时间内员工出勤情况进行统计分析,包含加班时间( ...

  7. 个推数据统计产品(个数)iOS集成实践

    2019独角兽企业重金招聘Python工程师标准>>> 最近业务方给我们部门提了新的需求,希望能一站式统计APP的几项重要数据.这次我们尝试使用的是个推(之前专门做消息推送的)旗下新 ...

  8. 记住这个网站:服务器相关数据统计网站 http://news.netcraft.com/

    http://news.netcraft.com/ 需要参考现在服务器相关数据,可以上这个网站. 当然google趋势也是一个可选得备案. 有一个数据统计更全面的: http://w3techs.co ...

  9. 基于springboot实现疫情数据统计系统

    项目编号:BS-XX-038 本系统基于springboot实现开发,主要实现国内各省的疫情数据管理及实时统计,特点是利用图形报表实现展示各省确诊人数.疑似人数.隔离人数.治愈人数,利用不同的数据展示 ...

最新文章

  1. FFmpegInterop 库在 Windows 10 应用中的编译使用
  2. spring boot项目配置RestTemplate超时时长
  3. 如何利用NLog输出结构化日志,并在Kibana优雅分析日志?
  4. java将数组中的数据修改,深度集成!
  5. mongodb ttl java,在mongoDB集合上设置ttl-是在应用程序中还是在shell中?
  6. 如何在hexo中支持Mathjax
  7. 最简单的基于FFmpeg的AVfilter例子(水印叠加)
  8. IIS32位,64位模式下切换
  9. 重学JAVA基础(三):动态代理
  10. 职场老实人的十大升职障碍
  11. 14.UNIX 环境高级编程--高级IO
  12. QtCreator导入yocto sdk记录
  13. Medoo个人修改版
  14. android activitygroup tab,android 之用ActivityGroup 实现Tab分页
  15. 南京工业大学计算机科学与技术学院保研外校,南京工业大学计算机科学与技术学院2018年招收推荐免试研究生章程...
  16. vscode如何配置java环境_VSCode 配置Java环境
  17. Java后端开发之JSON入门
  18. module_platform_driver()
  19. 32位系统装8g内存条?能用吗
  20. 激光测距仪传感器,基于EFM32控制器开发设计_方案

热门文章

  1. leetcode —— 1079. 活字印刷
  2. Multi-thread提高C++性能的编程技术笔记:单线程内存池+测试代码
  3. java version 和javac版本不一致_windows安裝多個版本的jdk,解決java-version和javac-version版本不一致的問題...
  4. 两种方法查看MFC源代码
  5. Golang指针,for循环
  6. SSH框架整合——基于注解
  7. 简单且有创意的python作品_适合练手的 14 个Python 小项目,趣味十足!
  8. .net core 调用c dll_C++ 调用C封装DLL库的两种方式
  9. 微服务启动顺序_基于华为云CSE微服务接口兼容常见问题
  10. Windows 10 开启有线无线802.1x脚本