我有两个字符串数组:这两个数组包含要在x
和y
轴上插入的标签(这些标签将是热图的标签)。nutsNames
对应于x
轴(从左到右),而yearsNames
对应于y
轴(从上到下)。
由于数据可能会有所不同,我想创建一种适合数据的方法。
因此,问题在于元素在轴上的位置和svg
大小。
我想得到的是这样的:
该图显示了两个不同数据的示例。
(我不想显示轴,我仅将它们放在了解其方向的位置上)。
这是plunker。
我考虑过要在nutsNames
中找到最长的字符串,然后将其乘以一个常量(我不知道如何定义),以创建svg
的最小必需宽度。
我做了多年的类似事情。
显然,该代码无法正常工作。
最佳答案
您可以做的是为width
,height
和margins
输入一些虚拟数字,并让它首先绘制元素。现在,由于所有轴标签都在g
中,因此您可以为width
和g
标签获得x
的y
。group<g>
标记将内容包装在其中,因此获取其width/height
将自动为您提供其中最大的width/height
的text
。
现在,您有了这些width
的height
和g
,剩下的就是相应地更改svg
的尺寸。
尝试在数据中添加或删除标签。这是您的Plunker
关于d3.js - 为可变轴标签创建适当的空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50610048/