使用d3.v5实现条形图
2019-04-25 06:51:38来源:博客园 阅读 ()
效果图:
条形图:
目录结构:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <link href="css/style.css" media="screen" rel="stylesheet" type="text/css"/> <title>Linechart1</title> </head> <body> <div id="container"></div> <script src="https://d3js.org/d3.v5.min.js"></script> <script src="js/index.js"></script> </body> </html>
svg rect{ fill:#339999; } svg rect:hover { cursor: pointer; fill: #66cccc; }
year,population
1953,5.94
1964,6.95
1982,10.08
1990,11.34
2000,12.66
2010,13.40
/垂直Bar,加刻度 d3.csv("Data/data.csv",function (d) { return { // year: new Date(+d.year, 0, 1), // convert "Year" column to Date year: d.year+"年", population: +d.population // convert "population" column to number }; }).then(function (data) { console.log(data); var //data=[1,8,5,6,8,9,3,5,2,20], width=1000, height=500, margin={left:30,top:30,right:30,bottom:30}, svg_width=width+margin.left+margin.right, svg_height=height+margin.top+margin.bottom; //离散缩放 population=>[0,width] var scale_x=d3.scaleBand() .domain(data.map(function (d) { return d.year; })) .range([0,width]) .padding(0.1); //线性缩放 var scale_y=d3.scaleLinear() .domain([0,d3.max(data,function (d) { return d.population; })]) .range([height,0]) var svg=d3.select("#container") .append("svg") .attr("width",svg_width) .attr("height",svg_height) var chart=svg.append("g") .attr("transform","translate("+margin.left+","+margin.top+")"); var x_axis_color="steelblue", y_axis_color="steelblue"; var x_axis=chart.append('g') .call(d3.axisBottom(scale_x)) .attr("transform","translate(0,"+height+")"); x_axis.selectAll("path") .attr("stroke",x_axis_color) x_axis.selectAll("line") .attr("stroke",x_axis_color) x_axis.selectAll("text") .attr("font-size",'2em') var y_axis=chart.append('g') .call(d3.axisLeft(scale_y)); y_axis.selectAll("path") .attr("stroke",y_axis_color) y_axis.selectAll("line") .attr("stroke",y_axis_color) y_axis.selectAll("text") .attr("font-size",'2em') //Y轴注解 chart.append("text") .text("(亿)") // .attr("text-anchor","end") // .attr("transform","rotate(-90)") .attr("dy","1em") //X轴注解 chart.append("text") .text("(年)") // .attr("text-anchor","end") .attr("transform","translate("+width+","+height+")") .attr("dy","1em") var bar=chart.selectAll(".bar") .data(data) .enter() .append("g") .attr("transform",function (d,i) { return "translate("+scale_x(d.year)+",0)" }) bar.append("rect") .attr("y",function (d) { return scale_y(d.population); }) .attr("height",function (d) { return height-scale_y(d.population); }) .attr("width",scale_x.bandwidth() ) .attr("class",".rect") bar.append("text") .text(function (d) { return d.population+"亿"; }) .attr("y",function (d) { return scale_y(d.population); }) .attr("x",scale_x.bandwidth() /2) .attr("dy","1em") .style("text-anchor","middle") .style("fill","white") })
参考教程:https://www.imooc.com/learn/103
原文链接:https://www.cnblogs.com/feiquan/p/10759499.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:【js】走近小程序
下一篇:JS控制上传文件个数
- js防止表单重复提交实现代码 2020-03-29
- 基于JQuery的多标签实现代码 2020-03-29
- 关于jQuery UI 使用心得及技巧 2020-03-29
- js实现翻页后保持checkbox选中状态的实现方法 2020-03-25
- js中去掉字串左右空格 2020-03-20
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash