zoukankan      html  css  js  c++  java
  • MVC3-RAZOR尝鲜之漂亮的chart图表

    目录

    1 创建一个Chart

    2 添加标题

    3 添加数据源

    3.1 反复调用AddSeries可以添加多个

    3.2 重复绑定 3.3 使用xml作为数据源

    4 数据绑定

    5 添加图注

    6 保存数据

    7 图表与缓存

    8 保存到文件

    9 其他

    1创建一个Chart

    public Chart(

    int width,宽度

    int height,高度

    string theme = null,主题由System.Web.Helpers.ChartTheme 静态类提供

    string themePath = null 主题地址 xml格式

    );

    new Chart( 600, height: 400
    , theme: ChartTheme.Green
    ,themePath:null
    )

    2添加标题

    public Chart AddTitle(

    string text = null, 添加标题

    string name = null

    //设置唯一标示 System.Web.UI.DataVisualization.Charting.Title object.

    );

     .AddTitle(text:"chat title",name:"chat1")

    3添加数据源

    public Chart AddSeries(string name = null,

    string chartType = "Column",

    //System.Web.UI.DataVisualization.Charting.SeriesChartType 下的枚举值

    string chartArea = null,

    //获取或设置用于绘制数据系列的 ChartArea 对象(如果有)的名称。

    string axisLabel = null, 获取或设置系列的轴标签文本。

    string legend = null, 获取或设置与 Legend 对象关联的系列的名称。

    int markerStep = 1, //获取或设置用于决定数据点标记的显示频率的值。

    IEnumerable xValue = null, x轴的数据源

    string xField = null, x轴的数据绑定的字段。

    IEnumerable yValues = null,     Y轴的数据源

    string yFields = null   Y轴的数据绑定的字段。

    );

    复制代码
    .AddSeries(
    name: "Stuednt"
    , xValue: new[] { "Peter", "Andrew", "Julie", "Mary", "张1" }
    ,yValues: new[] { "2", "6", "4", "5", "3" }
    , chartType: type.ToString()
    , axisLabel: "获取或设置系列的轴标签文本"
    , legend: xVal[3]
    , markerStep :3

    )
    复制代码

    16 

    3.1反复调用AddSeries可以添加多个

    3.2重复绑定

    如果同时指定 yValues 和yFields ,会同时显示

    同时指定 xValues 和xFields ,xFields优先。

    15

    3.3使用xml作为数据源

    复制代码
    @using System.Data;
    @{var dataSet = new DataSet();
    dataSet.ReadXmlSchema(Server.MapPath("/App_Data/data.xsd"));
    dataSet.ReadXml(Server.MapPath("/App_Data/data.xml"));
    var dataView = new DataView(dataSet.Tables[0]);
    new Chart( 400, height: 300
    , theme: ChartTheme.Vanilla
    )
    .AddSeries("Default", chartType: "Pie",
    xValue: dataView, xField: "Name",
    yValues: dataView, yFields: "Sales")
    .Write();
    }
    复制代码

      14

    4数据绑定

    public Chart DataBindTable(IEnumerable dataSource, 数据源

    string xField = null ,x轴字段

    );

    复制代码
    List<CMS5_Razor.Models.Test> list = new List<CMS5_Razor.Models.Test>();
    for (int i = 0; i < 5; i++) {
    list.Add(new CMS5_Razor.Models.Test() { Name = "name" + i, Order = i, Content = "Content"+i });
    }

    //----------------------------


    .DataBindTable(list, xField: "Name")
    复制代码

    5添加图注

    .AddLegend(title:"添加图注")

      

    6保存数据

    string xmlPath = "savedchart.xml";
    chart.SaveXml(xmlPath);

    7图表与缓存

    1保存图表到缓存

    public string SaveToCache(string key = null,

    int minutesToCache = 20,缓存时间,分钟为单位

    bool slidingExpiration = true 是否平滑显示

    );

    2从缓存中读出 

    复制代码
    Chart.GetFromCache(  string key = null ); 
    @{
    //保存到缓存
    var mychart = Chart.GetFromCache("mychartkey");
    if (mychart != null) {
    mychart.AddTitle("从缓存中读出"+DateTime.Now);
    mychart.Write();
    } else {
    mychart = new Chart( 600, height: 400)
    .AddTitle("保存进缓存"+DateTime.Now)
    .AddSeries(
    name: "Employee",
    xValue: new[] { "Peter", "Andrew", "Julie", "Mary", "Dave" },
    yValues: new[] { "2", "6", "4", "5", "3" })
    .Write() ;
    mychart.SaveToCache(key: "mychartkey", minutesToCache: 11, slidingExpiration: false);
    }
    }
    复制代码

    13

    8保存到文件

    复制代码
    @{//保存到文件
    var mychart = new Chart( 400, height: 300)
    .AddTitle("保存到文件再从文件中读取")
    .AddSeries(
    name: "Employee",
    xValue: new[] { "Peter", "Andrew", "Julie", "Mary", "Dave" },
    yValues: new[] { "2", "6", "4", "5", "3" });
    var path = "~/Content/Image/mychart.jpg";
    var imgpath = Server.MapPath(path);
    mychart.Save(path: imgpath, format: "jpeg");
    }
    <img src="@Href(path)" />
    复制代码

    17

    9其他

    1 更多图表的样式

     

    成员名称

    说明

     

    Point

    点图类型。

     

    FastPoint

    快速点图类型。

     

    Bubble

    气泡图类型。

     

    Line

    折线图类型。

     

    Spline

    样条图类型。

     

    StepLine

    阶梯线图类型。

     

    FastLine

    快速扫描线图类型。

     

    Bar

    条形图类型。

     

    StackedBar

    堆积条形图类型。

     

    StackedBar100

    百分比堆积条形图类型。

     

    Column

    柱形图类型。

     

    StackedColumn

    堆积柱形图类型。

     

    StackedColumn100

    百分比堆积柱形图类型。

     

    Area

    面积图类型。

     

    SplineArea

    样条面积图类型。

     

    StackedArea

    堆积面积图类型。

     

    StackedArea100

    百分比堆积面积图类型。

     

    Pie

    饼图类型。

     

    Doughnut

    圆环图类型。

     

    Stock

    股价图类型。

     

    Candlestick

    K 线图类型。

     

    Range

    范围图类型。

     

    SplineRange

    样条范围图类型。

     

    RangeBar

    范围条形图类型。

     

    RangeColumn

    范围柱形图类型。

     

    Radar

    雷达图类型。

     

    Polar

    极坐标图类型。

     

    ErrorBar

    误差条形图类型。

     

    BoxPlot

    盒须图类型。

     

    Renko

    砖形图类型。

     

    ThreeLineBreak

    新三值图类型。

     

    Kagi

    卡吉图类型。

     

    PointAndFigure

    点数图类型。

     

    Funnel

    漏斗图类型。

     

    Pyramid

    棱锥图类型。

    http://msdn.microsoft.com/zh-cn/library/system.web.ui.datavisualization.charting.seriescharttype.aspx

    2参考

    Series 成员

    http://msdn.microsoft.com/zh-cn/library/system.web.ui.datavisualization.charting.series_members.aspx

    3源码下载 

    http://files.cnblogs.com/facingwaller/learn2UseRazor3.rar 

    之前的是

    http://files.cnblogs.com/facingwaller/learn2UseRazor1-2.rar

    4尚未完成的问题 

    1 themePath的使用。

    2 各种图表的具体使用,有些能兼容。

    3 来自同学的提醒,似乎还不能精确控制。 在到处的xml中似乎可以比较精确的控制,

    但是由于时间问题,不做深入探究。欢迎大家交流。 

  • 相关阅读:
    systemctl无法停掉keepalived
    python小工具
    python pip
    linux下安装python3
    python process
    python socket模块
    python logging日志模块
    板邓:C#的声明数组和赋值
    板邓:解决jquery中全选点击第二次不生效的问题
    板邓:php+mayql分页原理及案例
  • 原文地址:https://www.cnblogs.com/zcm123/p/6534823.html
Copyright © 2011-2022 走看看