Silverlight中的图表控件visifire的使用

     Silverlight对于图形图像处理方面,从1.0时代起就给予了很强大的支持,所以我们可以在Silverlight中实现非常棒的各种统计图表,然而现在有了一些开源的项目,使得这项工作更加的简单。

一、下载dll文件,下载地址:http://download.csdn.net/source/3476757

二、解压文件,新建一个Silverlight项目,将其中的Silverlight Binaries下的dll文件引用到Bin目录下。

三、支持多种图表类型,Column、Bar、Line、Stock、Bubble、Radar等等几十种类型。

四、贴上代码,如下:

<navigation:Page x:Class="XTExhibition.Views.VisifireCharts" 
           xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
           xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
           xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
           xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
          xmlns:vc="clr-namespace:Visifire.Charts;assembly=SLVisifire.Charts"
           mc:Ignorable="d"
           xmlns:navigation="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation"
           d:DesignWidth="1200" d:DesignHeight="680"
           Title="VisifireCharts Page">
    <Grid x:Name="LayoutRoot">
        <StackPanel Orientation="Horizontal" >
            <!--第一個Chart-->
            <vc:Chart Grid.Row="0" Name="chtChartOne" Width="390">
                <vc:Chart.AxesY>
                    <!--Y間隔-->
                    <vc:Axis  Interval="20" Suffix="%"/>
                </vc:Chart.AxesY>
            </vc:Chart>
            <StackPanel>
                <Grid x:Name="ChartPanel" Height="250" Width="500">
                </Grid>
                <Grid x:Name="ChartLine" Height="300" Width="500">
                </Grid>
            </StackPanel>
            <StackPanel>
                <Grid x:Name="Chart1" Height="250" Width="500">
                </Grid>
                <Grid x:Name="Chart2" Height="300" Width="500">
                </Grid>
            </StackPanel>
        </StackPanel>
        <!--第二個Chart-->
        <!--<vc:Chart Grid.Row="1" Name="chtChartTwo">
            <vc:Chart.AxesY>
                <vc:Axis  Interval="20" Suffix="%"/>
            </vc:Chart.AxesY>
            <vc:Chart.Series>
                <vc:DataSeries RenderAs="Column" LabelEnabled="true" LabelStyle="OutSide">
                    <vc:DataSeries.DataPoints>
                        <vc:DataPoint AxisXLabel="18-29歲" YValue="31.2"/>
                        <vc:DataPoint AxisXLabel="30-39歲" YValue="50.3"/>
                        <vc:DataPoint AxisXLabel="40-49歲" YValue="50.9"/>
                        <vc:DataPoint AxisXLabel="50-64歲" YValue="35.6"/>
                        <vc:DataPoint AxisXLabel="65歲以上"  YValue="27.6"/>
                    </vc:DataSeries.DataPoints>
                </vc:DataSeries>
            </vc:Chart.Series>
        </vc:Chart>-->
    </Grid>
</navigation:Page>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using System.Windows.Navigation;
using Visifire.Charts;

namespace XTExhibition.Views
{
    public partial class VisifireCharts : Page
    {
        public VisifireCharts()
        {
            InitializeComponent();
            //柱状图
            InitPage();
            //饼图
            ShowPie();
            //折线图
            ShowLine();
            //雷达图
            ShowRadar();
            //气泡图
            ShowBubble();
        }

        #region   柱状图示例
        public void InitPage()
        {
            chtChartOne.View3D = true;
            Title title = new Title();
            title.Text = "柱状图的标题内容";
            chtChartOne.Titles.Add(title);

            //統計資料列
            DataSeries ds = new DataSeries();
            //柱状类型
            ds.RenderAs = RenderAs.StackedColumn;
            //顯示Lable
            ds.LabelStyle = LabelStyles.OutSide;
            ds.LabelEnabled = true;
            //欄
            ds.DataPoints.Add(new DataPoint() { AxisXLabel = "18-29歲", YValue = 20.8 });
            ds.DataPoints.Add(new DataPoint() { AxisXLabel = "30-39歲", YValue = 28.2 });
            ds.DataPoints.Add(new DataPoint() { AxisXLabel = "40-49歲", YValue = 26.5 });
            ds.DataPoints.Add(new DataPoint() { AxisXLabel = "50-64歲", YValue = 18.9 });
            ds.DataPoints.Add(new DataPoint() { AxisXLabel = "65歲以上", YValue = 17.2 });
            chtChartOne.Series.Add(ds);
        }
        #endregion

        #region 饼状图示例
        public void ShowPie()
        {
            Chart chart = new Chart();
            chart.Width = 450;
            chart.Height = 300;
            chart.View3D = true;  //3D效果
            //饼状图的标题设置
            Title title = new Visifire.Charts.Title();
            title.Text = "这是一个测试用的3D饼状图";
            chart.Titles.Add(title);

            DataSeries dataSeries = new DataSeries();
            dataSeries.RenderAs = RenderAs.Pie;
            dataSeries.LegendText = "";
            DataPoint point;
            int numberOfDataPoints = 6;
            Random random = new Random();
            for (int i = 0; i < numberOfDataPoints; i++)
            {
                point = new DataPoint();
                point.YValue = random.Next(1, 100);
                dataSeries.DataPoints.Add(point);
            }
            chart.Series.Add(dataSeries);
            this.ChartPanel.Children.Add(chart);
        }
        #endregion

