如何减少Looker Studio中Vega词云的显示词数?
问题背景
我在Looker Studio中使用Vega可视化语法制作词云(wordcloud)图表。
已尝试操作及问题
- 生成的词云词汇过多,尝试减少词数
- 将
wordpadding设为5后,仅部分词汇被挤出视图,并未真正减少词数,也未重新分配字号区间 - 修改Looker Studio样式属性中的
padding,图表无任何变化
初始代码
{ "$schema": "https://vega.github.io/schema/vega/v5.json", "data": [ { "name": "default", "transform": [ { "type": "formula", "as": "rotate", "expr": "[0, 90][~~(datum.index % 2)]" }, { "type": "formula", "as": "weight", "expr": "if(datum.index==0, 600, 400)" }, { "type": "wordcloud", "size": [{"signal": "width"}, {"signal": "height"}], "text": {"field": "$dimension0"}, "fontSize": {"field": "$metric0"}, "fontWeight": {"field": "weight"}, "fontSizeRange": [{"signal": "(width+height)/96"}, {"signal": "(width+height)/24"}], "padding": {"value": 2}, "rotate": {"field": "rotate"} } ] } ], "scales": [ { "name": "color", "type": "ordinal", "domain": {"data": "default", "field": "$dimension0"}, "scheme": "datastudio20" } ], "marks": [ { "type": "text", "from": {"data": "default"}, "encode": { "enter": { "text": {"field": "$dimension0"}, "align": {"value": "center"}, "baseline": {"value": "alphabetic"}, "fill": {"scale": "color", "field": "$dimension0"} }, "update": { "x": {"field": "x"}, "y": {"field": "y"}, "angle": {"field": "angle"}, "fontSize": {"field": "fontSize"}, "fontWeight": {"field": "weight"}, "fillOpacity": {"value": 0.7} }, "hover": { "fillOpacity": {"value": 1} } } } ] }
参考尝试与问题
从@Davide的代码中提取以下过滤语句:
{"type": "filter", "expr": "datum.row < 25"},
将其添加到代码的transform部分后,图表显示为空白。
添加window和filter转换后的代码
{ "$schema": "https://vega.github.io/schema/vega/v5.json", "data": [ { "name": "default", "transform": [ { "type": "formula", "as": "rotate", "expr": "[0, 90][~~(datum.index % 2)]" }, { "type": "formula", "as": "weight", "expr": "if(datum.index==0, 600, 400)" }, { "type": "formula", "as": "weight", "expr": "if(datum.text=='VEGA', 600, 300)" }, { "type": "formula", "as": "rotate", "expr": "[-rotate, 0, rotate][~~(random() * 3)]" }, { "type": "window", "sort": {"field": "count", "order": "descending"}, "ops": ["row_number"], "fields": [null], "as": ["row"] }, {"type": "filter", "expr": "datum.row < 25"}, { "type": "wordcloud", "size": [{"signal": "width"}, {"signal": "height"}], "text": {"field": "text"}, "font": "Helvetica Neue, Arial", "fontSize": {"field": "count"}, "fontWeight": {"field": "weight"}, "fontSizeRange": [ {"signal": "fontSizeRange0"}, {"signal": "fontSizeRange1"} ], "padding": {"signal": "wordPadding"}, "rotate": {"field": "rotate"} }, { "type": "wordcloud", "size": [{"signal": "width"}, {"signal": "height"}], "text": {"field": "$dimension0"}, "fontSize": {"field": "$metric0"}, "fontWeight": {"field": "weight"}, "fontSizeRange": [{"signal": "(width+height)/96"}, {"signal": "(width+height)/24"}], "padding": {"value": 2}, "rotate": {"field": "rotate"} } ] } ], "scales": [ { "name": "color", "type": "ordinal", "domain": {"data": "default", "field": "$dimension0"}, "scheme": "datastudio20" } ], "marks": [ { "type": "text", "from": {"data": "default"}, "encode": { "enter": { "text": {"field": "$dimension0"}, "align": {"value": "center"}, "baseline": {"value": "alphabetic"}, "fill": {"scale": "color", "field": "$dimension0"} }, "update": { "x": {"field": "x"}, "y": {"field": "y"}, "angle": {"field": "angle"}, "fontSize": {"field": "fontSize"}, "fontWeight": {"field": "weight"}, "fillOpacity": {"value": 0.7} }, "hover": { "fillOpacity": {"value": 1} } } } ] }
可行解决方案代码
{ "$schema": "https://vega.github.io/schema/vega/v5.json", "data": [ { "name": "default", "transform": [ { "type": "countpattern", "field": "$dimension0", "pattern": "[\\w']{3,}", "stopwords": "very|now|can't|are|800|every|also|ever|just|dont|don't|been|pnly|I've|I'm|you|why|try|but|was|it's|her|2021|where|com|not|for|that|from|and|out|this|the|has|have|2022|2021" }, { "type": "formula", "as": "weight", "expr": "log(datum.count)*5" }, { "type": "window", "sort": {"field": "count", "order": "descending"}, "ops": ["row_number"], "fields": [null], "as": ["row"] }, {"type": "filter", "expr": "datum.row < 40"}, { "type": "formula", "as": "rotate", "expr": "[0, 90][~~(datum.count % 2)]" }, { "type": "wordcloud", "size": [{"signal":"width"}, {"signal":"height"}], "text": {"field": "text"}, "font": "Helvetica Neue", "fontSize": {"field": "count"}, "fontWeight": {"field": "weight"}, "fontSizeRange": [ {"signal": "(width+height)/96"}, {"signal": "(width+height)/24"}], "rotate": {"field": "rotate"}, "padding": 2 } ] } ], "scales": [ { "name": "color", "type": "ordinal", "domain": {"data": "default", "field": "text"}, "scheme": "set3" } ], "marks": [ { "type": "text", "from": {"data": "default"}, "encode": { "enter": { "text": {"field": "text"}, "align": {"value": "center"}, "baseline": {"value": "alphabetic"}, "fill": {"scale": "color", "field": "text"} }, "update": { "x": {"field": "x"}, "y": {"field": "y"}, "angle": {"field": "angle"}, "fontSize": {"field": "fontSize"}, "fontWeight":{"field": "weight"}, "fillOpacity": {"value": 0.6} }, "hover": { "fillOpacity": {"value": 1} } } } ] }
内容的提问来源于stack exchange,提问作者dsx
相关产品推荐
相关产品推荐

