【D3.js数据可视化系列教程】--(十三)坐标轴

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/zhang__tianxu/article/details/11762825

1. 定义和创建X轴


    
    
  1. //定义X轴
  2. var xAxis = d3.svg.axis()
  3. .scale(xScale)
  4. .orient( "bottom");
  5. //创建X轴
  6. svg. append( "g").call(xAxis);

其中:

  • scale函数用来指定坐标轴的比例尺。
  • orient函数用来指定坐标轴的方位,可取值有leftrighttopbottom
  • 调用的时候任意的选择器call调用轴,或者xAxis(选择器)均可。

效果:

  2. 调整X轴的样式

为显示刻度尺可以设置样式为:


    
    
  1. .axis path,
  2. .axis line {
  3. fill: none;
  4. stroke: black;
  5. shape- rendering: crispEdges; //这个属性用来显示轴
  6. }
  7. .axis text {
  8. font- family: sans-serif;
  9. font- size: 11px;
  10. }

并且把坐标轴平移到下面:


    
    
  1. svg. append( "g")
  2. .attr( "class", "axis")
  3. .attr( "transform", "translate(0," + (h - padding) + ")")
  4. . call(xAxis);

效果:

  3. 设置刻度数


    
    
  1. var xAxis = d3.svg.axis()
  2. .scale(xScale)
  3. .orient( "bottom")
  4. .ticks( 5); //设置刻度数
  • 注意这个ticks函数指定的数字只是一个大概的数量,具体生成多少D3会自动调整。

效果:

  4. Y轴


    
    
  1. //定义Y轴
  2. var yAxis = d3.svg.axis()
  3. .scale(yScale)
  4. .orient( "left")
  5. .ticks( 5);

同样设置起始坐标


    
    
  1. //创建Y轴
  2. svg. append( "g")
  3. .attr( "class", "axis")
  4. .attr( "transform", "translate(" + padding + ",0)")
  5. .call(yAxis);

效果:

  5. 设置刻度的格式


    
    
  1. var format = d3.format( ".1%");
  2. xAxis.tickFormat(format);

  6. 最后的源码


    
    
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>testD3-11-axes.html </title>
  6. <script type="text/javascript" src="d3.js"> </script>
  7. <style type="text/css">
  8. .axis path ,
  9. .axis line {
  10. fill: none ;
  11. stroke: black ;
  12. shape-rendering: crispEdges ;
  13. }
  14. .axis text {
  15. font-family: sans-serif ;
  16. font-size: 11px ;
  17. }
  18. </style>
  19. </head>
  20. <body>
  21. <script type="text/javascript">
  22. // 高宽
  23. var w = 500 ;
  24. var h = 300 ;
  25. var padding = 20 ;
  26. var dataset = [
  27. [ 5 , 20 ], [ 480 , 90 ], [ 250 , 50 ], [ 100 , 33 ], [ 330 , 95 ],
  28. [ 410 , 12 ], [ 475 , 44 ], [ 25 , 67 ], [ 85 , 21 ], [ 220 , 88 ],
  29. [ 600 , 150 ]
  30. ];
  31. // 创建比例尺
  32. var xScale = d3.scale.linear()
  33. .domain([ 0 , d3.max(dataset, function(d) { return d[ 0 ]; })])
  34. .range([padding, w - padding * 2 ]);
  35. var yScale = d3.scale.linear()
  36. .domain([ 0 , d3.max(dataset, function(d) { return d[ 1 ]; })])
  37. .range([h - padding, padding]);
  38. var rScale = d3.scale.linear()
  39. .domain([ 0 , d3.max(dataset, function(d) { return d[ 1 ]; })])
  40. .range([ 2 , 5 ]);
  41. var formatAsPercentage = d3.format( ".1%" ); //设置刻度的格式
  42. // 创建SVG
  43. var svg = d3.select( "body" )
  44. .append( "svg" )
  45. .attr( "width" , w)
  46. .attr( "height" , h);
  47. svg.selectAll( "circle" )
  48. .data(dataset)
  49. .enter()
  50. .append( "circle" )
  51. .attr( "cx" , function(d) {
  52. return xScale(d[ 0 ])+ 30 ; //设置原点坐标,以及横轴位移量
  53. })
  54. .attr( "cy" , function(d) {
  55. return yScale(d[ 1 ]);
  56. })
  57. .attr( "r" , function(d) {
  58. return rScale(d[ 1 ]);
  59. });
  60. svg.selectAll( "text" )
  61. .data(dataset)
  62. .enter()
  63. .append( "text" )
  64. .text( function(d) {
  65. return d[ 0 ] + "," + d[ 1 ];
  66. })
  67. .attr( "x" , function(d) {
  68. return xScale(d[ 0 ])+ 30 ;
  69. })
  70. .attr( "y" , function(d) {
  71. return yScale(d[ 1 ]);
  72. })
  73. .attr( "font-family" , "sans-serif" )
  74. .attr( "font-size" , "11px" )
  75. .attr( "fill" , "red" );
  76. // 定义X轴
  77. var xAxis = d3.svg.axis()
  78. .scale(xScale)
  79. .ticks( 5 ) //最多刻度数,连上原点
  80. .orient( "bottom" )
  81. .tickFormat(format); //添加刻度格式
  82. // 定义Y轴
  83. var yAxis = d3.svg.axis()
  84. .scale(yScale)
  85. .orient( "left" )
  86. .ticks( 5 )
  87. .tickFormat(format);
  88. // 创建X轴
  89. svg.append( "g" )
  90. .attr( "class" , "axis" )
  91. .attr( "transform" , "translate(0," + (h - padding) + ")" ) //设置据下边界的距离
  92. .call(xAxis);
  93. // 创建Y轴
  94. svg.append( "g" )
  95. .attr( "class" , "axis" )
  96. .attr( "transform" , "translate(" + padding + ",0)" ) //设置轴据左边界的距离
  97. .call(yAxis);
  98. </script>
  99. </body>
  100. </html>

  7. 最后的效果:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
