1

我有一个相当简单的条形图,使用 Python altair 库创建,基于 Pandas DataFrame。

条形图

生成图表的代码是:

Chart(df).configure(background='white').mark_bar().encode(
    X('user_id', bin=Bin(maxbins=10), title='Subscriber count'),
    Y('count(*)', title='Number of publications')
)

转换为以下 vega-lite 语法:

{
    "encoding":
    {
        "x":
        {
            "bin":
            {
                "maxbins": 10
            },            "field": "user_id",
            "title": "Subscriber count",
            "type": "quantitative"
        },
        "y":
        {
            "aggregate": "count",
            "field": "*",
            "title": "Number of publications"
        }
    },
    "mark": "bar"
}

我唯一想补充的是每个条形图上(或上面)的实际值,最好逆时针旋转 90°。

到目前为止,我只能找到该mark_text功能,如果我使用分层,这可能是一个选项,但我找不到如何旋转文本。当然,如果有更好的方法(或者根本不可能),一定要告诉!谢谢!

4

2 回答 2

0

您可以使用文本配置旋转指定的角度。本质上,您可能想要执行以下操作:mark_text(angle=-90, dx=10).

于 2017-07-31T06:17:53.540 回答
0

文档库中的此示例显示了如何将文本添加到条形图:

import altair as alt
from vega_datasets import data

source = data.wheat()

bars = alt.Chart(source).mark_bar().encode(
    x='wheat:Q',
    y="year:O"
)

text = bars.mark_text(
    align='left',
    baseline='middle',
    dx=3  # Nudges text to right so it doesn't appear on top of the bar
).encode(
    text='wheat:Q'
)

(bars + text).properties(height=900)
于 2021-02-15T01:54:38.977 回答