响应式 D3 图表

2024-01-02

我有这张 D3 图表 - 几乎是开箱即用的。有没有办法让它响应并使用宽度和高度变量、innerRadius 和outerRadius 的百分比?我正在开发一个响应式网站,需要根据屏幕尺寸/浏览器尺寸进行更改。

jsfiddle在这里:http://jsfiddle.net/BTfmH/1/ http://jsfiddle.net/BTfmH/1/

Code:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<style type="text/css">
html,
body {
  margin:0;
  padding:0;
  width:100%;
  height:100%;
}

.chart-container {
/*  width:50%;
  height:50%;*/
}
</style>
<body>
<script src="http://d3js.org/d3.v3.min.js"></script>
<script>
  var width = 350,
      height = 350,
      τ = 2 * Math.PI;

  var arc = d3.svg.arc()
      .innerRadius(100)
      .outerRadius(135)
      .startAngle(0);

var svg = d3.select("body").append("svg")
      .attr("width", width)
      .attr("height", height)
    .append("g")
      .attr("transform", "translate(" + width / 2 + "," + height / 2 + ")")

  var background = svg.append("path")
      .datum({endAngle: τ})
      .style("fill", "green")
      .attr("d", arc);

  var foreground = svg.append("path")
    .datum({endAngle: .127 * τ})
      .style("fill", "grey")
      .attr("d", arc);

setInterval(function() {
  foreground.transition()
      .duration(750)
      .call(arcTween, Math.random() * τ);
}, 1500);

  function arcTween(transition, newAngle) {

    transition.attrTween("d", function(d) {

      var interpolate = d3.interpolate(d.endAngle, newAngle);

      return function(t) {

        d.endAngle = interpolate(t);

        return arc(d);
      };
    });
}
</script>

您可以使用以下组合来调整图表大小viewBox and preserveAspectRatioSVG 元素上的属性。

有关完整示例,请参阅此 jsfiddle:http://jsfiddle.net/BTfmH/12/ http://jsfiddle.net/BTfmH/12/

var svg = d3.select('.chart-container').append("svg")
    .attr("width", '100%')
    .attr("height", '100%')
    .attr('viewBox','0 0 '+Math.min(width,height)+' '+Math.min(width,height))
    .attr('preserveAspectRatio','xMinYMin')
    .append("g")
    .attr("transform", "translate(" + Math.min(width,height) / 2 + "," + Math.min(width,height) / 2 + ")");

你甚至不需要resize使用此方法处理程序。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

