【 D3.js 入门系列 --- 5.1 】 做一个带坐标轴和标签的图表
来源:互联网 发布:在线视频录像软件 编辑:程序博客网 时间:2024/05/29 02:16
本人的个人博客为: www.ourd3js.com
csdn博客为: blog.csdn.net/lzhlzz
转载请注明出处,谢谢。
前面几节讲解了图标、坐标轴、比例等等,这一节整合这些内容做一个实用的图表。结果图如下:
代码如下所示:
<html> <head> <meta charset="utf-8"> <title>Chart</title> </head> <style>.axis path,.axis line{fill: none;stroke: black;shape-rendering: crispEdges;}.axis text {font-family: sans-serif;font-size: 11px;}</style> <body> <script src="http://d3js.org/d3.v3.min.js" charset="utf-8"></script> <script>var width = 600;var height = 600;var dataset = [];var num = 15; //数组的数量for(var i = 0; i < num ; i++){var tempnum = Math.floor( Math.random() * 50 ); // 返回 0~49 整数dataset.push(tempnum);}var svg = d3.select("body").append("svg").attr("width",width).attr("height",height);var xAxisScale = d3.scale.ordinal().domain(d3.range(dataset.length)).rangeRoundBands([0,500]);var yAxisScale = d3.scale.linear().domain([0,d3.max(dataset)]).range([500,0]);var xAxis = d3.svg.axis().scale(xAxisScale).orient("bottom");var yAxis = d3.svg.axis().scale(yAxisScale).orient("left");var xScale = d3.scale.ordinal().domain(d3.range(dataset.length)).rangeRoundBands([0,500],0.05);var yScale = d3.scale.linear().domain([0,d3.max(dataset)]).range([0,500]);svg.selectAll("rect") .data(dataset) .enter() .append("rect") .attr("x", function(d,i){return 30 + xScale(i); } ) .attr("y",function(d,i){return 50 + 500 - yScale(d) ; }) .attr("width", function(d,i){return xScale.rangeBand(); }) .attr("height",yScale) .attr("fill","red"); svg.selectAll("text") .data(dataset) .enter().append("text") .attr("x", function(d,i){return 30 + xScale(i); } ) .attr("y",function(d,i){return 50 + 500 - yScale(d) ; }) .attr("dx", function(d,i){return xScale.rangeBand()/3; }) .attr("dy", 15).attr("text-anchor", "begin").attr("font-size", 14).attr("fill","white") .text(function(d,i){return d;}); svg.append("g").attr("class","axis").attr("transform","translate(30,550)").call(xAxis);svg.append("g").attr("class","axis").attr("transform","translate(30,50)").call(yAxis); </script> </body> </html>
下面分别讲解上面的代码:
- 31 - 34 行: 随机生成数据,赋于数组
- 36 - 38 行: 定义 svg
- 40 - 54 行: 定义坐标轴的 scale (比例)和坐标轴,48行为 x 轴,52行为 y 轴
- 56 - 62 行: 定义柱形图的 scale
- 64 - 78 行: 绘制柱形图,注意 scale 的使用
- 80 - 98 行: 绘制文字标签,同样注意 scale
- 100 - 108 行: 绘制坐标轴
注意:绘制的时候,要注意绘制的顺序,否则可能会把某些需要的东西覆盖掉。尤其是坐标轴,最好放到最后绘制。
13 0
- 【 D3.js 入门系列 --- 5.1 】 做一个带坐标轴和标签的图表
- 【 D3.js 入门系列 --- 3 】 做一个简单的图表!
- d3.js-做一个简单的图表
- 【 D3.js 入门系列 — 5 】 坐标轴
- d3.js学习4----做一个简单的图表
- 【 D3.js 入门系列 --- 5 】 如何添加坐标轴
- D3.JS坐标轴的使用
- 【 D3.js 入门系列 --- 6 】 如何让图表动起来
- 【 D3.js 入门系列 — 6 】 让图表动起来
- D3.js制作二维坐标轴基本入门
- D3.js初体验 —— 线型图表与坐标轴的绘制
- 做动画用jQuery,做炫酷的图表用d3.js
- d3.js学习5----比例尺和坐标轴
- d3.js在坐标轴遇到的问题
- D3.js:坐标轴
- d3.js-坐标轴
- 【D3.js数据可视化系列教程】--(十三)坐标轴
- 【 D3.js 入门系列 --- 0 】 简介和安装
- http://write.blog.csdn.net/postedit?ref=toolbar
- C#下载文件
- 人生的缺憾
- IOS文件路径处理方法:
- 【每天总结一个ios开发心得…
- 【 D3.js 入门系列 --- 5.1 】 做一个带坐标轴和标签的图表
- 苹果广告:Here's to the cr…
- 在cocos2d-x中打开网页 iOS…
- IOS中字符串与数组的处理
- Android Jni中使用线程及回…
- 移植到android上编译时出现的错误&…
- 登录界面与Android软键盘显示、隐…
- 点滴记录——Windows 7中安装Sublime Text 3、cynwin、SublimeClang
- 字符数组转换成NSString