|
|
51CTO旗下网站
|
|
移动端

最好的3个开源JavaScript图表库

对于数据可视化和制作精美网站来说,图表和图形很重要。视觉上的展示让分析大块数据及传递信息变得更简单。JavaScript 图表库能让数据以极好的、易于理解的和交互的方式进行可视化,还能够优化你的网站设计。

作者:Dr.michael J.garbade来源:Linux中国|2018-09-25 11:19

 

图表及其它可视化方式让传递数据的信息变得更简单。

对于数据可视化和制作精美网站来说,图表和图形很重要。视觉上的展示让分析大块数据及传递信息变得更简单。JavaScript 图表库能让数据以极好的、易于理解的和交互的方式进行可视化,还能够优化你的网站设计。

本文会带你学习最好的 3 个开源 JavaScript 图表库。

1、 Chart.js

Chart.js 是一个开源的 JavaScript 库,你可以在自己的应用中用它创建生动美丽和交互式的图表。使用它需要遵循 MIT 协议。

使用 Chart.js,你可以创建各种各样令人印象深刻的图表和图形,包括条形图、折线图、范围图、线性标度和散点图。它可以响应各种设备,使用 HTML5 Canvas 元素进行绘制。

示例代码如下,它使用该库绘制了一个条形图。本例中我们使用 Chart.js 的内容分发网络(CDN)来包含这个库。注意这里使用的数据仅用于展示。

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4.   <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.5.0/Chart.min.js"></script>
  5. </head> 
  6. <body>   
  7.     <canvas id="bar-chart" width=300" height="150"></canvas>  
  8.     <script>     
  9. new Chart(document.getElementById("bar-chart"), {
  10.     type: 'bar',
  11.     data: {
  12.       labels: ["North America", "Latin America", "Europe", "Asia", "Africa"],
  13.       datasets: [
  14.         {
  15.           label: "Number of developers (millions)",
  16.           backgroundColor: ["red", "blue","yellow","green","pink"],
  17.           data: [7,4,6,9,3]
  18.         }
  19.       ]
  20.     },
  21.     options: {
  22.       legend: { display: false },
  23.       title: {
  24.         display: true,
  25.         text: 'Number of Developers in Every Continent'
  26.       },
  27.  
  28.       scales: {
  29.             yAxes: [{
  30.                 ticks: {
  31.                     beginAtZero:true
  32.                 }
  33.             }]
  34.         } 
  35.     } 
  36. });
  37.     </script>   
  38. </body>
  39. </html>

如你所见,通过设置 typebar 来构造条形图。你可以把条形体的方向改成其他类型 —— 比如把 type 设置成 horizontalBar

backgroundColor 数组参数中提供颜色类型,就可以设置条形图的颜色。

颜色被分配给关联数组中相同索引的标签和数据。例如,第二个标签 “Latin American”,颜色会是 “蓝色(blue)”(第二个颜色),数值是 4(data 中的第二个数字)。

代码的执行结果如下。

2、 Chartist.js

Chartist.js 是一个简单的 JavaScript 动画库,你能够自制美丽的响应式图表,或者进行其他创作。使用它需要遵循 WTFPL 或者 MIT 协议。

这个库是由一些对现有图表工具不满的开发者进行开发的,它可以为设计师或程序员提供美妙的功能。

在项目中包含 Chartist.js 库后,你可以使用它们来创建各式各样的图表,包括动画,条形图和折线图。它使用 SVG 来动态渲染图表。

这里是使用该库绘制一个饼图的例子。

  1. <!DOCTYPE html>
  2. <html>
  3. <head>   
  4.     <link href="https//cdn.jsdelivr.net/chartist.js/latest/chartist.min.css" rel="stylesheet" type="text/css" />   
  5.     <style>
  6.         .ct-series-a .ct-slice-pie {
  7.             fill: hsl(100, 20%, 50%); /* filling pie slices */
  8.             stroke: white; /*giving pie slices outline */          
  9.             stroke-width: 5px;  /* outline width */
  10.           } 
  11.           .ct-series-b .ct-slice-pie {
  12.             fill: hsl(10, 40%, 60%);
  13.             stroke: white;
  14.             stroke-width: 5px;
  15.           } 
  16.           .ct-series-c .ct-slice-pie {
  17.             fill: hsl(120, 30%, 80%);
  18.             stroke: white;
  19.             stroke-width: 5px;
  20.           } 
  21.           .ct-series-d .ct-slice-pie {
  22.             fill: hsl(90, 70%, 30%);
  23.             stroke: white;
  24.             stroke-width: 5px;
  25.           }
  26.           .ct-series-e .ct-slice-pie {
  27.             fill: hsl(60, 140%, 20%);
  28.             stroke: white;
  29.             stroke-width: 5px;
  30.           } 
  31.     </style>
  32.      </head> 
  33. <body> 
  34.     <div class="ct-chart ct-golden-section"></div> 
  35.     <script src="https://cdn.jsdelivr.net/chartist.js/latest/chartist.min.js"></script> 
  36.     <script>       
  37.       var data = {
  38.             series: [45, 35, 20]
  39.             }; 
  40.       var sum = function(a, b) { return a + b };
  41.  
  42.       new Chartist.Pie('.ct-chart', data, {
  43.         labelInterpolationFnc: function(value) {
  44.           return Math.round(value / data.series.reduce(sum) * 100) + '%';
  45.             }
  46.               });
  47.      </script>
  48. </body>
  49. </html>

