我正在尝试使用我的数据集数据集进行一些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。
答案 0 :(得分:0)
您应该使用已经计算出的汇总值{field: "record_id", aggregate: "distinct"}
,而不是使用{field: "tag_count"}
来进行x编码,然后图表将按预期工作。
编辑:使用以下方法,将图表与注释中提供的数据一起显示如下:vega editor link