假设我有一个包含成千上万个对象的大列表,每个对象都带有一些标签。
可能有几十个或几百个标签可用,它们的使用遵循典型的幂律分布:
某些标签非常常用,但大多数标签很少使用。
实际上,除了最常见的几十个标签外,其余标签通常可以被忽略。
现在问题是如何可视化这些标签之间的关系。 标签云是仅显示频率的不错的可视化方式,但它忽略了哪些标签与其他标签一起出现的情况。 假设标签:bar 仅出现在同时带有标签:foo 的对象上。 这应该在视觉上明显。 同样适用于倾向于同时出现的三个标签。
你可以将每个标签制作成一个气泡,并让它们部分重叠。 技术上说,这是一个维恩图,但这样处理可能不太方便。 例如,Google图表可以创建维恩图,但仅限于3个或更少的集合(标签): http://code.google.com/apis/chart/docs/gallery/venn_charts.html 他们之所以将其限制为3个集合,是因为超过3个的话,看起来会很糟糕。 请参见维基百科页面上的“扩展到更多集合”:http://en.wikipedia.org/wiki/Venn_diagrams 但这仅适用于每个可能的交集都非空的情况。 如果不超过3个标签共同出现(也许是在放弃罕见标签后),那么一组维恩图可能有效(其中气泡的大小代表标签频率)。
或者,也可以使用图形(如顶点和边),并且通过视觉上较粗或较细的边表示共同出现的频率。
现在问题是如何可视化这些标签之间的关系。 标签云是仅显示频率的不错的可视化方式,但它忽略了哪些标签与其他标签一起出现的情况。 假设标签:bar 仅出现在同时带有标签:foo 的对象上。 这应该在视觉上明显。 同样适用于倾向于同时出现的三个标签。
你可以将每个标签制作成一个气泡,并让它们部分重叠。 技术上说,这是一个维恩图,但这样处理可能不太方便。 例如,Google图表可以创建维恩图,但仅限于3个或更少的集合(标签): http://code.google.com/apis/chart/docs/gallery/venn_charts.html 他们之所以将其限制为3个集合,是因为超过3个的话,看起来会很糟糕。 请参见维基百科页面上的“扩展到更多集合”:http://en.wikipedia.org/wiki/Venn_diagrams 但这仅适用于每个可能的交集都非空的情况。 如果不超过3个标签共同出现(也许是在放弃罕见标签后),那么一组维恩图可能有效(其中气泡的大小代表标签频率)。
或者,也可以使用图形(如顶点和边),并且通过视觉上较粗或较细的边表示共同出现的频率。
你有任何想法,或者指向工具或库的指针吗? 理想情况下,我会使用javascript来完成,但我也可以接受像R和Mathematica这样的工具或其他任何东西。 如果有人感兴趣,我很乐意分享一些实际数据(如果告诉你它代表什么,你会笑的)。
补充: 我最初考虑的应用程序是TagTime,但我想到这也很好地映射到可视化自己的美味书签的问题。