0

我正在研究可视化并使用我在 stackoverflow 上找到的 jsfiddle。

我以前没有做过 D3,所以我有几个问题。

我想可视化一些像这样的json

{word:"cat", count: 30},
{word:"dog", count: 15}....

我一直在这里研究 jsfiddle

http://jsfiddle.net/matthewpiatetsky/nCNyE/3/

  1. 如何确保文本和圆圈不相交?前一个小提琴确保了圆圈的这一点,但我想防止一个圆圈的标签与其他圆圈/其他标签相交。
  2. 如何更改圆圈的大小以相对于窗口中的开放空间量进行缩放?我想我会制作一个 800 x 800 的窗口,如果有很多空白空间和几个圆圈,我希望圆圈变大,如果没有,我希望它们变小。

任何提示将不胜感激,谢谢!(我知道我可以自己解决这些问题,而且我做得很慢,但是一些关于如何做这些事情的例子我可以玩弄会有所帮助!

4

1 回答 1

1

您的第一个问题的简短回答是您不能使用 D3 自动执行此操作。您可以尝试通过手动检查标签和圆圈的位置来确保是这种情况,或者使用诸如 D3 的强制布局之类的东西来自动布置它们而不重叠。但是,这些选项中的任何一个都需要做很多工作,在第二种情况下,您无法保证不会有任何重叠。

关于第二个问题,您确定窗口的大小并相应地设置半径,例如

var radius = Math.sqrt(window.innerWidth * window.innerHeight) / 100;
于 2013-06-18T17:42:13.673 回答