我想知道如果您可以帮助我在以下小提琴中使用D3js Zoom和pan功能: http://jsfiddle.net/moosejaw/nUF6X/5/

我希望代码(虽然不是很好)直截了当.

我有一个总染色体长度总染色体长度的图表.蜱值是每个染色体的个体长度(总数).刻度被格式化为染色体的名称(对最终用户来说看起来不错).

我遇到的问题是:

> x轴和y轴标签在图形区域外延伸.当我没有明确提供滴答值时,标签“消失”,因为它们应该.看到:

var yAxis = d3.svg.axis()
.scale(y)
.orient("left")
.tickValues(tickValues)
.tickFormat(function(d) { 
    var ret = bptochrMBP(d);
    return ret.chr;
});

>如何防止x轴在最小值之前不向左平移?还没有平移到正确的最大值?无论我是否放大,都会发生这种情况.(y轴除了顶部和底部也一样).
>有没有办法将轴标签“中心”在刻度线之间.刻度线不均匀.我尝试使用细分为小刻度线,但是不会正确地细分刻度线.

任何帮助将不胜感激!

马特

解决方法

这个小提琴解决了大部分的问题: http://jsfiddle.net/CtTkP/
解释如下:

>我不知道你的意思是延伸到图形区域之外.标签是否应该在图表区域内?如果你的意思是在平移,标签超出轴,可以通过使用两个更多的剪辑路径明智地解决问题,虽然这不允许svg.axis翻译提供的值的正常衰落:

var clipX = svg.append("clipPath")
      .attr('id','clip-x-axis')
      .append('rect')
      .attr('x',0)
      .attr('y',0)
      .attr('width',width)
      .attr('height',margin.bottom);

svg.append("g")
    .attr("class","x axis")
    .attr('clip-path','url(#clip-x-axis)')
    .attr("transform","translate(0," + height + ")")
    .call(xAxis);

// ...

var clipY = svg.append("clipPath")
      .attr('id','clip-y-axis')
      .append('rect')
      .attr('x',- margin.left)
      .attr('y',0)
      .attr('height',height)
      .attr('width',margin.left);

svg.append("g")
    .attr("class","y axis")
    .attr('clip-path','url(#clip-y-axis)')
    .call(yAxis);

>为防止平移超出值,您必须手动限制缩放的translate

