Morris.js-利用JavaScript生成时序图

morris.js是一个轻量级的时间序列javascript类库,是网页显示图表的好工具。github项目地址:点击打开,使用起来很简单,但是需要你有一点网页设计的一些基本知识,对一个网页内容的结构要有一定的了解。可以从项目地址下载下来,然后在网页的<head>标签内导入相应的js文件,类似这样的(注意你的目录路径):

  <script src="js/jquery.min.js"></script>
  <script src="js/raphael-min.js"></script>
  <script src="js/morris.min.js"></script> 

具体使用的方法你可以参考官方给的范例,这里就不多说了,说下我遇到的问题,主要是我获取的到的信息的格式问题,morris.js加载的一条信息一般是这样的:

["year: ‘2007‘ ","value1:30","value2:15"]   ["year: ‘2008‘ ","value1:18","value2:20"]

而我的数据是["year:‘2007‘", "year:‘2009‘"] ["value:30", "value:20"] ["value2:30", "value2:20"],对于一些数据量小的,到是无所谓可以用笨的方法,但是数据量太大的时候,就显的很麻烦了,应该这里讲的主要是数组的转置功能在javascript下的实现:

先看自带的数据的现充:

<!doctype html>
<head>
  <script src="http://cdnjs.cloudflare.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
  <script src="http://cdnjs.cloudflare.com/ajax/libs/raphael/2.1.2/raphael-min.js"></script>
  <script src="../morris.js"></script>
  <script src="http://cdnjs.cloudflare.com/ajax/libs/prettify/r224/prettify.min.js"></script>
  <script src="lib/example.js"></script>
  <link rel="stylesheet" href="lib/example.css">
  <link rel="stylesheet" href="http://cdnjs.cloudflare.com/ajax/libs/prettify/r224/prettify.min.css">
  <link rel="stylesheet" href="../morris.css">
</head>
<body>
<h1>Formatting Dates YYYY</h1>
<div id="graph"></div>
<pre id="code" class="prettyprint linenums">
/* data stolen from http://howmanyleft.co.uk/vehicle/jaguar_‘e‘_type */
var year_data = [
  {"period": "2012", "licensed": 3407, "sorned": 660},
  {"period": "2011", "licensed": 3351, "sorned": 629},
  {"period": "2010", "licensed": 3269, "sorned": 618},
  {"period": "2009", "licensed": 3246, "sorned": 661},
  {"period": "2008", "licensed": 3257, "sorned": 667},
  {"period": "2007", "licensed": 3248, "sorned": 627},
  {"period": "2006", "licensed": 3171, "sorned": 660},
  {"period": "2005", "licensed": 3171, "sorned": 676},
  {"period": "2004", "licensed": 3201, "sorned": 656},
  {"period": "2003", "licensed": 3215, "sorned": 622}
];
Morris.Line({
  element: ‘graph‘,
  data: year_data,
  xkey: ‘period‘,
  ykeys: [‘licensed‘, ‘sorned‘],
  labels: [‘Licensed‘, ‘SORN‘]
});
</pre>
</body>

效果图:

我实现的方式好像和上面还不一样,我的是在javascript中填充数据的,这个数据在量小的情况下可以满足需求,但是遇到我这种情况并且是大数量的话就必须自己写了:

<!DOCTYPE html>
<html>
 <head>
  <link rel="stylesheet" href="css/morris.css" />
  <script src="js/jquery.min.js"></script>
  <script src="js/raphael-min.js"></script>
  <script src="js/morris.min.js"></script>
  <script type="text/javascript">
      var   a   =   new   Array();//原来是3x2
      a[0]   =   new   Array("year:‘2007‘", "year:‘2009‘");//如果需要X坐标反置的话,用reverse()函数
      a[1]   =   new   Array("value:30", "value:20");
      a[2]   =   new   Array("value2:30", "value2:20");
      var result=new Array();
      //创建二维数组,相当于a=[a[0],a[1]....]
     for (var j=0;j<a[0].length;j++) {//列的变化
             result[j]=new Array();
          for (var i=0;i<a.length;i++) {//按<列>取值放入数组中
              result[j].push(a[i][j]);//变量i为对应行数坐标
      }
      }
      //alert(a[0].length);
     $(document).ready(function () {
     var obj = new Object();
     var arr = [];
     for (var h=0;h<a[0].length;h++) {
         //var define = "{"+result[1].toString()+"}";
       obj[h] = eval(‘(‘ + "{"+result[a[0].length-h-1].toString()+"}" + ‘)‘);
       arr.push(obj[h])
     }
     //alert(arr.join());
         new Morris.Line({
  element: ‘myfirstchart‘,
  data: arr,//注意这里的写的形式和原来的对比下
  xkey: ‘year‘,
  ykeys: [‘value‘,‘value2‘],
  labels: [‘Value‘,‘value2‘]
});
  });
  </script>
 </head>
 <body>
  <h1>Area charts</h1>
  <div id="myfirstchart" style="height: 250px;"></div>
 </body>
