Matplotlib如何实现从指定负Y值起点绘制负数值柱状图
Matplotlib 实现指定负起点的负向柱状图配置
代码偏差原因
- 原有逻辑里
plt.bar(f.x, f.y, bottom=-60)的柱定位本身无错误,额外添加的plt.gca().invert_yaxis()会彻底颠倒Y轴数值顺序,变成顶部显示-60、底部显示0,既违背“Y轴底部为-60、顶部为0”的刻度要求,也会让柱的视觉生长方向向下偏移。 - Matplotlib默认Y轴遵循“下小上大”的数值排布规则,本身就匹配“底部数值更小、顶部数值更大”的刻度要求,完全无需做轴反转操作。
可直接运行的修正代码
import matplotlib.pyplot as plt import pandas as pd f = pd.DataFrame({"x": range(9), "y": [-21, -24, -27, -30, -33, -36, -39, -42, -45]}) # 设定柱固定从-60位置开始,柱高为目标值与起点的差值,向上延伸至对应目标数值 plt.bar(f.x, f.y + 60, bottom=-60) # 锁定Y轴显示范围:底部为-60,顶部为0 plt.ylim(bottom=-60, top=0) plt.show()
最终效果
- 所有柱状图从最下方的-60刻度位置开始向上生长,顶端精准停留在每个数据对应的负数值位置。
- Y轴刻度从下到上依次排布为-60、-40、-20、0,和Excel中“横坐标轴交点设置为-60”的柱状图视觉表现完全一致。
内容的提问来源于stack exchange,提问作者johmey
相关产品推荐
相关产品推荐

