在同一页面显示多个JavaScript统计图表
最近我接到一个开发任务,要求就“售后服务客户满意度调查问卷表”里客户填写的反馈答案做一个统计。
问题的例子如下:
- 您最后一次是何时购买了我们的产品?
- 服务人员服务态度是否友好、工作尽职尽责?
- 您对我公司提供的售后服务总体感觉如何?
。。。
我要实现的功能是出一个报表,在同一个页面显示对于每个问题,每个答案的总共出现次数。
我实现了一个简单的效果,如下图所示:
当然六个图标用的都是一模一样的测试数据,主要解决了多个图表出现在同一个页面里的布局问题。
大家用下面这个链接测试下效果。用Chrome开发者工具即可查看093_chart.html的实现。
http://i042416.github.io/FioriODataTestTool2014/WebContent/093_chart.html
手机上打开的效果。
简单过一下代码:
两个div里各包含了6个canvas。第一个div负责用6个饼状图来显示问题的结果,第二个div里的6个canvas则显示柱状图。每个canvas我用了标注成!important的display:inline属性,来强制让这些位于canvas节点里的统计图从左到右显示,而不是默认的每显示一个就换行。
function loaded(){
var totalWidth = getBodyNode().clientWidth;
console.log("width in load: " + totalWidth);
var aCharts = document.getElementsByTagName("canvas");
for( var i = 0; i < aCharts.length; i++){
aCharts[i].width = totalWidth / 6.5;
}
var option = {
type: "pie",
xAxisData: ["Red", "Blue", "Yellow", "Green", "Purple", "Orange"],
yAxisData: [12, 19, 3, 5, 2, 3],
yAxisLabel: "Number of Votes"
};
for( var i = 1; i <= 6; i++ ){
createChartOnCanvas("myChart" + i, option);
}
option.type = "bar";
for( var i = 1; i <= 6; i++ ){
createChartOnCanvas("barChart" + i, option);
}
}
第41行把当前窗口总的宽度通过body节点的clientWidth属性来获得,然后除以6.5,商即为每个统计图的宽度。之所以除以6.5而不除以6是为了给每一行的统计图之间预留一些空隙。
统计图的类型,X和Y坐标的数据和标签通过option对象传入到函数createChartOnCanvas中。
要获取更多Jerry的原创技术文章,请关注公众号"汪子熙"

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
分享一个开源的JavaScript统计图表库,40行代码实现专业统计图表
提升程序员工作效率的工具/技巧推荐系列 推荐一个功能强大的文件搜索工具SearchMyFiles 介绍一个好用的免费流程图和UML绘制软件-Diagram Designer 介绍Windows任务管理器的替代者-Process Explorer 介绍一个强大的磁盘空间检测工具Space Sniffer 如何在电脑上比较两个相似文件的差异 程序员工作效率提升系列-推荐一个JSON文件查看和修改的小工具 将Chrome调试器里的JavaScript变量保存成本地JSON文件 这可能是史上最简单易用的开源统计图表绘制库了。柱状图,饼状图,点状图等等您能想到的类型全部支持。 这个开源库的官网:http://www.chartjs.org/ 直接看如何只用40行代码就实现专业的统计图表。代码如下: <html> <canvas id="myChart" width="300px" height="300px"></canvas> <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2....
-
下一篇
使用go编写一个先进先出的队列,并完成帮助文档的编写、浏览、打包安装
胡说八道 Go 是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易。 现代计算机技术的发展已经快打破英特尔戈登·摩尔提出的摩尔定律了。计算机硬件的发展速度已经远远赶不上软件技术的发展,意味着在现有硬件基础上,高效的性能才是王道。像Go、Rust等这样的语言才是未来的主导语言。 在开发人员眼中,写出完美的API很容易,可写好文档却不容易,还有各种示例程序。然而Go、Rust等这类的语言本省就带了快捷编写文档的命令。用起来也相当舒服。接下来,通过实例来演示一下Go的API文档编写。 新建工程 |--src |----queue | | queue.go | | queue_test.go |------queueentry | | main.go queue.go 编写的重点在每个类型和方法上边的注释上,正是有了编写的这些注释,才有了文档中的说明,so, 一定要写好注释! package queue // 先进先出队列 type Queue []int // 向队列中添加一个元素 // e.g. q.Push(9) func (q *Queue) Push (v int) { ...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Dcoker安装(在线仓库),最新的服务器搭配容器使用
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8编译安装MySQL8.0.19
- MySQL8.0.19开启GTID主从同步CentOS8