        #region 折线图示例
        public void ShowLine()
        {
            Chart chart = new Chart();
            //折线图的标题
            Title title = new Title();
            title.Text = "折线图的标题";
            chart.Titles.Add(title);
            //设置类型为折线图
            DataSeries dataSeries = new DataSeries();
            dataSeries.RenderAs = RenderAs.Spline;
            dataSeries.LegendText = "X坐标";
            //设置点
            DataPoint point;
            Random random = new Random();
            for (int i = 0; i < 10; i++)
            {
                point = new DataPoint();
                point.YValue = random.Next(1,100);
                dataSeries.DataPoints.Add(point);
            }
            chart.Series.Add(dataSeries);
            this.ChartLine.Children.Add(chart);
        }
        #endregion

        #region 雷达图示例
        public void ShowRadar()
        {
            Chart chart = new Chart();
            //雷达图的标题
            Title title = new Title();
            title.Text = "雷达图的标题";
            chart.Titles.Add(title);
            //设置类型为雷达图
            DataSeries dataSeries = new DataSeries();
            dataSeries.RenderAs = RenderAs.Radar;
            dataSeries.LegendText = "X坐标";
            //设置点
            DataPoint point;
            Random random = new Random();
            for (int i = 0; i < 10; i++)
            {
                point = new DataPoint();
                point.YValue = random.Next(1,100);
                dataSeries.DataPoints.Add(point);
            }
            chart.Series.Add(dataSeries);
            this.Chart1.Children.Add(chart);
        }
        #endregion

        #region 气泡图示例
        public void ShowBubble()
        {
            Chart chart = new Chart();
            //气泡图的标题
            Title title = new Title();
            title.Text = "气泡图的标题";
            chart.Titles.Add(title);
            //设置类型为气泡图
            DataSeries dataSeries = new DataSeries();
            dataSeries.RenderAs = RenderAs.Bubble;
            dataSeries.LegendText = "X坐标";
            //设置点
            DataPoint point;
            Random random = new Random();
            for (int i = 0; i < 10; i++)
            {
                point = new DataPoint();
                point.YValue = random.Next(1, 100);
                dataSeries.DataPoints.Add(point);
            }
            chart.Series.Add(dataSeries);
            this.Chart2.Children.Add(chart);
        }
        #endregion

        // 当用户导航到此页面时执行。
        protected override void OnNavigatedTo(NavigationEventArgs e)
        {
        }

    }
}


五、效果图如下:





  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
这是对WPFVisifire3.6.8源代码进行的简单扩展,本源代码包含了各种实例以及一个完善的程序:内存监视器 1>修改了线Legend样式,并放大了,源系统Legend太小 2、设置了圆环内径可设定,原代码内径为外径的1/2 3、调整了柱状图的间隔系数由0.1改为0.2,要不然,当柱状图比较多时,缝隙太小,给人的视觉感觉就是夹了一个白线 4、添加了滚轮缩放和鼠标拖放操作(见里面的程序:内存监视器) 5、添加了对DataPoints的绑定支持,这是因为使用DataSource绑定时,在动态曲线的情况下,内存无法释放,而使用DataPoints 绑定则可以及时释放内存,这点例子里面也使用了几种绑定的动态曲线例子,并可通过另一个例子:内存监视器来检测不同的 数据绑定的内存释放情况。值得说明的是即使最新的WPFVisifire5.1.7版本,在使用DataSource绑定时,内存也不能及时释放。 还有一些其他的小改进 感觉修改WPFVisifire的代码相当困难,很多在不断的尝试下进行的,这点和微软的WPF Charts相比,确实不一样,微软的WPF Charts 是完全基于WPF编程思想进行的,注重其神而忽略其形,很多样式模板都是可以在外部修改的,相应的有关外形定义的属性则很少, 而这点上,WPFVisifire则相对比价传统,几乎没定义多少模板,但提供了超多的外形属性,连字体大小、颜色等各种属性都能设定。 在数据性能上,微软的WPF Charts比较差,加载4000个数据就慢得不行,WPFVisifire3.6.8一万多个都没问题,更高的没测试, 而最新的那个5.1.7版本在我的电脑上加载10W个数据在0.7秒左右,所以要想高性能,商业上还是得花那么一点钱买正版。 微软的Chart扩展:http://download.csdn.net/detail/maiker/9646423
### 回答1: visifire.charts4.6.1是一个可视化图表库的源代码包,它包含了许多用于创建交互式和动态的图表和数据可视化的工具和组件。该代码包包含一系列演示示例,用于展示如何使用这些工具和组件来设计各种类型的图表和可视化。这些示例提供了从最基本的线图和柱状图到更复杂的热图和饼图的各种图表类型,用户可以通过查看这些演示示例来了解如何使用visifire.charts4.6.1来创建自己的专业图表和数据可视化。此外,visifire.charts4.6.1还提供了一些内置的自定义选项和可扩展性,允许用户根据其自己的需要来修改图表的样式和行为。总的来说,visifire.charts4.6.1是一个非常强大和灵活的工具,可以帮助用户将复杂数据转换为更直观和易于理解的可视化呈现形式。 ### 回答2: Visifire是一款用于构建交互式数据可视化的开源图表库。visifire.charts4.6.1是这个库的一个版本,其包含了可以供我们参考的demo。 这个版本的代码提供了许多用于构建图表的类和控件,比如图例的Legend、图表的Chart、区域的Area等等。除此之外,我们还可以找到很多常见的数据可视化方式,如折线图、柱状图、饼图以及曲线图等等。 这个源码的demo则提供了很多使用Visifire库的实例。通过阅读这些demo,我们可以了解到如何使用Visifire构建图表、如何绑定数据以及如何定义交互行为等等。这将帮助我们更快地上手Visifire,也可以用作参考来满足我们自己的数据可视化需求。 总的来说,通过阅读visifire.charts4.6.1的源码和demo,我们可以很好地了解到Visifire库的使用方法,并在实践应用它来构建出有效的数据可视化。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值