限制条形图,以按条的宽度显示前K条

时间:2019-04-14 05:18:16

标签: vega-lite

我正在尝试使用我的数据集数据集进行一些Vega-lite可视化。我的数据集中的字段是:record_id,主题,标签。 Record_id是数据集的唯一标识符,但是每个数据集可以具有多个主题和多个标签,因此每个数据集的主题和标签的每种可能组合都有一行。 我想要一个条形图,显示每个标签有多少数据集已被该标签标记。但是有数百个标签,条形图中无法显示的标签太多,所以我想限制在前K位,但是哪个标签显示最多。

我尝试遵循这个"Top-K Plot With Others in Vega-Lite"的示例,在该示例中,他按全球总收入来绘制前K名董事。但是,当我只是根据绘制的相同标准选择前k个时,也许有一种更简单的方法来做到这一点?我也愿意以不同的方式表现出相同的关系。

VegaLite({
      data: {values: data},
      title: "Top k Tags",
      mark: {type: "bar", tooltip: null},
      transform: [
        { aggregate: { 
           op: "distinct", 
           field: "record_id", 
           as: "tag_count"}, 
          groupby: ["tag"]},    // aggregate on "tag" field and count within the groups         
        { window: [
          { op: "row_number", 
            as: "tag_rank"}], 
          sort: [{ 
            field: ["tag_count"], 
            order: "descending" }]},
        { filter: `datum.tag_rank < 21`}     
      ],
      encoding: {
        x: {
          aggregate: "distinct",
          field: "record_id", 
          type: "quantitative", 
          axis: {title: "Data Sets with this Tag"}
        },
        y: {
          field: "tag",
          type: "nominal",
          sort: { op: "distinct", field: "record_id", order: "descending" }
        }
      }
    })

我希望看到水平条形图有20条,其值在1632和100之间(通过对熊猫进行相同的分析,我知道标签计数在1和1632之间。)

我看到正确的条形数量,但x轴从0变为1.0,每个条形都延伸到1.0。

1 个答案:

答案 0 :(得分:0)

您应该使用已经计算出的汇总值{field: "record_id", aggregate: "distinct"},而不是使用{field: "tag_count"}来进行x编码,然后图表将按预期工作。

编辑:使用以下方法,将图表与注释中提供的数据一起显示如下:vega editor link

enter image description here