在Altair中,许多绘图都依赖于给定的数据集的默认排序。但是,如果手动添加排序,则可能会破坏图表。这是由于本地排序可能会导致数据点与它们应该在图表中出现的地方不对齐。解决这个问题的一种方法是在转换数据集时手动重新排序。请参阅以下示例:
import pandas as pd
import altair as alt
from vega_datasets import data
cars = data.cars() # 加载数据集
brand_counts = cars.groupby('Origin').size().reset_index(name='Count')
# 创建Altair散点图,保留默认排序
alt.Chart(brand_counts).mark_bar().encode(
x='Count:Q',
y='Origin:N'
)
# 创建图表,手动重新排序数据
sorted_brands = brand_counts.sort_values(by='Count', ascending=False) # 按计数排序
alt.Chart(sorted_brands).mark_bar().encode(
x='Count:Q',
y=alt.Y('Origin:N', sort=list(sorted_brands['Origin']))
)
在上面的例子中,我们通过对数据进行手动排序来创建了一个带有排序的Altair图表。我们首先分组数据并计算每个品牌的数量。然后,我们使用默认排序创建了一张图表,然后按计数手动对数据进行排序,并在其上创建了一张排序后的图表。