带 altair 的简单折线图

Simple line graph with altair

我有一个 pandas 数据框,看起来像:

        Difference
months  
Jan     7552
Feb     8080
Mar     7707
Apr     7718
May     13895
Jun     14423
Jul     14375
Aug     11898
Sep     12326
Oct     12211
Nov     12739
Dec     12927

difference.index

Index(['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct',
       'Nov', 'Dec'],
      dtype='object', name='months')

difference.columns

Index(['Difference'], dtype='object')

我只想要一个折线图,其中 y 轴代表差异列中的数值,x 轴上的每个刻度代表一年中的一个月。

这应该非常接近我想要的,但我不确定如何正确分配 x。我以为我应该能够做 x = 'months' 或 x = difference.index,但这是一个错误。

alt.Chart( difference ).mark_line().encode(
    y = 'Difference',
    x = ???
)

根据数据的存储方式,您可以做很多事情。

假设您的月份存储在一列时间戳中,您可以这样做,使用 month TimeUnit 从时间戳中仅提取月份:

import pandas as pd
import altair as alt

df = pd.DataFrame({'months': pd.date_range('2018-01-01', periods=12, freq='M'),
                   'Difference': [7552, 8080, 7707, 7718, 13895, 14423, 14375,
                                  11898, 12326, 12211, 12739, 12927]})

alt.Chart(df).mark_line().encode(
    x='month(months):T',
    y='Difference'
)