使用 Chartist JavaScript 库,你可以使用各种预先构建好的 CSS 样式,而不是在项目中指定各种与样式相关的部分。你可以使用这些样式来设置已创建的图表的外观。

比如,预创建的 CSS 类 .ct-chart 是用来构建饼状图的容器。还有 .ct-golden-section 类可用于获取纵横比,它基于响应式设计进行缩放,帮你解决了计算固定尺寸的麻烦。Chartist 还提供了其它类别的比例容器,你可以在自己的项目中使用它们。

为了给各个扇形设置样式,可以使用默认的 .ct-serials-a 类。字母 a 是根据系列的数量变化的(a、b、c,等等),因此它与每个要设置样式的扇形相对应。

Chartist.Pie 方法用来创建一个饼状图。要创建另一种类型的图表,比如折线图,请使用 Chartist.Line

代码的执行结果如下。

3、 D3.js

D3.js 是另一个好用的开源 JavaScript 图表库。使用它需要遵循 BSD 许可证。D3 的主要用途是,根据提供的数据,处理和添加文档的交互功能,。

借助这个 3D 动画库,你可以通过 HTML5、SVG 和 CSS 来可视化你的数据,并且让你的网站变得更精美。更重要的是,使用 D3,你可以把数据绑定到文档对象模型(DOM)上,然后使用基于数据的函数改变文档。

示例代码如下,它使用该库绘制了一个简单的条形图。

  1. <!DOCTYPE html>
  2. <html>
  3. <head>     
  4.     <style>
  5.     .chart div {
  6.       font: 15px sans-serif;
  7.       background-color: lightblue;
  8.       text-align: right;
  9.       padding:5px;
  10.       margin:5px;
  11.       color: white;
  12.       font-weight: bold;
  13.     }       
  14.     </style>
  15.      </head> 
  16. <body> 
  17.     <div class="chart"></div>   
  18.     <script src="https://cdnjs.cloudflare.com/ajax/libs/d3/5.5.0/d3.min.js"></script> 
  19.     <script> 
  20.       var data = [342,222,169,259,173]; 
  21.       d3.select(".chart")
  22.         .selectAll("div")
  23.         .data(data)
  24.           .enter()
  25.           .append("div")
  26.           .style("width", function(d){ return d + "px"; })
  27.           .text(function(d) { return d; });    
  28.  
  29.     </script>
  30. </body>
  31. </html>

使用 D3 库的主要概念是应用 CSS 样式选择器来定位 DOM 节点,然后对其执行操作,就像其它的 DOM 框架,比如 JQuery。

将数据绑定到文档上后,.enter() 函数会被调用,为即将到来的数据构建新的节点。所有在 .enter() 之后调用的方法会为数据中的每一个项目调用一次。

代码的执行结果如下。

总结

JavaScript 图表库提供了强大的工具,你可以将自己的网络资源进行数据可视化。通过这三个开源库,你可以把自己的网站变得更好看,更容易使用。

你知道其它强大的用于创造 JavaScript 动画效果的前端库吗?请在下方的评论区留言分享。

【编辑推荐】

  1. Linux桌面中4个开源媒体转换工具
  2. 不造假!如何让你的开源项目在一周内收集3500个Github star?
  3. 再添开源项目!腾讯AILab开源业内最大规模多标签图像数据集
  4. 开源软件受云服务商影响,共用条款终止开源滥用现象
  5. 面向敏捷开发团队的7个开源项目管理工具
【责任编辑:庞桂玉 TEL:(010)68476606】

点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

Java (JDK 6)学习笔记

Java学习笔记在JavaWorld技术论坛(http://www.javaworld.com.tw/)和作者的网站(http://caterpillar.onlyfun.net/Gossip/)提供免费下载...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