响应式 D3 图表 的相关文章

  • 获取现有 SVG 元素的属性并使用 d3.js 绑定为数据

    我有一个现有的 svg 元素 例如
  • 使用什么比例仅在 d3 js 中的 x 轴上表示年份

    我一直在 D3 Js 中开发年份 x 轴 与收入 y 轴 的面积图 数据如下 localData Revenue 4 5 Year 2011 Revenue 5 5 Year 2010 Revenue 7 0 Year 2012 Reven
  • 使 D3 响应式:viewBox 与 resize()?

    我必须构建在平板电脑 桌面显示器以及某些情况下非常大的 4k 高分辨率影院尺寸显示器上都能正常运行的 d3 可视化效果 因此 我试图找出使用 SVG 的 viewBox 属性和 preserveaspectratio 与调用调整大小函数以在
  • 如何精确缩放已翻译的d3地图

    我有一张已翻译的地图 以使其正确适合画布 我正在尝试实现一种缩放它的方法 它确实有效 但是当您放大时它会远离中心 而不是以鼠标甚至画布为中心 这是我的代码 function map data total views var xy d3 ge
  • dc lineChart 单击时弹出数据点信息

    我正在尝试检测折线图数据点上的点击 Per this answer dc scatter plot binding onClick event https stackoverflow com a 22772340 1873386 I am
  • 内部有图像的 CSS 响应式圆圈

    蓝色div有固定的高度和响应宽度 里面应该有一个相同高度的圆形图像 这是我尝试过的 https jsfiddle net xnkkrhnt 1 https jsfiddle net xnkkrhnt 1 如何使完美的中心圆始终为蓝色 div
  • 如何交换 2 个元素的两侧(一个使用 float:left,另一个使用 float:right)

    I have a website with an image on one side and text on the other This is how it looks 正如您在图像中看到的 左侧有一些文本 右侧有图像 然后左边有图像 右
  • d3 树 - 有相同孩子的父母

    我一直在将代码从 JIT 转换为 D3 并使用树布局 我已经复制了代码http mbostock github com d3 talk 20111018 tree html http mbostock github com d3 talk
  • 动画 D3 地球仪 (d3.geo.azimuthal)

    我对 d3 javascript 库有疑问 我想使用方位角 http mbostock github com d3 talk 20111018 azimuthal html地球 我想从地球上的经度和纬度坐标插入点 并使地球动画化 而无需使用
  • 使用示例响应式抽屉时,材质 UI 表没有响应

    我创建了一个 Web 应用程序 其基础来自于 Material UI 示例响应式抽屉 https material ui com demos drawers responsive drawer 我试图让表格根据屏幕宽度调整大小 但是 由于某
  • 在 X 轴刻度上渲染 HTML

    我想在 D3 图表的 x 轴上渲染 HTML 基本上 我希望轴上的每个标签都是到数据中另一列的超链接 我试过了 x domain data map function d return a href d Name a 但它根本不起作用 我得到
  • 可以容纳居中内容的响应式 CSS 圆圈

    我正在寻找一种方法来创建一个可以容纳居中内容的响应式 CSS3 圆圈 关于圈子 我发现了一些很好的信息这个问题 https stackoverflow com questions 12945891 responsive css circle
  • JS / d3.js:突出显示相邻链接的步骤

    再会 我之前对该项目的问题是 D3 js 根据相同的 json 值动态生成源和目标 https stackoverflow com questions 41138515 d3 js dynamically generate source a
  • 处理重叠 SVG 图层中的鼠标事件

    我正在使用 d3 js 构建地图可视化 我正在为美国各州和县绘制填充多边形 县的 SVG 图层位于州图层下方 状态已填充 但填充不透明度设置为 0 我认为 需要填充来捕获点击事件 我想捕获州级的点击事件 但我想捕获县级的鼠标悬停事件 但是
  • 可以在 d3.js 中使用具有固定圆圈大小的圆圈包布局吗?

    此圆形包布局示例 http bl ocks org 4063269 http bl ocks org 4063269 非常适合我正在从事的项目 但是它会调整所有圆圈相对于彼此的大小 有没有一种简单的方法来指定每个圆的固定半径 我已经搜索了源
  • 响应式 CSS 圆圈

    Goal 响应式 CSS 圈子 具有相等半径的刻度 半径可以按百分比计算 半径可以通过媒体查询来控制 如果解决方案是javascript 我仍然需要模拟媒体查询触发器 我不需要媒体查询 但我确实希望能够在某些宽度下按百分比控制半径 medi
  • Safari 10.0.1 未从 srcset 选择正确的图像

    Safari 无法正确处理我网站上某些图像的 srcset 并且完全忽略我在尺寸属性中设置的规则 如果您单击下面的链接并在 Safari 中查看它 您将看到顶部的图像以其原始尺寸显示 而不是我生成的尺寸 但是 在页面底部它有效吗 并已下载为
  • 使用 Meteor 中的 D3 访问 csv 文件

    我已经使用 D3 成功渲染了一个 HTML 表格 显示了 csv 文件中的数据 但是当我将相同的代码移入 Meteor 项目时 我遇到了问题 传递到 d3 csv 回调中的数据对象一次拾取 HTML 文件 1 行 而不是 csv 数据 仅当
  • SVG 文本在 IE 中消失,直到我单击它

    我在 Internet Explorer Edge 以 Win7 上的为准 中遇到与 SVG 创建和操作相关的问题 在我正在开发的应用程序中 我们使用 d3 生成 SVG 形式的图形 在 Chrome 和 Firefox 中 它们工作得很好
  • 窗口调整大小事件上的响应式画布

    我是画布概念的新手 我正在尝试使用 D3 js 绘制画布 我想让画布根据窗口屏幕大小进行响应 function onResize var element document getElementsByTagName canvas 0 var

