d3.js - 为可变轴标签创建适当的空间

标签 d3.js

我有两个字符串数组:这两个数组包含要在xy轴上插入的标签(这些标签将是热图的标签)。
nutsNames对应于x轴(从左到右),而yearsNames对应于y轴(从上到下)。

由于数据可能会有所不同,我想创建一种适合数据的方法。
因此,问题在于元素在轴上的位置和svg大小。

我想得到的是这样的:

enter image description here

该图显示了两个不同数据的示例。
(我不想显示轴,我仅将它们放在了解其方向的位置上)。

这是plunker

我考虑过要在nutsNames中找到最长的字符串,然后将其乘以一个常量(我不知道如何定义),以创建svg的最小必需宽度。

我做了多年的类似事情。

显然,该代码无法正常工作。

最佳答案

您可以做的是为widthheightmargins输入一些虚拟数字,并让它首先绘制元素。现在,由于所有轴标签都在g中,因此您可以为widthg标签获得xy

group<g>标记将内容包装在其中,因此获取其width/height将自动为您提供其中最大的width/heighttext

现在,您有了这些widthheightg,剩下的就是相应地更改svg的尺寸。

尝试在数据中添加或删除标签。这是您的Plunker

关于d3.js - 为可变轴标签创建适当的空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50610048/

相关文章:

javascript - 在 d3.js 中设置轴的 css

javascript - D3 中轴和网格的不同颜色

javascript - D3 时间刻度 – 刻度(计数)产生错误,省略刻度(计数)不会产生错误

javascript - 判断号码所属的桶

javascript - 如何使用 d3 js 从多个类名中选择单个类名?

javascript - 键未正确绑定(bind)到 D3 中的元素

javascript - D3 - 如何使用分区布局进行可视化,使其具有均等划分的扇区?

javascript - 我可以使用 d3.js 显示 GraphViz 生成的点或 xdot 布局文件吗?

javascript - d3.json 无法解析 'Infinity' 值

javascript - 如何使用d3.js、force和network仅使用一个函数来设置cx和cy?