function zoomed() {

     var trans = zoom.translate(),scale = zoom.scale();

     tx = Math.min(0,Math.max(width * (1 - scale),trans[0]));
     ty = Math.min(0,Math.max(height * (1 - scale),trans[1]));

     zoom.translate([tx,ty]);

    svg.select(".x.axis").call(xAxis);
    svg.select(".y.axis").call(yAxis);

    // ...

这将不允许图形超出限制.

>当您明确覆盖tickValues时,您可以调整值以使它们居中:

var tickValues2 = [];
tickValues.forEach(function (t,idx) {
    if (idx < tickValues.length - 1) {
        tickValues2.push((t + tickValues[idx + 1]) / 2);
    }
});

然后,使用tickValues2代替对于xAxis和yAxis使用tickValues.

javascript – D3 Pan Zoom Overflow的更多相关文章

  1. css绝对定位如何在不同分辨率下的电脑正常显示定位位置?(一定要看!)

    这篇文章主要介绍了css绝对定位如何在不同分辨率下的电脑正常显示定位位置,本文首先解释了常见的电脑分辨率,为了页面在不同的分辨率下正常显示,要给页面一个安全宽度,再去使用绝对定位,具体操作步骤大家可查看下文的详细讲解,感兴趣的小伙伴们可以参考一下。

  2. ios – 如何从UICollectionViewCell将pan手势传递给UICollectionVIew?

    )用于整个集合视图,同时还在视图控制器中保持控制–双赢!

  3. ios – x轴的webkit溢出滚动问题?

    我有一个可滚动的div与以下css:但是在iOS设备上,当div内部的内容比div本身宽时,启用x轴滚动.如何禁用x轴滚动?解决方法我一直有同样的问题,似乎不幸的是-webkit-overflow-scrolling没有x/y选项.我通常使用的解决方法是将滚动div包装在overflow-x:hiddendiv中,问题应该解决.标记:造型:

  4. 可以通过iOS中的蓝牙PAN与系留设备进行通信

    我有一个设备,我通过蓝牙从iOS设备分享我的连接.我想知道是否可以访问在PAN网络上的iPhone上创建服务器并从设备访问它或在设备上创建服务器并从iPhone访问它.有没有人有这种经历?

  5. ios – 如何通过Pan手势限制可移动视图

    我有一个可通过平移手势移动的UIImageView.我想限制可以在屏幕上移动的区域.而不是用户能够将视图直接拖动到屏幕的一侧,我想限制它的某种边距.我怎样才能做到这一点?另外,旋转后如何处理?

  6. ios – 试图理解TranslationInView

    在我的UITableViewCell子类中,我添加了一个平移手势,在gestureRecognizerShouldBegin方法中,我检查了self.frame.origin.x和self.frame.origin.y,它们都是0.000000和0.000000,并且应用了TranslationInViewCGPointtranslation=[gestureRecognizertranslati

  7. Swift - 文件,文件夹操作大全

    ios开发经常会遇到读文件,写文件等,对文件和文件夹的操作,这时就可以使用NSFileManager,NSFileHandle等类来实现。)//contentsOfPath:Optionalprint//类似上面的,对指定路径执行浅搜索,返回指定目录路径下的文件、子目录及符号链接的列表contentsOfURL=try?important;font-family:Consolas,options:NSDirectoryEnumerationoptionsSkipsHiddenFiles);//conten

  8. Swift - 使用表格组件UITableView实现单列表

    2,效果图3,单元格复用机制:由于普通的表格视图中对的单元格形式一般都是相同的,所以本例采用了单元格复用机制,可以大大提高程序性能。实现方式是初始化创建UITableView实例时使用registerClass创建一个可供重用的UITableViewCell。并将其注册到UITableView,ID为SwiftCell。下次碰到形式(或结构)相同的单元就可以直接使用UITableView的dequeueReusableCellWithIdentifier方法从UITableView中取出。.dataSou

  9. Swift - 使用表格组件UITableView实现分组列表

    1,样例说明:列表以分组的形式展示同时还自定义分区的头部和尾部点击列表项会弹出消息框显示该项信息。overridefuncloadView(){super.loadView()}viewDidLoad(){.viewDidLoad()//初始化数据,这一次数据,我们放在属性列表文件里self.allnames=[0:[String](["UILabel标签"ottom:auto!important;font-family:Consolas,"UITableView表格视图"])];print.adHead

  10. Swift - 给表格的单元格UITableViewCell添加图片,详细文本标签

    表格UITableView中,每一单元格都是一个UITableViewCell。其支持简单的自定义,比如在单元格的内部,添加图片和详细文本标签。注意UITableViewCell的style:UITableViewCellStyle.Default:默认的,只有一个常规内容标签和一个可选的UIImageViewUITableViewCellStyle.Value1:内容标签在左,详细标签在右,右边是蓝色或灰色的文本UITableViewCellStyle.Value2:同Value1位置相同,左边是蓝色文

随机推荐

  1. js中‘!.’是什么意思

  2. Vue如何指定不编译的文件夹和favicon.ico

    这篇文章主要介绍了Vue如何指定不编译的文件夹和favicon.ico,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  3. 基于JavaScript编写一个图片转PDF转换器

    本文为大家介绍了一个简单的 JavaScript 项目,可以将图片转换为 PDF 文件。你可以从本地选择任何一张图片,只需点击一下即可将其转换为 PDF 文件,感兴趣的可以动手尝试一下

  4. jquery点赞功能实现代码 点个赞吧!

    点赞功能很多地方都会出现,如何实现爱心点赞功能,这篇文章主要为大家详细介绍了jquery点赞功能实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  5. AngularJs上传前预览图片的实例代码

    使用AngularJs进行开发,在项目中,经常会遇到上传图片后,需在一旁预览图片内容,怎么实现这样的功能呢?今天小编给大家分享AugularJs上传前预览图片的实现代码,需要的朋友参考下吧

  6. JavaScript面向对象编程入门教程

    这篇文章主要介绍了JavaScript面向对象编程的相关概念,例如类、对象、属性、方法等面向对象的术语,并以实例讲解各种术语的使用,非常好的一篇面向对象入门教程,其它语言也可以参考哦

  7. jQuery中的通配符选择器使用总结

    通配符在控制input标签时相当好用,这里简单进行了jQuery中的通配符选择器使用总结,需要的朋友可以参考下

  8. javascript 动态调整图片尺寸实现代码

    在自己的网站上更新文章时一个比较常见的问题是:文章插图太宽,使整个网页都变形了。如果对每个插图都先进行缩放再插入的话,太麻烦了。

  9. jquery ajaxfileupload异步上传插件

    这篇文章主要为大家详细介绍了jquery ajaxfileupload异步上传插件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  10. React学习之受控组件与数据共享实例分析

    这篇文章主要介绍了React学习之受控组件与数据共享,结合实例形式分析了React受控组件与组件间数据共享相关原理与使用技巧,需要的朋友可以参考下

返回
顶部