代码之家  ›  专栏  ›  技术社区  ›  jamesh

在标签云中缩放标签

  •  6
  • jamesh  · 技术社区  · 15 年前

    我正在移动设备上实现标签云。数据模型等的细节在这里并不特别重要。我的问题是标签的缩放:

    将标签频率映射到字体大小的“最佳”表达式是什么?

    我看过 this post 讨论线性和对数标度 this answer 从阿德里安·库恩的多项式草图中获得灵感。然而,我似乎记得在互联网上的某个地方贴了一篇关于这个问题的探讨。

    我也找到了一些” best practices 在一个博客上,我不确定最佳实践的存在。这些对频率标度没有任何评论。

    对于标签缩放,我有哪些备选方案,哪种是首选/标准方法?我也在考虑最小字体大小、最大标签数量、颜色等。

    编辑:根据中的讨论 this question ,我对“标准”TagCloud感兴趣,字体大小有变化。

    3 回复  |  直到 13 年前
        1
  •  3
  •   deyur    14 年前

    去年我做了一个小标签云项目,在这个项目中我使用了

    =(int)((max-min)x)+min+0.5)
    其中,是以前根据某些度量(在您的示例中,字体频率)计算的权重,最小值和最大值是下限和上限,是最终值。这可以应用于任何视觉特征(字体大小、颜色、重量(如果支持)等)。

    我发现线性和对数比例往往依赖于数据集分布。在具有显著异常值的数据集中,我发现tanh对于“平滑”结果值很有用。

        2
  •  2
  •   jamesh    15 年前

    有一个很好的讨论 this pdf 其中讨论了要显示的标记的缩放、群集和截断。

        3
  •  0
  •   Nat    13 年前

    我发现一个很好的解决方案如下

    font_size = (max_font_size - min_font_size) * (Math.sin(1.5*(X)) + minsize

    其中x是要映射到字体大小的标准化值

    X = (this_value-min_value)/(max_value-min_value)

    这增加了范围内较低的3个四分位数的大小差异,从而使高异常值的影响最小化。