histogram布局用法
来源:互联网 发布:windows sdk如何安装 编辑:程序博客网 时间:2024/06/06 07:13
1histogram布局
histogram布局,频率分布直方图,字面意思很明了,表明了一个范围内分布的频率,其中每个柱型表明了这个范围内个数。
//随机生成正态分布数据var random=d3.random.normal(170,10);//均值和方差var dataset=[]for (var i=0;i<100;i++){ dataset.push(random());}console.log(dataset);//定义histgram布局var histogram=d3.layout.histogram() .range([30,200]) .bins(20) .frequency(true);var histdata=histogram(dataset);
用布局对象包裹数据,会生成我们想要的数据其实所有的布局都是用来包裹数据,生成特定所需要的数据,然后我们从这些数据中抽取我们所需要的数据,用路径,或者rect,circle等基本图形
控制台可以看出,三个字段,x,y,dx
2.生成x,y轴
//我们抽取x来生成x轴的输入域//map是array的一个方法循环histdata中的d.x,返回一个新的d.x数组var ticks=histdata.map(function(d){return d.x});var xscale=d3.scale.ordinal() .domain(ticks) .rangeRoundBands([padding,width-padding],0.1);console.log(ticks)var xaxis=d3.svg.axis() .scale(xscale) .orient("buttom") .tickFormat(d3.format(".0f"));svg.append("g") .attr("class","axis") .attr("transform","translate("+0+","+(height-padding)+")") .call(xaxis);/*y轴*/ //d3找最小值,最大值方法var min=d3.min(histdata,function(d){return d.y});var max=d3.max(histdata,function(d){return d.y});var yscale=d3.scale.linear() .domain([min,max]) .range([height-padding,padding]);var yaxis=d3.svg.axis() .scale(yscale) .orient("left") .tickFormat(d3.format(".0f"));svg.append("g") .attr("class","axis") .attr("transform","translate("+padding+",0)") .call(yaxis);
我们抽出来的tick数据
3.画出柱状图
/*将g从右上角移动*/var rects=svg.append("g") .attr("transform","translate(0,-40)")//-40的意思是从svg的下边移动rects.selectAll("rect") .data(histdata) .enter() .append("rect") .attr("class","rects") .attr("x",function(d,i){ return xscale(d.x); }) .attr("y",function(d,i){ return yscale(d.y); }) .attr("width",function(d,i){ return xscale.rangeBand(); }) .attr("height",function(d,i){ return height-yscale(d.y); })
阅读全文
0 0
- histogram布局用法
- GridBagLayout布局基本用法
- Percent百分比布局用法
- 02、flex布局用法
- 格布局基本用法
- ACtivity布局之相对布局基本用法
- 布局中的gravity值用法
- andriod线性布局部分用法
- android 布局文件 layout_weight用法
- 安卓listview布局,用法
- JavaSwing布局BorderLayout的用法
- JavaSwing布局FlowLayout的用法
- JavaSwing布局GridLayout的用法
- android布局include的用法
- iOS自动布局进阶用法
- iOS自动布局进阶用法
- 自动布局的基本用法
- 自动布局-Masonry基础用法
- Flask Web开发(一)基于python的Web表单
- 从零开始到搭建hexo个人博客
- vue + elementui filter过滤器
- StreamApi
- 《MFQ&PPDCS》学习心得--TE---测试广度和深度
- histogram布局用法
- spring in action 学习笔记(四)bean的作用域
- Python 窗体(tkinter)标签
- ARC080 E
- 游戏行业DDoS 6年谈:什么样的架构才可以对DDoS免疫
- SharpDevelop安装与配置
- github参与开源项目,fork简介
- nginx安装教程
- 多线程(二)