限制条形图以按条宽显示前 K 个条
Limiting bar chart to show top K bars by width of bar
我正在尝试用我的数据集做一些 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 之间(我从 pandas 中进行的相同分析中知道标签计数介于 1 和 1632 之间。)
我看到了正确的条数,但 x 轴从 0 变为 1.0,并且每个条都延伸到 1.0。
不要将 {field: "record_id", aggregate: "distinct"}
用于 x 编码,而应使用已计算的聚合值 {field: "tag_count"}
,然后您的图表将按预期工作。
编辑:这是你的图表与你在评论中提供的数据的样子,使用这种方法:vega editor link
我正在尝试用我的数据集做一些 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 之间(我从 pandas 中进行的相同分析中知道标签计数介于 1 和 1632 之间。)
我看到了正确的条数,但 x 轴从 0 变为 1.0,并且每个条都延伸到 1.0。
不要将 {field: "record_id", aggregate: "distinct"}
用于 x 编码,而应使用已计算的聚合值 {field: "tag_count"}
,然后您的图表将按预期工作。
编辑:这是你的图表与你在评论中提供的数据的样子,使用这种方法:vega editor link