【发布时间】:2019-04-14 05:18:16
【问题描述】:
我正在尝试使用我的数据集数据集进行一些 Vega-lite 可视化。我的数据集中的字段是:record_id、subject、tag。 Record_id 是数据集的唯一标识符,但每个数据集可以有多个主题和多个标签,因此每个数据集的主题和标签的每个可能组合都有一行。 我想要一个条形图,显示每个标签有多少数据集被该标签标记。但是有数百个标签,条形图中无法显示,所以我想限制在前 K 个,但哪些标签显示最多。
我试图遵循这个"Top-K Plot With Others in Vega-Lite" 的例子,他按全球总票房绘制了前 K 名导演。但是,当我只是根据我正在绘制的相同标准选择 top 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。
【问题讨论】:
标签: vega-lite