使用D3制作图表(一)
来源:互联网 发布:hifiman supermini知乎 编辑:程序博客网 时间:2024/05/18 03:10
D3,github开源,代码由javascript编写,目的是数据可视化
还是慕课网的视频学习的记录。
感谢视频作者 @LuckyYang
1.画布制作
线形图表
步骤:web容器---生成曲线--生成xy轴和标签
index.html
<!DOCTYPE HTML><html> <head> <meta charset="utf-8"> <link rel="stylesheet" href="css/style.css" media="screen" type="text/css"/> </head> <body> <div id="container"></div> <script src='http://d3js.org/d3.v3.js'></script> <script src="js/index.js"></script> </body></html>
style.css
#container{background: #ddd;width: 500px;height:250px;}
index.js
//svgvar svg=d3.select("#container").append("svg")//width,height.attr("width",500) //attribute.attr("height",250)d3.select("svg").append("g").attr("transform","translate(50,30)")
可以右键选择 edit as html 来看编辑效果
2. 绘制曲线
通过实际数据来生成曲线
index.js
//svgvar svg=d3.select("#container").append("svg")//width,height.attr("width",500) //attribute.attr("height",250)var g=d3.select("svg").append("g").attr("transform","translate(50,30)") //沿x轴偏移50pxvar data=[1,3,5,7,8,4,3,7]var line_generator=d3.svg.line().x(function(d,i){return i;}) //0,1,2,3,.....y(function(d){return d;}) //1,3,5d3.select("g").append("path") //<path d="M1,0L20,40L40,50L100,100L0,200"></path> 起始点是1,0,line到点20,40,line到点40,50.attr("d",line_generator(data))
下面我们为了让上图中小小的曲线根据画布成比例的放大,我们重构一下index.js的代码
var width=500,height=250,margin={left:50,top:30,right:20,bottom:20},g_width=width-margin.left-margin.right,g_height=height-margin.top-margin.bottom;//svgvar svg=d3.select("#container").append("svg")//width,height.attr("width",width) //attribute.attr("height",height)var g=d3.select("svg").append("g").attr("transform","translate("+margin.left+","+margin.top+")") //沿x轴偏移50pxvar data=[1,3,5,7,8,4,3,7]var scale_x=d3.scale.linear().domain([0,data.length-1]).range([0,g_width])var scale_y=d3.scale.linear().domain([0,d3.max(data)]).range([0,g_height])var line_generator=d3.svg.line().x(function(d,i){return scale_x(i);}) //0,1,2,3,.....y(function(d){return scale_y(d);}) //1,3,5d3.select("g").append("path") //<path d="M1,0L20,40L40,50L100,100L0,200"></path>.attr("d",line_generator(data))
结果如下:
上面那个样式很难看,我们直接在google开发者工具中调整(注意:刷新后会消失,只是帮助我们看调整效果)
然后我们将样式复制到style.css中
但是我们需要的是一条曲线而不是直线,那么我们修改index.js,加入一行代码:
var line_generator=d3.svg.line().x(function(d,i){return scale_x(i);}) //0,1,2,3,.....y(function(d){return scale_y(d);}) //1,3,5<span style="color:#ff0000;">.interpolate("cardinal")</span> //让直线变成拟合的曲线
成功
0 0
- 使用D3制作图表(一)
- 使用D3制作统计图表、线性图表、水平柱状图表、饼图 -- (一)线性图表
- 使用D3制作图表(二)
- 使用D3制作图表(三)
- 使用D3制作统计图表、线性图表、水平柱状图表、饼图 -- (二)面积图表
- 使用D3制作统计图表、线性图表、水平柱状图表、饼图 -- (三)竖直柱状图表
- 使用D3制作统计图表、线性图表、水平柱状图表、饼图 -- (五)饼状图表
- 使用D3制作统计图表、线性图表、水平柱状图表、饼图 -- (四)水平柱状图表+坐标轴
- d3.js制作动态图表
- d3图表中饼图的使用示例
- d3.js——面积图表的制作
- 使用D3.js实现柱形图的制作
- d3.js使用svg制作图标
- [d3.js] D3.JS 基于javascript的图表展示库<一>----简单介绍
- 【D3】D3 使用教程(1)-数据
- 数据可视化实战:使用D3设计交互式图表
- 《数据可视化实战:使用D3设计交互式图表 》笔记
- 使用ZedGraph制作联动图表
- 【归并排序】php实现
- gcc编译器优化给我们带来的麻烦???
- Windows安装和使用zookeeper
- POJ1004 Financial Management
- Socket编程实践(10) --select的限制与poll的使用
- 使用D3制作图表(一)
- 封装的 mongodb的helper
- 栈--出栈和入栈
- android inflater
- http apache服务器配置(域名+转发端口)
- 解决php session验证码不现实的问题
- 南阳 一道水题
- Problem C 比大小
- poj 3498 March of the Penguins 点流量有限制的最大流