matplotlib绘制柱状图时Google Colab环境坐标轴线条与柱体重叠问题求解
问题原因
Google Colab 环境下 Matplotlib 的默认样式配置与 Jupyter Notebook 不一致,轴脊、网格的默认渲染优先级高于柱状图,叠加plt.ylim的错误传参触发的版本兼容问题,最终导致轴标签线条与柱状图重叠。
修复方案
可任选以下一种或组合使用解决问题:
- 调整柱状图渲染优先级
为plt.bar方法添加zorder=2参数,确保柱状图层级高于轴元素和网格,修改后代码如下:barplot = plt.bar(labels,values,width=0.3,color = c, zorder=2) - 修正坐标轴参数写法
plt.ylim仅支持传入上下限两个参数,第三个刻度间隔参数不会生效,Colab 环境对错误传参的兼容处理较差会额外触发显示异常,正确的刻度间隔设置需要单独调用plt.yticks:plt.ylim(50000, 100000) plt.yticks(range(50000, 105000, 5000)) - 全局配置渲染层级
在绘图代码开头添加全局配置,强制所有轴元素、网格渲染在图形下方:import matplotlib.pyplot as plt plt.rcParams['axes.axisbelow'] = True
完整可运行代码
import matplotlib.pyplot as plt labels = ['A','B','C'] values = [70000,80000,90000] c = ['#FFC000','#5B9BD5','#404040','#5B9BD5'] # 指定zorder确保柱状图在最上层 barplot = plt.bar(labels,values,width=0.3,color = c, zorder=2) # 柱子顶部标注数值 for i in range(len(values)): plt.annotate(str(values[i]), xy=(labels[i],values[i]), ha='center', va='bottom') plt.ylabel('Savings') # 修正坐标轴配置 plt.ylim(50000,100000) plt.yticks(range(50000, 105000, 5000)) # 网格层级设为最低 plt.grid(which='major', axis='y', zorder=0) plt.show()
内容的提问来源于stack exchange,提问作者Kanchon Gharami
相关产品推荐
相关产品推荐

