D3.JS 基于javascript的图表展示库<六>-基本柱状图2
来源:互联网 发布:java web树形菜单例子 编辑:程序博客网 时间:2024/05/21 15:42
先贴图.....
这个和上篇相比多了一点点东西。 所以就简单说明一下。
重要的一个函数是
d3.scale.ordinal() .domain(data).rangeBands([0, 480]); 这个的作用与上篇介绍的d3.scale.linear()提供类似的功能。
贴代码:
index.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>Data</title><link rel="stylesheet" type="text/css" href="bar.css"/><script type="text/javascript" src="lib/d3.v3.js"></script><script type="text/javascript" src="bar.js"></script></head><body>hor:<div id="svg"></div><br />================================<br />vir:<div id="vir"></div></body></html>
bar.css
.chart div { font: 10px sans-serif; background-color: steelblue; text-align: right; padding: 3px; margin: 1px; color: white;}.chart rect{ stroke:white; fill:steelblue;}
bar.js
function svgBarChart(){ var data = [4, 8, 15, 16, 23, 42]; var chart = d3.select("div#svg").append("svg") .attr("class", "chart") .attr("width", 440) .attr("height", 140) .append("g") .attr("transform", "translate(10,15)");//设置位移俩 可以在条形统计图上右键--审查元素。看看是实际效果 var x = d3.scale.linear() .domain([0, d3.max(data)]) .range([0, 420]); var y = d3.scale.ordinal() .domain(data) .rangeBands([0, 120]); chart.selectAll("rect") .data(data) .enter().append("rect") .attr("y", y) .attr("width", x) .attr("height", y.rangeBand()); chart.selectAll("text") .data(data) .enter().append("text") .attr("x", x) .attr("y", function(d) { return y(d) + y.rangeBand() / 2; }) .attr("dx", -3) // padding-right .attr("dy", ".35em") // vertical-align: middle .attr("text-anchor", "end") // text-align: right .text(String); chart.selectAll("line") .data(x.ticks(10)) .enter().append("line") .attr("x1", x) .attr("x2", x) .attr("y1", 0) .attr("y2", 120) .style("stroke", "#ccc"); chart.selectAll(".rule") .data(x.ticks(10)) .enter().append("text") .attr("class", "rule") .attr("x", x) .attr("y", 0) .attr("dy", -3) .attr("text-anchor", "middle") .text(String); chart.append("line") .attr("y1", 0) .attr("y2", 120) .style("stroke", "#000");}function svgVirBarChart(){ var data = [4, 8, 15, 16, 23, 42]; var height = 440; var width = 500; var chart = d3.select("div#vir").append("svg") .attr("class", "chart") .attr("width", width) .attr("height", height) .append("g") .attr("transform", "translate(30,-8)");//图形水平位移量 var y = d3.scale.linear() .domain([0, d3.max(data)]) .range([0, 420]);//设置权重计算 var x = d3.scale.ordinal() .domain(data) .rangeBands([0, 480]); //散列值 把480平均分配到data的每个数据段(这里是6个) 0~80,80~160,...值为(0,80,160,...)域宽80 chart.selectAll("rect").data(data).enter().append("rect") .attr("x",x)//相当于function(d){return x(d);} .attr("y",function(d){return height-y(d)})//svg的坐标以左上角为原点,同过高度运算转成原点在左下角的效果 .attr("width",x.rangeBand()) //获取散列值每段的长度 为矩形的宽 .attr("height",y); // 通过函数1 function(d){return (420/42)*d} 得到矩形的高 //添加矩形上方的数字 chart.selectAll("text") .data(data) .enter().append("text") .attr("x", function(d) { return x(d) + x.rangeBand() / 2; }) //散列值+散列宽度的一半 .attr("y",function(d){return height-y(d)}) .attr("dx", ".35em") // horizontal-align: middle 居中对齐 .attr("dy", 0) // vertical-align: middle //垂直方向无偏移 .attr("text-anchor", "end") // text-align: right .text(String); //设置数据为显示值 相当于.text(function(d){ return d;}) chart.selectAll("line") //加横线 线 有关svg的标签请查看w3chool .data(y.ticks(10)) //y.ticks 根据权重 把数据进行划分层次,增加可读性。可以自己改变ticks的值察看效果来理解 .enter().append("line") .attr("x1", 0) .attr("x2", 480) .attr("y1", function(d){return height -y(d)}) .attr("y2", function(d){return height -y(d)}) //画线 (x1,y1) ------> (x2,y2) .style("stroke", "#ccc"); chart.selectAll(".rule") .data(y.ticks(10)) .enter().append("text") .attr("class", "rule") .attr("y",function(d){return height-y(d)}) .attr("dy",5) .attr("dx",-8) .attr("text-anchor", "middle") .text(String); //添加Y 轴方向的数字 chart.append("line") .attr("x1", 0) .attr("x2", width) .attr("y1",height) .attr("y2",height) .style("stroke", "#000");//添加x轴方向的线 chart.append("line") //添加Y轴方向的线 .attr("x1", 0) .attr("x2",0) .attr("y1",0) .attr("y2",height) .style("stroke", "#000"); }window.onload = function(){ // divBarChart(); svgBarChart(); svgVirBarChart();};
代码下载地址 http://download.csdn.net/detail/a6383277/5230113
- D3.JS 基于javascript的图表展示库<六>-基本柱状图2
- D3.JS 基于javascript的图表展示库<五>-基本柱状图1
- D3.JS 基于javascript的图表展示库<七>
- D3.JS 基于javascript的图表展示库<二>----基本元素操作
- D3.JS 基于javascript的图表展示库<三>----基本元素绑定
- D3.JS 基于javascript的图表展示库<四>----基本元素选择与Table
- [d3.js] D3.JS 基于javascript的图表展示库<一>----简单介绍
- 一些基于 D3.js 的图表库
- 分享一个基于D3.js的互动可重用图表javascript类库 - NVD3.js
- 基于 HTML5 的 JavaScript 图表库——chart.js
- D3 JS 库 - 用来展示数据分析的结果
- d3.js-做一个简单的图表
- d3.js多系列柱状图
- d3.js之多组柱状图
- 数据可视化:柱状图、折线图、饼图等六种基本图表的特点及适用场合
- 基于SpringMVC、Html5 的图表展示
- javascript 基于数据文档的图形库---d3
- d3.js制作动态图表
- sql注入攻击详解(三)sql注入解决办法
- 如何编写iOS5杂志程序(1)
- Linux2.6 内核的 Initrd 机制解析
- 使用OpenCV开发iOS图像处理应用
- 由中国教育联想到软件开发
- D3.JS 基于javascript的图表展示库<六>-基本柱状图2
- 使用JDBC连接Windchill数据库
- AT89C52单片机八路温度检测汇编代码
- 在blackbery 10上socket绑定80端口会失败
- GridView 查找到某一行的index
- 给程序员小弟弟小妹妹们的一些性忠告
- 也谈Android的学习和利用Android来赚钱
- current_session_context_class
- protobuf入门详解(在windows下配置protobuf)