chart.js图表库案例赏析,饼图添加文字

Chart.js 是一个令人印象深刻的 JavaScript 图表库,建立在 HTML5 Canvas 基础上。目前,它支持6种图表类型(折线图,条形图,雷达图,饼图,柱状图和极地区域区)。而且,这是一个独立的包,不依赖第三方 JavaScript 库,小于 5KB。

前天用了一下,由于以前也稍微用过,今天总结了一下(水平有限,如果问题,请不吝赐教):

开发中文文档:http://www.bootcss.com/p/chart.js/docs/

chart.js下载:

把所有的图标全都写了一遍,并把所有的可控属性(颜色等)均已随机数出现,大小自己控制;

这是所有的代码,只有一个Chart.js外部文件,引来即用:

<!doctype html>
<html>
<head>
<title>Chart</title>
<mate charset="utf-8"></mate>
<script src="Chart.js"></script>
</head>
<body> <div style="width:50%;margin: 0px auto;"> <!--柱状图开始-->
<div>
<h1>柱状图(Bar chart)</h1>
<canvas id="canvas-bar" height="450" width="600"></canvas>
</div> <script>
var randomScalingFactor = function(){ return Math.round(Math.random()*100)};
var randomScalingFactor_255 = function(){ return Math.round(Math.random()*255)};
var radom_color = function(){
return '#'+('00000'+(Math.random()*0x1000000<<0).toString(16)).slice(-6);
}
var barChartData = {
labels : ["January","February","March","April","May","June","July"],
datasets : [
{
fillColor : "rgba(" + randomScalingFactor_255() + "," + randomScalingFactor_255() + "," + randomScalingFactor_255() + ",0.5)",
strokeColor : "rgba(" + randomScalingFactor_255()+","+ randomScalingFactor_255()+"," + randomScalingFactor_255() + ",0.8)",
highlightFill: "rgba(" + randomScalingFactor_255() + "," + randomScalingFactor_255() + "," + randomScalingFactor_255() + ",0.75)",
highlightStroke: "rgba(" + randomScalingFactor_255() + "," + randomScalingFactor_255() + "," + randomScalingFactor_255() + ",1)",
data : [randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor()]
},
{
fillColor : "rgba(" + randomScalingFactor_255() + "," + randomScalingFactor_255() + "," + randomScalingFactor_255() + ",0.5)",
strokeColor : "rgba(" + randomScalingFactor_255() + "," + randomScalingFactor_255() + "," + randomScalingFactor_255() + ",0.8)",
highlightFill : "rgba(" + randomScalingFactor_255() + "," + randomScalingFactor_255() + "," + randomScalingFactor_255() + ",0.75)",
highlightStroke : "rgba(" + randomScalingFactor_255() + "," + randomScalingFactor_255() + "," + randomScalingFactor_255() + ",1)",
data : [randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor()]
}
] }
var ctx = document.getElementById("canvas-bar").getContext("2d");
window.myBar = new Chart(ctx).Bar(barChartData, {
responsive : true
});
</script>
<!--柱状图结束--> <!--曲线图(Line chart)开始-->
<div>
<h1>曲线图(Line chart)</h1>
<canvas id="canvas-line" height="450" width="600"></canvas>
</div>
<script>
var randomScalingFactor = function(){ return Math.round(Math.random()*100)};
var lineChartData = {
labels : ["January","February","March","April","May","June","July"],
datasets : [
{
label: "My First dataset",
fillColor : "rgba(" + randomScalingFactor_255() + "," + randomScalingFactor_255() + "," + randomScalingFactor_255() + ",0.2)",
strokeColor : "rgba(" + randomScalingFactor_255() + "," + randomScalingFactor_255() + "," + randomScalingFactor_255() + ",1)",
pointColor : "rgba(" + randomScalingFactor_255() + "," + randomScalingFactor_255() + "," + randomScalingFactor_255() + ",1)",
pointStrokeColor : radom_color(),
pointHighlightFill : radom_color(),
pointHighlightStroke : "rgba(" + randomScalingFactor_255() + "," + randomScalingFactor_255() + "," + randomScalingFactor_255() + ",1)",
data : [randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor()]
},
{
label: "My Second dataset",
fillColor : "rgba(" + randomScalingFactor_255() + "," + randomScalingFactor_255() + "," + randomScalingFactor_255() + ",0.2)",
strokeColor : "rgba(" + randomScalingFactor_255() + "," + randomScalingFactor_255() + "," + randomScalingFactor_255() + ",1)",
pointColor : "rgba(" + randomScalingFactor_255() + "," + randomScalingFactor_255() + "," + randomScalingFactor_255() + ",1)",
pointStrokeColor : radom_color(),
pointHighlightFill : radom_color(),
pointHighlightStroke : "rgba(" + randomScalingFactor_255() + "," + randomScalingFactor_255() + "," + randomScalingFactor_255() + ",1)",
data : [randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor()]
},
{
label: "My First dataset",
fillColor : "rgba(" + randomScalingFactor_255() + "," + randomScalingFactor_255() + "," + randomScalingFactor_255() + ",0.3)",
strokeColor : "rgba(" + randomScalingFactor_255() + "," + randomScalingFactor_255() + "," + randomScalingFactor_255() + ",1)",
pointColor : "rgba(" + randomScalingFactor_255() + "," + randomScalingFactor_255() + "," + randomScalingFactor_255() + ",1)",
pointStrokeColor : '#'+('00000'+(Math.random()*0x1000000<<0).toString(16)).slice(-6),
pointHighlightFill : '#'+('00000'+(Math.random()*0x1000000<<0).toString(16)).slice(-6),
pointHighlightStroke : "rgba(" + randomScalingFactor_255() + "," + randomScalingFactor_255() + "," + randomScalingFactor_255() + ",1)",
data : [randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor()]
}
] }
var ctx = document.getElementById("canvas-line").getContext("2d");
window.myLine = new Chart(ctx).Line(lineChartData, {
responsive: true
})
</script> <!--曲线图(Line chart)结束--> <!--雷达图或蛛网图(Radar chart)开始-->
<div>
<h1>雷达图或蛛网图(Radar chart)</h1>
<canvas id="canvas-radar" height="450" width="600"></canvas>
</div>
<script>
var randomScalingFactor = function(){ return Math.round(Math.random()*100)};
var radarData = {
labels : ["January","February","March","April","May","June","July"],
datasets : [
{
label: "My First dataset",
fillColor : "rgba(" + randomScalingFactor_255() + "," + randomScalingFactor_255() + "," + randomScalingFactor_255() + ",0.2)",
strokeColor : "rgba(" + randomScalingFactor_255() + "," + randomScalingFactor_255() + "," + randomScalingFactor_255() + ",1)",
pointColor : "rgba(" + randomScalingFactor_255() + "," + randomScalingFactor_255() + "," + randomScalingFactor_255() + ",1)",
pointStrokeColor : '#'+('00000'+(Math.random()*0x1000000<<0).toString(16)).slice(-6),
pointHighlightFill : '#'+('00000'+(Math.random()*0x1000000<<0).toString(16)).slice(-6),
pointHighlightStroke : "rgba(" + randomScalingFactor_255() + "," + randomScalingFactor_255() + "," + randomScalingFactor_255() + ",1)",
data : [randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor()]
},
{
label: "My Second dataset",
fillColor : "rgba(" + randomScalingFactor_255() + "," + randomScalingFactor_255() + "," + randomScalingFactor_255() + ",0.2)",
strokeColor : "rgba(" + randomScalingFactor_255() + "," + randomScalingFactor_255() + "," + randomScalingFactor_255() + ",1)",
pointColor : "rgba(" + randomScalingFactor_255() + "," + randomScalingFactor_255() + "," + randomScalingFactor_255() + ",1)",
pointStrokeColor : '#'+('00000'+(Math.random()*0x1000000<<0).toString(16)).slice(-6),
pointHighlightFill : '#'+('00000'+(Math.random()*0x1000000<<0).toString(16)).slice(-6),
pointHighlightStroke : "rgba(" + randomScalingFactor_255() + "," + randomScalingFactor_255() + "," + randomScalingFactor_255() + ",1)",
data : [randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor(),randomScalingFactor()]
}, ] }
var ctx = document.getElementById("canvas-radar").getContext("2d");
window.myLine = new Chart(ctx).Radar(radarData, {
responsive: true
})
</script>
<!--雷达图或蛛网图(Radar chart)结束--> <!--极地区域图(Polar area chart)开始-->
<div>
<h1>极地区域图(Polar area chart)</h1>
<canvas id="canvas-polar" height="450" width="600"></canvas>
</div>
<script>
var randomScalingFactor = function(){ return Math.round(Math.random()*100)};
var polarData = [
{
value: 300,
color:"#F7464A",
highlight: "#FF5A5E",
label: "Red"
},
{
value: 50,
color: "#46BFBD",
highlight: "#5AD3D1",
label: "Green"
},
{
value: 100,
color: "#FDB45C",
highlight: "#FFC870",
label: "Yellow"
},
{
value: 40,
color: "#949FB1",
highlight: "#A8B3C5",
label: "Grey"
},
{
value: 120,
color: "#4D5360",
highlight: "#616774",
label: "Dark Grey"
} ];
var ctx = document.getElementById("canvas-polar").getContext("2d");
window.myLine = new Chart(ctx).PolarArea(polarData, {
responsive: true
})
</script>
<!--极地区域图(Polar area chart)结束--> <!--饼图(Pie chart)开始-->
<div>
<h1>饼图(Pie chart)</h1>
<canvas id="chart-pie" width="450" height="450"/>
</div>
<script> var pieData = [
{
value: 300,
color: radom_color(),
highlight: radom_color(),
label: "Red" },
{
value: 200,
color: radom_color(),
highlight: radom_color(),
label: "Green"
},
{
value: 100,
color: radom_color(),
highlight: radom_color(),
label: "Yellow"
},
{
value: 400,
color: radom_color(),
highlight: radom_color(),
label: "Grey"
},
{
value: 120,
color: radom_color(),
highlight: radom_color(),
label: "Dark Grey"
}
];
var ctx = document.getElementById("chart-pie").getContext("2d");
window.myPie = new Chart(ctx).Pie(pieData);
</script> <!--饼图(Pie chart)结束-->
<!--环形图(Doughnut chart)开始-->
<div style="width: 600px;height:600px;">
<h1>环形图(Doughnut chart)</h1>
<canvas id="chart-Doughnut" width="300" height="300"/>
</div>
<script>
var doughnutData = [
{
value: 1,
label: "One",
color:radom_color()
},
{
value: 2,
label: "Two",
color:radom_color()
},
{
value: 3,
label: "Three",
color:radom_color()
},
{
value: 4,
label: "Four",
color:radom_color()
},
{
value: 5,
label: "Five",
color:radom_color()
} ]; var ctx = document.getElementById("chart-Doughnut").getContext("2d");
window.myDoughnut = new Chart(ctx).Doughnut(doughnutData, {responsive : true});
</script>
<!--环形图(Doughnut chart)结束--> </div> </body>
</html>