随机推荐

  • 在子函数中访问循环迭代?

    我正在使用 Google Maps API 在地图上绘制多个点 然而 在下面的点击事件函数中 i始终设置为 4 即迭代循环后的值 note these are actual addresses in the real page var ad
  • Android apk安装:如何清除旧版本的文件?

    当我安装新版本的 apk 时 这会覆盖旧版本而不删除它 在新版本中 我删除了一些文件 使用 NDK 生成的库 但在设备上 旧文件仍然存在 如何确保每当安装新版本时 所有旧文件都会在安装前被删除 编辑 澄清 这个问题要求为我的应用程序的现有用
  • java.io.IOException:无法获取锁定

    得到错误为 java io IOException 无法获取 log abc log 的锁定 不知道为什么会发生这种情况 有人可以帮我吗 谢谢 logger LogManager getLogManager getLogger classN
  • 在临时对象上调用成员函数时生成警告

    给定一个矩阵模板类mat
  • 从 pyparsing 获取嵌套命名结果

    我正在修改 pyparsing fourFn 示例以接受变量 评估已经有效 现在我希望能够解析字符串并输出所需变量的列表 我希望它的工作方式如下 from my module parser import FormulaParser form
  • 如何显示来自单独 NIB 的工作表

    如何将一个窗口放在一个单独的 NIB 中 给它自己的 NSWindowController 让它作为一张纸滑出 这是与床单有关的典型事情吗 我试图从主窗口显示自定义工作表 从父窗口的标题栏向下滑动的窗口 我认为我想做的是标准的 但我找不到明
  • 如何检测 C# Windows 窗体代码在 Visual Studio 中执行?

    是否有变量或预处理器常量可以让您知道代码是在 Visual Studio 上下文中执行的 Try 调试器 IsAttached http msdn microsoft com en us library system diagnostics
  • PHP 按键和值比较两个多维数组

    我正忙于学习 PHP 正在寻找一种方法来通过键和值比较两个关联数组 然后找到两者的差异 即 如果我有一个关联数组 array size 2 x15z gt int 12 length 2 x16z gt int 3 length 1 另一个
  • fsevents 导致模块解析失败:意外字符“�”

    我在用next js我得到 Failed to compile node modules fsevents fsevents node 1 0 Module parse failed Unexpected character 1 0 You
  • 无法使用 xpath 获取 YouTube 视频的持续时间

    我想写一些东西来返回 YouTube 链接的视频持续时间 所以我发现requests and lxml并开始遵循this http docs python guide org en latest scenarios scrape guide
  • 使用 HTML 和 CSS 的可折叠列表

    我有一个使用 HTML 和 CSS 实现的可折叠列表 该列表工作正常 但我需要一些修改 每当我单击列表中的某个项目时 它就会展开 但是 当我单击同一列表中的另一项时 先前展开的元素会折叠 而单击的元素会展开 请帮助我应用可以同时展开多个列表
  • 比“while”循环更快的方法来查找 R 中的感染链

    我正在分析存储疾病模拟模型输出的数据的大型表 300 000 500 000 行 在模型中 景观中的动物会感染其他动物 例如 在下图示例中 动物a1感染景观中的每一种动物 并且感染从一个动物转移到另一个动物 形成感染 链 在下面的示例中 我
  • Java有惰性求值吗?

    我知道 Java 在这种情况下有智能 惰性评估 public boolean isTrue boolean a false boolean b true return b a b a b is not evaluated since b i
  • 我可以确定 KeyEventArg 是字母还是数字吗?

    有没有办法确定键是否是字母 数字 A Z 0 9 在里面KeyEventArgs 还是我必须自己做 我找到了一种方法e KeyCode http bytes com topic net answers 598606 c keyeventar
  • spring - @ContextConfiguration 无法在 src/test/resources 中加载配置文件

    我尝试使用以下抽象类在 src test resources 类路径中加载 spring 配置文件 RunWith SpringJUnit4ClassRunner class ContextConfiguration locations c
  • 从 Visual C++ DLL 导出非托管类?

    当使用 Visual C 2008 创建 DLL 时 我有几个选择 我可以创建一个 班级图书馆 我知道它实际上会给我一个使用 C 的 CLI 托管 扩展的 Net 库 因为我不希望这样 并且我假设我需要一个静态 LIB 文件来链接到另一个
  • 如何使用 CSS 或 HTML 将特定的 HTML 行和列加粗?

    我想将 HTML 表格的第一行和第一列 第 0 行和第 0 列 加粗 如何使用 HTML 或 CSS 来实现这一点 桌子 table border 1 tbody tr td td td translate com AND https tr
  • ASP.NET Core:如何获取远程IP地址?

    我尝试获取远程 客户端 IP 地址 var ip httpContext Features Get
  • React JS React-router-dom 导航不工作

    我尝试在登录我的 React 应用程序后重定向用户 但导航不起作用 我不知道为什么 这是我的代码 感谢您的帮助 import React Component from react import Route Navigate from rea
  • 响应式 D3 图表

    我有这张 D3 图表 几乎是开箱即用的 有没有办法让它响应并使用宽度和高度变量 innerRadius 和outerRadius 的百分比 我正在开发一个响应式网站 需要根据屏幕尺寸 浏览器尺寸进行更改 jsfiddle在这里 http j