Altair绘制柱状图末尾柱子超出坐标轴 如何避免重叠
解决方案
你遇到的柱子超出x轴范围的核心原因是:柱状图默认以x轴对应数值为中心向左右延伸宽度,当x值接近你设置的domain边界时,柱子外侧部分就会超出显示范围。下面是两种可直接复用的可行方案:
方案1:微调scale的domain范围,同时强制指定x轴刻度值
该方案不会改变你需要的0-1刻度显示效果,仅悄悄放宽绘图区域边界预留柱子空间:
alt.Chart(feature_score_df[0]).mark_bar(color='darkred', size=30).encode( x=alt.X( 'feature_score:Q', # 微调domain上下限,留出容纳柱子宽度的空白,数值可根据实际效果调整 scale=alt.Scale(domain=(0.02, 0.98)), axis=alt.Axis( title='Feature Score', # 强制指定刻度值,保证仅显示0-1区间的常规刻度,不会出现多余新增刻度 values=[0, 0.2, 0.4, 0.6, 0.8, 1] )), y=alt.Y('count:Q', axis=alt.Axis(title='Account Count')), tooltip=alt.Tooltip(['feature_score', 'count']) )
方案2:使用scale的padding参数自动预留空白
如果不想手动调整domain数值,可以直接给连续scale添加padding参数,自动在domain两侧生成预留空间:
alt.Chart(feature_score_df[0]).mark_bar(color='darkred', size=30).encode( x=alt.X( 'feature_score:Q', scale=alt.Scale( domain=(0.05, 0.95), # 按需调整padding大小,数值越大预留空白越多 padding=0.03 ), axis=alt.Axis(title='Feature Score')), y=alt.Y('count:Q', axis=alt.Axis(title='Account Count')), tooltip=alt.Tooltip(['feature_score', 'count']) )
内容的提问来源于stack exchange,提问作者Juri
相关产品推荐
相关产品推荐