项目需要在饼图上写字(最后没用),找到了一个高手改过源码之后的文件:http://download.csdn.net/detail/renfufei/7102809

具体做法:

饼状图,添加文字
1. 修改的是 Chart.js,大致在 772行 编码,也可以搜索 renfufei@qq.com 
2. 示例是 samples/pie.html,使用的是 UTF-8编码

--
var pieData = [
{
value: 30,
color:"#F38630"
,text: "男生"
},
{
value : 50,
color : "#E0E4CC"
,text: "女生"
},
{
value : 100,
color : "#69D2E7"
,text: "男人"
} ];
--

chart.js可以完成功能,但是对于项目中的特殊需求并不能很好的实现~

 

最新文章

  1. 登陆数据库,界面一直保持正在登陆的状态,oracle使用界面无法登陆
  2. java连接mysql步骤
  3. 百度上传工具webuploader,图片上传附加参数
  4. sqlserver常用日期、时间函数和格式
  5. CentOS yum安装和配置MySQL(转载)
  6. actionInvocation
  7. 在程序中,你敢怎样使用“goto”语句!
  8. 201521123073 《Java程序设计》第5周学习总结
  9. Win 10 Revit 2019 安装过程,亲自踩的一遍坑,有你想要的细节
  10. vue input添加回车触发
  11. 执行maven install跳过执行maven test方法(网上搜的记录一下,方面以后使用)
  12. View - RemoteViews
  13. IT观察】网络通信、图片显示、数据库操作……Android程序员如何利用开源框架
  14. Spring Cloud入门教程(二):客户端负载均衡(Ribbon)
  15. json 的相互 转换
  16. C#2d命令行小游戏
  17. 【娱乐向】制作Chrome天气预报扩展程序
  18. checked 和 unchecked 基元类型操作
  19. snmpwalk用法
  20. java反射专题三

热门文章

  1. hdu1505
  2. svn不能提交 svn: is out of date; try updating
  3. thinkphp实现分页
  4. Android IOS WebRTC 音视频开发总结(十)-- webrtc入门002
  5. shell脚本中的特殊符号
  6. linux 下wifi 功能的实现
  7. Transaction &#39;IREG&#39;, Abend &#39;APCT&#39;, at &#39;????&#39;.
  8. android中关闭软键盘
  9. ipv4、ipv6的socket同时监听“bind: Address already in use”的解决方法
  10. puppet实现主从部署各种软件实战参考模型