在Altair中,可以使用mark_text图层来实现多行坐标轴标签打破堆叠条形图的效果。以下是一个示例代码:
import altair as alt
import pandas as pd
# 创建示例数据
data = pd.DataFrame({
'Category': ['A', 'B', 'C', 'D'],
'Value1': [10, 20, 30, 40],
'Value2': [15, 25, 35, 45],
'Value3': [5, 15, 25, 35]
})
# 融化数据,使得每个值都成为一个独立的行
melted_data = data.melt('Category', var_name='Variable', value_name='Value')
# 创建堆叠条形图
chart = alt.Chart(melted_data).mark_bar().encode(
x='Category',
y='Value',
color='Variable',
tooltip=['Category', 'Variable', 'Value']
)
# 创建坐标轴标签
axis_labels = alt.Chart(data).mark_text(align='left', baseline='middle').encode(
x=alt.X('Category', axis=None),
y=alt.Y('Value1', stack='zero'),
text='Category'
)
# 组合图表和坐标轴标签
alt.layer(chart, axis_labels).resolve_scale(y='independent')
这个示例代码首先创建了一个包含三个变量(Value1、Value2和Value3)和四个类别(A、B、C和D)的示例数据集。然后,使用melt函数将数据融化成长格式,使得每个值都成为一个独立的行。
接下来,使用Chart函数创建一个堆叠条形图,将Category作为x轴,Value作为y轴,并使用Variable变量来区分不同的颜色。同时,设置tooltip参数来显示Category、Variable和Value的详细信息。
然后,使用Chart函数再次创建一个图表,这次用于创建坐标轴标签。将Category作为x轴,Value1作为y轴,并使用stack='zero'参数来确保坐标轴标签位于堆叠条形图的最底部。
最后,使用alt.layer函数将堆叠条形图和坐标轴标签组合在一起,并使用resolve_scale函数将y轴的比例尺设置为独立(即不进行堆叠),以确保坐标轴标签能够正常显示。
上一篇:Altair多行工具提示