Altair distinct and count 不绘制预期值

Altair distinct and count not plotting expected value

我正在尝试在 y 轴上绘制包含字符串的列中的唯一值的数量,如下所示:

alt.Chart(as_df).mark_bar(color='firebrick').encode(
    alt.X('TimeUTC:T', title='Day',axis=alt.AxisConfig(labelAngle=45)), 
    alt.Y('distinct(FlightID)', type='nominal', title='Number of flights')
)

我的数据是这样的形式:

TimeUTC FlightID Latitude Longitude
2021-01-01 06:05:00.079745+00:00 2021-01-01 06:05:00+00:00 a706014b-02d0-424a-a346-2bd25ffa8e08 42.3323
2021-01-01 06:05:00.291337+00:00 2021-01-01 06:05:00+00:00 d2e2bd67-c95a-426d-9357-a717d6c9124d 42.3434
2021-01-01 06:06:00.131817+00:00 2021-01-01 06:06:00+00:00 a706014b-02d0-424a-a346-2bd25ffa8e08 42.3323
2021-01-01 06:06:00.219178+00:00 2021-01-01 06:06:00+00:00 d2e2bd67-c95a-426d-9357-a717d6c9124d 42.3434

结果是这个图表:

如果我计算 2 月 9 日唯一 FlightID 的数量,我得到:

foo = as_df['20210209':'20210209']
foo.FlightID.nunique()
58

为什么图表显示唯一 FlightID 的最大数量为 12 而至少有一天是 58?

python:3.9.7 牵牛星:4.1.0

在图表中,您按时间戳对 x 轴进行分组,而在 pandas 聚合中,您按日期对数据进行分组(即去除小时和分钟)。

如果您想在图表中按日期对 x 轴进行分组,您可以这样做:

alt.Chart(as_df).mark_bar(color='firebrick').encode(
    alt.X('yearmonthdate(TimeUTC):T', title='Day',axis=alt.AxisConfig(labelAngle=45)), 
    alt.Y('distinct(FlightID)', type='nominal', title='Number of flights')
)