Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
User interface 将标记云装配到可用空间_User Interface_Tag Cloud - Fatal编程技术网

User interface 将标记云装配到可用空间

User interface 将标记云装配到可用空间,user-interface,tag-cloud,User Interface,Tag Cloud,考虑到单词及其频率和屏幕面积,有什么好的方法可以在空间中安装标签云?我能想到操纵的两个变量是: 字体大小(绝对和渐变) 字数 我能想到的所有方法都需要迭代,比如设置单词数量的上限,然后对字体大小进行二进制搜索,直到单词刚好适合该区域。我宁愿有一个解析解 我的情况的一个复杂之处是云是可调整大小的,因此算法需要能够合理地处理100x100像素或1000x1000像素 编辑:我应该说这是针对富客户机应用程序的,而不是web(因此有可能调整大小)。此外,我还希望听到一些经验,比如“没有人会在标记云中

考虑到单词及其频率和屏幕面积,有什么好的方法可以在空间中安装标签云?我能想到操纵的两个变量是:

  • 字体大小(绝对和渐变)
  • 字数
我能想到的所有方法都需要迭代,比如设置单词数量的上限,然后对字体大小进行二进制搜索,直到单词刚好适合该区域。我宁愿有一个解析解

我的情况的一个复杂之处是云是可调整大小的,因此算法需要能够合理地处理100x100像素或1000x1000像素

编辑:我应该说这是针对富客户机应用程序的,而不是web(因此有可能调整大小)。此外,我还希望听到一些经验,比如“没有人会在标记云中看到超过100个单词,所以不要麻烦显示它们”。

这听起来像,但倒过来,变量更多。没有简单的完整解决方案,但在大多数情况下,您可能会找到一个接近最优解决方案的启发式算法


PS:只有使用以像素为单位的字体大小,才能可靠地执行此操作。在好的网页设计中,以像素为单位的字体大小是一件坏事(TM)。

您可以创建一组预先确定的关联范围,然后可以将其与云中的字体大小关联起来。例如:

  • 0-100:1 em
  • 101-500:1.2 em
  • 501-1000:1.4 em粗体
  • 1001-1500:1.8 em粗体
  • 1501-2000:2.0 em粗体斜体/带下划线/闪烁/任何其他

您可以根据容器的大小为所有范围添加一个固定的偏移量来缩放云

  • 具有最大字体大小
  • Math.sqrt(术语频率)
    映射到此范围(因为单词是2D区域)
  • 仅显示前30个(或更多)术语
  • 不包括任何精细打印,即字体大小小于6磅
  • 按字母顺序对云中的术语进行排序
替代品

  • 选择顶部的
    k
    ,使其没有滚动条,而不是显示前30名
  • 不要将最常用的单词映射到最大字体大小,而是使用全局映射,以便单词大小在云之间具有可比性(这取决于您的用例)

据我所知,目前还没有关于术语云的实证研究(也许Worlde fame的Jonathan Feinberg在这方面知道得更多)。

有没有办法获得ems测量的容器大小?