</html>

效果图就不上了

时间: 2024-12-19 07:48:54

Morris.js-利用JavaScript生成时序图的相关文章

Morris.js和flot绘制折线图的比较

[文章摘要] 最近用开源的AdminLTE做框架感觉效果特别好,其针对图表库Morris.js和flot都提供了不错的支持,也都提供了这两者的例子.不过Morris.js是基于Raphael.js来的,也就是其使用SVG和VML来绘制图形,而flot则是使用Canvas进行绘制,在绘制效率和浏览器兼容性等方面会有出入,同时两者需要的数据格式也不相同.本文中对两者的使用和性能进行了比较. [文章索引] Morris.js的使用 flot的使用 性能比较 [一.Morris.js的使用] Morri

IntelliJ IDEA 如何生成时序图?

进入扩展程序安装 File > Settings > Plugins > Browse Repositories 搜索 SequenceDiagram,点击右边 Install 安装,然后重启 IDEA . 在需要生成流程时序图的方法 右键 > 选择 "SequenceDiagram..." > 点击 OK 其中 "Display only project classes" 表示是否只显示当前项目的类文件,不勾选的话可以显示依赖JAR包

利用Javascript生成txt文本文件

<script type="text/javascript"> // 将字符串用txt的格式报存 ie中会出现中文乱码的问题 var saveAs = saveAs || (function(view) { "use strict"; // IE <10 is explicitly unsupported if (typeof view === "undefined" || typeof navigator !== "

js 利用canvas 生成文字图片

// text,需要生成的文字 // font,字体样式 drawLogo: function(text, font) { // 创建画布 let canvas = document.createElement('canvas'); // 绘制文字环境 let context = canvas.getContext('2d'); // 设置字体 context.font = font; // 获取字体宽度 let width = context.measureText(text).width;

【知了堂学习笔记】/利用JavaScript对手风琴的实现/Aidrich

利用JavaScript实现banner图手风琴效果 2018-01-14 这一篇文章主要是利用纯JavaScript实现手风琴效果代码,希望能给您带来一定的帮助,感兴趣的小伙伴可以进行一个参考. 首先我给大家先介绍一下为什么实现的效果为什么叫做手风琴吧,可能大家都见过手风琴, 没错,就是这样的一个效果,我们在网页上实现一个手风琴的效果就像这个手风琴一样,在一块变宽的时候,另外一块会变窄,那么怎么用JavaScript代码去实现这样的一个效果呢? 接下来我将为大家呈现出我所写的代码,先说明只是呈

javascript生成表格增删改查 JavaScript动态改变表格单元格内容 动态生成表格 JS获取表格任意单元格 javascript如何动态删除表格某一行

jsp页面表格布局Html代码 <body > <center> <input type="text" value="111" id="mytext"> <table border="1" width="60%" id="mytable"> <tr> <td id="td1">第一行第一列<

eclipse下生成Java类图和时序图,生成UML图

最近老板让我做类图和时序图,提苦恼的,完全不会,就从网上整理了些 1.安装和使用AmaterasUML 安装AmaterasUML前,需要先安装GEF 采用eclipse在线安装方式安装就好. eclipse在线安装GEF的地址:http://download.eclipse.org/tools/gef/updates/releases/ 安装好GEF后,安装AmaterasUML 先到如下地址下载:http://sourceforge.jp/projects/amateras/download

利用JavaScript所见即所得的生成Excel表格

笔者认为,解决问题的途径n种,也有很多组合的使用.我们用Excel导出大量数据的时候,可能会从服务器端,但如果数据量较小,是不是也可以考虑使用JavaScript就可以轻量级的导出呢.另外实际工作中,用户也会考虑,所见即所得的导出当前见到的内容到Excel表格中.这里,笔者有那么一丢丢感想,像文档数据.文件数据.图片数据归根结底都是一些数据码,而数据码的解析方式也是分多钟的,像.html的文件可以用记事本.浏览器.编辑工具等打开.这里笔者就利用Excel能够打开html文档,投机取巧了一把后缀名

chart.js插件生成折线图时数据普遍较大时Y轴数据不从0开始的解决办法[bubuko.com]

chart.js插件生成折线图时数据普遍较大时Y轴数据不从0开始的解决办法,原文: 默认情况下如下图 Y轴并不是从0开始,这样折现图的幅度会很大,不是正常的幅度,解决办法如下, 示例代码: window.onload = function () { var ctx = document.getElementById("canvas").getContext("2d"); window.myLine = new Chart(ctx).Line(lineChartDat