【发布时间】:2018-09-09 01:01:03
【问题描述】:
如何使用 Altair 创建 wordcloud? Vega 和 vega-lite 提供了我过去成功使用的 wordcloud 功能。 因此,如果我理解正确,应该可以从 Altair 访问它并且 我更喜欢用 Python 而不是嵌入的 JSON 来表达可视化。 我见过的所有 Altair 示例都涉及标准图表类型,例如 散点图和条形图。 我没有看到任何涉及词云、网络、树状图等的内容。
更具体地说,我将如何在 Altair 中表达或至少近似以下 Vega 可视化?
def wc(pages, width=2**10.5, height=2**9.5):
return {
"$schema": "https://vega.github.io/schema/vega/v3.json",
"name": "wordcloud",
"width": width,
"height": height,
"padding": 0,
"data" : [
{
'name' : 'table',
'values' : [{'text': pg.title, 'definition': pg.defn, 'count': pg.count} for pg in pages)]
}
],
"scales": [
{
"name": "color",
"type": "ordinal",
"range": ["#d5a928", "#652c90", "#939597"]
}
],
"marks": [
{
"type": "text",
"from": {"data": "table"},
"encode": {
"enter": {
"text": {"field": "text"},
"align": {"value": "center"},
"baseline": {"value": "alphabetic"},
"fill": {"scale": "color", "field": "text"},
"tooltip": {"field": "definition", "type": "nominal", 'fontSize': 32}
},
"update": {
"fillOpacity": {"value": 1}
},
},
"transform": [
{
"type": "wordcloud",
"size": [width, height],
"text": {"field": "text"},
#"rotate": {"field": "datum.angle"},
"font": "Helvetica Neue, Arial",
"fontSize": {"field": "datum.count"},
#"fontWeight": {"field": "datum.weight"},
"fontSizeRange": [2**4, 2**6],
"padding": 2**4
}
]
}
],
}
Vega(wc(pages))
【问题讨论】:
-
在 python 中生成词云的一个不错的基于非 vega 的替代方案是 word_cloud。
-
@JamesDraper 谢谢。我使用
word_cloud来创建静态图像。我正在尝试创建交互式词云,其中的词是可点击的或与它们相关的工具提示,afaikword_cloud不支持,但 vega 支持。 -
我想了很多,但我只是想我会把链接放在那里以防万一。
标签: word-cloud tag-cloud vega vega-lite altair