d3.js读书笔记-2
比例尺
比例尺基本内容
var scale = d3.scale.linear();
scale.domain([100, 500]);
scale.range([10, 350]);
vardataset = [
[5, 20], [480, 90], [250, 50], [100, 33], [330, 95],
[410, 12], [475, 44], [25, 67], [85, 21], [220, 88]
];
d3.max(dataset, function(d) {
return d[0];
});
varxScale = d3.scale.linear()
.domain([0, d3.max(dataset, function(d) { return d[0]; })]) .range([0, 300]);
其它比例尺
数轴
设定数轴
var xAxis = d3.svg.axis()
.scale(xScale)
.orient("bottom");
svg.append("g")
.call(xAxis);
svg.append("g") .attr("class", "axis")
.attr("transform", "translate(0," + (h - padding) + ")") .call(xAxis);
优化刻度
varxAxis = d3.svg.axis()
.scale(xScale)
.orient("bottom")
.ticks(5); //粗略地设置刻度线的数量
一个简单的散点图
//svg的宽度和高度var w = 500;var h = 300;var padding = 30;//初始化数据点var dataset = [];var numDataPoints = 15;//x轴最大的数值var xRange = Math.random() * 1000;//y轴最大的数值var yRange = Math.random() * 1000;for (var i = 0; i < numDataPoints; i++) {var newNumber1 = Math.floor(Math.random() * xRange);var newNumber2 = Math.floor(Math.random() * yRange);dataset.push([newNumber1, newNumber2]);}//创建刻度尺var xScale = d3.scale.linear().domain([0, d3.max(dataset, function(d) { return d[0]; })]).range([padding, w - padding * 2]);var yScale = d3.scale.linear().domain([0, d3.max(dataset, function(d) { return d[1]; })]).range([h - padding, padding]);var rScale = d3.scale.linear().domain([0, d3.max(dataset, function(d) { return d[1]; })]).range([2, 5]);//定义x轴var xAxis = d3.svg.axis().scale(xScale).orient("bottom").ticks(5);//定义y轴var yAxis = d3.svg.axis().scale(yScale).orient("left").ticks(5);//创建svg元素var svg = d3.select("body").append("svg").attr("width", w).attr("height", h);//创建圆形svg.selectAll("circle").data(dataset).enter().append("circle").attr("cx", function(d) {return xScale(d[0]);}).attr("cy", function(d) {return yScale(d[1]);}).attr("r", function(d) {return rScale(d[1]);});//创建标签svg.selectAll("text").data(dataset).enter().append("text").text(function(d) {return d[0] + "," + d[1];}).attr("x", function(d) {return xScale(d[0]);}).attr("y", function(d) {return yScale(d[1]);}).attr("font-family", "sans-serif").attr("font-size", "11px").attr("fill", "red");//将x轴追加到g元素中svg.append("g").attr("class", "axis").attr("transform", "translate(0," + (h - padding) + ")").call(xAxis);//将y轴追加到g元素中svg.append("g").attr("class", "axis").attr("transform", "translate(" + padding + ",0)").call(yAxis);
.axis path,.axis line {fill: none;stroke: black;shape-rendering: crispEdges;}.axis text {font-family: sans-serif;font-size: 11px;}
最终效果如下图所示:
d3.js读书笔记-2相关推荐
- 第一篇博客 赶鸭子上架的d3.js学习笔记(bilibili从零开始画图表学习笔记 感谢万能的b站以及up睿小狼d)
svg: 可缩放矢量图形是基于可扩展标记语言(标准通用标记语言的子集),用于描述二维矢量图形的一种图片格式.他由万维网联盟制定,是一个开放标准.(源代码类似于html) 一个简单的代码 <svg ...
- d3.js学习笔记--Mike Bostock: Thinking with Joins
为什么80%的码农都做不了架构师?>>> 我们可以使用append方法, 来创建一个单一元素: var svg = d3.select('svg'),d = {"x& ...
- d3.js学习笔记②搭建服务器(含报错解决)
强烈建议自己搭建一个服务器,否则在后续往js里导入本地数据(比如csv.json文件等)的时候会报错.我用的是Apache服务器,下载.安装过程参考这篇文章:Apache安装配置 在浏览器输入http ...
- 图片水中倒影 【js读书笔记】
主要利用HTML5的canvas与IE浏览器的滤镜技术 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset ...
- 每周小节-2 d3-zoom,pan,brush阅读心得 d3.js on angular读书笔记
总结一下这周学习代码的心得: 工程地址是https://github.com/msand/d3zoompanbrushchart 代码的主要工作大致是这样的: 0.初始化(建图,坐标轴,数据,线段) ...
- JavaScript、jQuery、HTML5、Node.js实例大全-读书笔记3
技术非常多,样例非常多.仅仅好慢慢学,慢慢实践!!如今学的这本书是[JavaScript实战----JavaScript.jQuery.HTML5.Node.js实例大全] JavaScript.jQ ...
- Node.js: 深入浅出Nodejs读书笔记
今天终于把朴灵老师写的<深入浅出Node.js>给学习 完了, 这本书不是一本简单的Node入门书籍,它没有停留在Node介绍或者框架.库的使用层面上,而是从不同的视角来揭示Node自己内 ...
- JavaScript、jQuery、HTML5、Node.js实例大全-读书笔记2
技术很多,例子很多,只好慢慢学,慢慢实践!!现在学的这本书是[JavaScript实战----JavaScript.jQuery.HTML5.Node.js实例大全] JavaScript.jQuer ...
- [读书笔记]从物联到万联——Node.js与树莓派万维物联网构建实战
前言 本文是"从物联到万联,Node.js与树莓派万维物联网构建实战"一书的读书笔记,该书翻译自"Building the Web of Things with exam ...
最新文章
- sql 只取一条记录_后端程序员必备:书写高质量SQL的30条建议
- Log4j扩展使用--自定义输出
- Hyper-V下虚拟机无法启动的故障排除
- Android——使用纯java代码实现线性布局(通俗易懂)
- Linux什么是文件IO,linux中文件IO
- CCF真题 201312-1 出现次数最多的数
- odyssey react鉴定_Nike Odyssey React SHLD开箱测评 Nike Odyssey React SHLD实物欣赏
- 华为EC169 3G卡在Win7下的安装
- Steins;Game Gym - 102798J(未解决)
- MyEclipse开发JAX-RS架构WebServices收发JSON数据格式
- mysql中用户线程作用,mysql用户线程的建立与用户线程的状态源码解析
- [转]ORA-01555错误总结(二)
- android ion --system heap(个人理解,不确定完全对)
- warning: Clone succeeded, but checkout failed.
- 足球联赛赛程表思路(转)
- 基于Spark的案例:同义词识别
- Android调用系统自带的文件管理器,打开指定路径
- UltraEdit连接linux中文乱码,UltraEdit显示中文乱码的解决办法
- ElasticSearch_高级_(集群+分片)
- 计算机基础excel重点,计算机基础重点 (Excel ppt 网络基础)