博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Highcharts】 绘制饼图和漏斗图
阅读量:6766 次
发布时间:2019-06-26

本文共 3008 字,大约阅读时间需要 10 分钟。

1.outModel类设计

  设计outModel类首先研究下Highcharts中series的data数据格式,发现饼图和漏斗图都可以使用这样格式的数据

series: [{

    name: 'Unique users',
    data: [
        ['Website visits', 15654],
        ['Downloads', 4064],
        ['Requested price list', 1987],
        ['Invoice sent', 976],
        ['Finalized', 846]
        ]
    }]

    刚看到数据格式的时候,会不自觉的想起Dictionary<string,int>或者Hashtable ,outModel就会设计成以下两种形式

    public class HomeOut

      {
        public string Name { get; set; }//渲染series[0].name
        public Dictionary<string, int> Dicdata { get; set; }//渲染series[0].data
      }
    或者

    public class HomeOut

      {
        public string Name { get; set; }//渲染series[0].name
        public Hashtable Ht { get; set; }//渲染series[0].data
      }

    但是会发现当 return Json(outModel, JsonRequestBehavior.AllowGet);的时候,前台获取到的Dicdata 或者Hashtable 只能是object Object,所以顺其自然的会想到Jquery解析数据,的确能解析成功,但是在把数据填充Highcharts的时候会发现怎么也填充不对,push()和chart.series[0].data=解析过的json数据,都不能实现。也许是自己研究的不对,有看到的园友,成功实现的请留言指导。

    后来,迫不得已只能才用以前自己使用Highcharts绘制柱状图和折线图的方法了,下面开始

    设计outModel 的时候,我设计成了这样

 

    

public class HomeOut        {          public string Name { get; set; }          public List
tempClass { get; set; }        }public class TempClass      {        public string name { get; set; }        public int y { get; set; }      }

 

    之所以设计成这样,我是发现绘制饼图和漏斗图的时候series还可以这样写

饼图:  

series: [{              type: 'pie',              name: 'Browser share',              data: [                    ['Firefox', 45.0],                    ['IE', 26.8],                     {                    name: 'Chrome',                    y: 12.8,                    sliced: true,                    selected: true                      },                    ['Safari', 8.5],                    ['Opera', 6.2],                    ['Others', 0.7]                  ]            }]
View Code

 

漏斗图

series: [{     name: 'Unique users',     data: [     ['Website visits', 15654],     ['Downloads', 4064],     {       name:'Requested price list',       y:1987     },     ['Invoice sent', 976],     ['Finalized', 846]       ]    }]
View Code

 

     对比之下,两个图表的data都可以才用{name:'***',y:***}格式

下面贴出全部代码(排版还不会,就不整了)

HomeCotroller

public ActionResult Index2(){return View();}public ActionResult GetData(){var outModel = new HomeOut();//Dictionary
dic = new Dictionary
() { //{"wo",1990},//{"you",1200},//{"she",1000},//{"it",800}//};//Hashtable ht = new Hashtable();//ht.Add("wo", 1990);//ht.Add("you", 1900);//ht.Add("she", 1800);//ht.Add("it", 1700);//ht.Add("he", 1600);//outModel.dicdata = dic;outModel.Name = "123";List
tempClassList = new List
(){new TempClass(){name="wo",y=1},new TempClass(){name="you",y=2},new TempClass(){name="she",y=3},new TempClass(){name="he",y=3}};outModel.tempClass = tempClassList;return Json(outModel, JsonRequestBehavior.AllowGet);}
View Code

 

cshtml页面

View Code

 

js

View Code

 

转载于:https://www.cnblogs.com/lb12081116/p/4371634.html

你可能感兴趣的文章
给文件对比工具设置图片翻转的方法
查看>>
JS按回车键实现登录的方法
查看>>
C#属性访问器
查看>>
eclipse常用快捷键
查看>>
Python学习之==>内置函数、列表生成式、三元表达式
查看>>
【std::regex】C++文件路径正则表达式
查看>>
java实践经验几种常见数据库连接池的使用比较
查看>>
java 获取某个URL的文件扩展名的方法(非精确,精确的扩展名应该使用服务器返回的MIME-TYPE)...
查看>>
BZOJ 4590 [Shoi2015]自动刷题机 ——二分答案
查看>>
吴恩达机器学习笔记16-决策边界(decision boundary)
查看>>
分水岭算法(理论+opencv实现)
查看>>
暑假集训第六周contest1
查看>>
libnl3.2.25安装编译
查看>>
第一天
查看>>
go语言字符串处理
查看>>
hihocoder 1014----Trie树
查看>>
【2016.5.27】再见,软件工程,你好,软件工程。
查看>>
POJ 3237 Tree
查看>>
hdu 2586 How far away ? ( 离线 LCA , tarjan )
查看>>
ISTQB测试人员认证 初级(基础级)大纲
查看>>