文件已上传到百度网盘,附件中是下载地址。真正免积分免费完整版,绝不出现仅下载到部分章节,书中广 告页要求QQ联系支付宝购买完整版的流氓行为! 欢迎免积分下载更多本人独有网上难寻觅的 高清IT电子书:http://download.csdn.net/user/sinophp123 人无我有,人有我优,人优我廉!我的版本是全网最清晰的独家制作版本,还不要资源分。 同样一本书,下我的就可以了! 本人上传资料的原则: (1)如果CSDN和网上其他地方已随处可见高清下载,本人不再上传。 (2)如果网上已有我还上传,那么肯定是经重新制作,如不再缺页,清晰度更高,或者加上书签。 (3)每本书都经过逐页纯手工精心处理,包括清晰度的增强,水印的去除。当然最重要的,是尽量保证有书 签方便您浏览。 (4)如果是中译版,文件名前半部分是英文原版书名,后面是中译版书名。 如:“Implementing.Responsive.Design-响应式Web设计实践”。书名经反复校对绝无一字错漏。 (5)每本pdf书默认都是有书签的。来源不限“某星”网站,还有各大网络书店和出版社官网的页码信息。 凡无书签的pdf文件名均含“_no.bookmark”字样,如“HTML5程序开发范例宝典_no.bookmark”。请不要再 浪费时间去寻找书签,肯定没有,网上别人提供的下载版本也绝对不会有(除非您是出版社内部人员!), 没有人会浪费自己时间逐页输入章节页码来费时费力免费给您制作。 (6)只提供中文书籍,您不用担心下载的是英文原版。 (7)只提供完整版,绝不上传只有部分章节的所谓“迷你书”,“试读版”。 (8)书中绝不含广告页和水印LOGO。 Data.Visualization.with.D3.js.Cookbook-D3.js数据可视化实战手册 [加]nick qi zhu 著(著) | 杨锐 刘夏 王超 张沙沙(译) | 人民邮电出版社 | 9787115360960 | 2014-09- 01

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值