【问题标题】:Labeling one bar in altair在 altair 中标记一根柱子
【发布时间】:2022-11-12 08:22:23
【问题描述】:

我想在由 altair 组成的条形图中标记一个确切的条形,但我找不到有关该选项的信息 - 只标记整个情节,我不感兴趣。例如,可能有诸如 altair.condition 之类的东西用于着色?所以我可以根据条件标记一个酒吧。谢谢!

【问题讨论】:

  • 你能提供一个“标记一个精确条”的例子吗?
  • 请澄清您的具体问题或提供其他详细信息以准确突出您的需求。正如它目前所写的那样,很难准确地说出你在问什么。
  • 例如,在这里(pastebin.com/Yifwwpaz)我突出显示了条形,它的值等于某个变量。而且我也想写这个值,但我不知道如何标记一个条形图(条形图-pastenow.ru/JEJ2W

标签: python label bar-chart altair


【解决方案1】:

标记一个条是可行的,只需几个额外的步骤。我将使用内置的airports 数据集进行演示。

airports = data.airports().query("country == 'USA'").dropna()

airports['label'] = False  # create new column
airports.loc[airports['state'] == 'NY', 'label'] = True  # choose state to label in the new column

airports_bar = alt.Chart(airports).mark_bar().encode(
    y=alt.Y('state:N', sort = 'x'),
    x=alt.X('count()', axis=alt.Axis(grid=False)),
    color=alt.Color('label', legend=None),
    tooltip=['count()']
)

正如上面代码中的 cmets 中所解释的,我们只需创建一个新列,其中将包含我们要标记的条形。我选择标注NY;一旦我们创建了新列,我们只需将其值NY 设置为True。然后,这将在 color 参数中用于 color NY,与所有其他状态分开。要使用计数值标记NY,我们使用mark_text,在其中我们专门过滤/查询NY,而不是整个数据帧。这允许我们只标记NY 而不能标记其他状态。代码和绘图如下所示:

airports_bar + alt.Chart(airports.query("state == 'NY'")).mark_text(dx=10).encode(
    y=alt.Y('state:N'),
    x=alt.X('count()', axis=alt.Axis(grid=False)),
    text='count()')

Figure with only one bar colored and labelled.

请注意,尽管在此演示中未显示,但我们应该按计数对条形图进行排序。希望这回答了你的问题!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-12
    • 1970-01-01
    • 1970-01-01
    • 2019-04-03
    • 2019-10-19
    • 2018-12-11
    • 2020-02-25
    • 1970-01-01
    相关资源
    最近更新 更多