d3 API zoom

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>d3</title>
</head>
<body>
  <div class="test">

  </div>
  <script src="../js/jquery-2.1.4.js"></script>
  <script src="../js/d3.js"></script>
  <script>
  $(function(){

    var zoom = d3.behavior.zoom()
                          // css3 scale 属性
                          // .scale(5)
                          // .translate 也是类似的
                          // .center([20, 20])  // 鼠标滚轮缩放的焦点。
                          // .size([900, 400])  // 不知道
                          .scaleExtent([1, 10])
                          // .duration(10000)
                          .on(‘zoom‘, zoomed)
                          // .event(‘svg‘)  // 不知道
                          ;

    function zoomed(d) {
      // debugger
      console.log(‘zoomed:‘+d3.event.translate+"; "+d3.event.scale);
      d3.select(this).attr("transform", "translate("+d3.event.translate+")scale("+d3.event.scale+")");
      // d3.select(this).attr("transform", "translate("+d3.event.translate+")");
      // d3.select(this).attr("transform", "scale("+d3.event.scale+")");
      // zoom.scale(2);
    }

    var svg = d3.select(‘.test‘)
                .selectAll(‘svg‘)
                .data([{
                  x: 120,
                  y: 62
                }])
                .enter()
                .append(‘svg‘)
                .attr(‘width‘, 240)
                .attr(‘height‘, 125)
                ;

    // zoom.center([0, 0]);

    svg.append(‘circle‘)
       .attr({
        r: 20,
        cx: function(d) {
          return d.x;
        },
        cy: function(d){
          return d.y
        }
       })
       .call(zoom);
       ;

  })
  </script>
</body>
</html>  

常用的看明白了,还有几个地方不太明白。

写过的zoom函数

.on("zoom", function(){
                        that.svg_obj.select(".x.axis").call(xAxis);

                        var _lines = that.lines;
                        for(var i=0; i<_lines.length; i++){
                          that.svg_obj.select(".g"+i+" path.line")
                                      .attr("d", lineFunction(_lines[i].dataset))
                                      ;
                          that.svg_obj.select(".g"+i+" path.area")
                                      .attr("d", areaFunction(_lines[i].dataset))
                                      ;
                          that.svg_obj.selectAll(".g"+i+" circle").attr("d", function(){
                                  that.svg_obj.selectAll(".g"+i+" circle").attr(‘cx‘, function(d,i){
                                          return xScale(i);
                                         })
                                    .attr(‘cy‘, function(d){
                                      return yScale(d);
                                    })
                                         ;
                          });
                        }

                      });

  

时间: 2024-12-21 18:07:38

d3 API zoom的相关文章

D3 API总览

学习外国的框架,零零星星和点点滴滴是不行的,还是要有一个高屋建瓴总揽全局的看法,所以就看看D3都有哪些方法. core:selection, transition, arrays, math, loading external resources, string formatting, csv formatting, localization(?), colors, Namesapce, Internal(?) scales:quantitative, ordinal svg:shapes, a

【D3 API 中文手册】提交记录

[D3 API 中文手册]提交记录 声明:本文仅供学习所用,未经作者允许严禁转载和演绎 <D3 API 中文手册>是D3官方API文档的中文翻译.始于2014-3-23日,基于VisualCrew小组的六次协作任务之上,目前已经大致翻译完毕,将陆续向官网提交D3 API 中文版. 本文主要内容有: 列举初版翻译/校对人员列表 记录中文翻译的官网提交情况 提供校对联系方式 提供D3 API简版翻译 翻译/校对人员列表 翻译人员列表 API项目 文档页数 单词数 翻译 校对 core.select

d3 API axis

场景 1.画网格线 使用方法.innerTickSize(): 指定内刻度大小 或者 .tickSize(inner, outer): 2.内外刻度线 innerTickSize outerTickSize tickSize 看需求调吧. 3. tickFormat 格式化 tickPadding 刻度和刻度线的间距 tickValues 指定刻度值,要根据xScale Test.prototype.xScale = function(length) { return d3.scale.line

d3 API scale

1.d3.scale.category10() var colors = d3.scale.category10(); for (var i = 9; i >= 0; i--) { console.log(i+':'+colors(10-i)); } 注意:colors.length = 1; colors(key),key是什么不重要,顺序很重要. 2..range() 取值:.range([]) 赋值 3.rangePoints() rangeRoundPoints() 有点复杂,不常用 关

【 D3.js 进阶系列 — 6.1 】 缩放的应用(Zoom)

缩放(Zoom)是另一种重要的可视化操作,主要是使用鼠标的滚轮进行. 1. zoom 的定义 缩放是由 d3.behavior.zoom() 定义的. var zoom = d3.behavior.zoom() .scaleExtent([1, 10]) .on("zoom", zoomed); function zoomed() { circles_group.attr("transform", "translate(" + d3.event.

d3可视化实战04:事件绑定机制

首先说明,d3支持所有的JS事件——甚至其他代码的自定义事件.这里有一个列表,The MDN Event Reference, 包含了几乎所有浏览器创建的事件类型.大家有需要可以去查看. D3的事件绑定的语法,与jquery等其他类库用起来区别不大,都是object.on( event, listener )的形式.但是在具体实践中,我们经常会遇到给同一个对象绑定多个事件监听器的问题.这里就原生js.jquery和d3分别进行讨论. 一.原生JS的事件绑定 在探讨这个问题之前,我们首先需要看一下

D3树状图给指定特性的边特别显示颜色

D3作为前端图形显示的利器,功能之强,对底层技术细节要求相对比较多. 有一点,就是要理解其基本的数据和节点的匹配规则架构,即enter,update和exit原理,我前面的D3基础篇中有介绍过,不明白的可以再去研究下. 本篇博文,同样是在这个框架下,完成修改树状图中某两个节点之间的边用红色线条连接,实现表达特殊含义的目的. 背景故事: 微信朋友圈之间产品帖子相互转发,有些帖子转发后会有成交,只要有成交,则这个促成成交的节点及其之上的父节点都相应是有功劳的,这个轨迹需要用高亮的颜色表示(比如本例中

D3树状图异步按需加载数据

D3.js这个绘图工具,功能强大不必多说,完全一个Data Driven Document的绘图工具,用户可以按照自己的数据以及希望实现的图形,随心所欲的绘图. 图形绘制,D3默认采用的是异步加载,但是,这里的异步加载,指的是一次性的将图形展示所需要的数据异步的方式加载到浏览器前端显示.主要有如下这两种方式: 1 d3.csv(url[[, row], callback]) 2 3 Creates a request for the CSV file at the specified url w

【d3.js实践教程特别篇】PornHub发布基于d3的网民观看成人视频时长分布交互式地图

学习d3.js(以下都简称d3)也有一段时间了,运行d3做了几个项目.我发现中文的d3教程很少,国外资料多但要求有一定的英文阅读能力(推荐网址:http://bl.ocks.org/mbostock),于是就萌发了写一个d3实际运用系列文章的想法,现在开始付之行动.在系列中,我会用d3+html5 canvas实现一些实际效果(如统计结果展示,地图数据展示等),希望可以跟大家共同学习交流. 代码我公布在git.cschina.com上,大家可以clone到本地运行,地址是:http://git.