如何实现D3图表的放大方块效果?

 战冰_斗雪 发布于 2023-01-29 14:41

看看这个jsfiddle.悬停时放大适用于文本和图像,但我希望对图表有相同的效果.

在此输入图像描述

如果可能,我希望解决方案适用于任何D3基于SVG的图表.

该示例使用jquery插件AnythingZoomer,它看起来是一个很好的起点,但是,您不需要坚持它,如果您愿意,您可以使用其他任何东西.

我知道D3鱼眼插头,这是相关的,但不是我想要的.

1 个回答
  • 您可以通过不显式声明widthheight在SVG(无论如何被CSS覆盖),使用viewBox属性,然后允许AnythingZoom到clone原始图表的内容来实现.

    演示(脆弱): http ://jsfiddle.net/H9psX/ http://jsfiddle.net/H9psX/38/

    变化

    var svg = d3.select("#small-chart").append("svg")
    //    .attr("width", diameter + 300)
    //    .attr("height", diameter)
        .attr('viewBox', "0 0 " + 225 + " " + 225);
    
    // ...
    
    $("#zoom3").anythingZoomer({
        clone: true
    });
    

    关注点分离

    由于使用的是D3(在这里你需要知道的SVG绘图widthheight对包布局),并使用一个jQuery插件,它通过设置类和绝对定位缩放,您必须共享坐标(225px在CSS和幻数) JS.

    理想情况下,您可能希望将幻数保持在一个位置.为此,您只能在CSS中声明值,然后在创建SVG元素后在JS中读取它们.

    2023-01-29 14:42 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有