Matplotlib绘制柱状图标题与坐标轴标签不显示问题排查
问题出在「方法调用」和「属性赋值」的混淆!
嘿,这个小坑我刚学Matplotlib的时候也踩过——你把标题、坐标轴标签的设置方法当成了普通属性直接赋值啦!
错误核心原因
plt.title、plt.xlabel、plt.ylabel都是Matplotlib提供的函数,必须通过()传递字符串参数来调用,才能触发设置标签的逻辑。而你用plt.title='xxx'这种写法,只是把这些变量重新赋值成了字符串,根本没有告诉Matplotlib要显示标题/标签,所以自然看不到任何文字。
修正后的完整代码
把赋值语句改成函数调用就搞定了:
import matplotlib.pyplot as plt import numpy as np # 生成模拟数据集: districts = ['Alappuzha','Ernakulam','Idukki','Kannur','Kasaragod','Kollam','Kottayam','Kozhikode','Malappuram','Palakkad','Pathanamthitta','Thiruvananthapuram','Wayanad','Thrissur'] distAb = ['Alp','Ern','Idk','Knr','Ksd','Klm','Ktm','Kzd','Mlp','Plk','Pta','Tvm','Wyd','Tsr'] population = [2121943,3279860,1107453,2525637,1302600,2629703,1979384,3089543,4110956,2810892,1195537,3307284,816558,3110327] posArrange = np.arange(len(districts)) # 创建柱状图 plt.bar(posArrange,population,color='#ff9900', width=.8) # 改成函数调用传递参数! plt.title('Population of Districts in Kerala') plt.xlabel('Districts') plt.ylabel('Population') plt.xticks(posArrange,distAb) # 显示图形 plt.show()
额外小建议
如果以后要做更复杂的绘图,推荐用Matplotlib的面向对象风格,这种方式能更清晰地控制每个绘图元素,也不容易再犯这类混淆错误:
fig, ax = plt.subplots() ax.bar(posArrange, population, color='#ff9900', width=.8) ax.set_title('Population of Districts in Kerala') ax.set_xlabel('Districts') ax.set_ylabel('Population') ax.set_xticks(posArrange) ax.set_xticklabels(distAb) plt.show()
内容的提问来源于stack exchange,提问作者Santo K. Thomas
相关产品推荐
相关产品推荐

