You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何减少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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 20:19:50