如何修改Matplotlib中条形图标签的字体大小?
解决Matplotlib条形图图例警告与y轴刻度字体大小修改问题
一、解决图例警告问题
报错提示No artists with labels found to put in legend的原因很明确:你调用了ax.legend(),但没有给任何绘图元素(比如这里的条形)设置label属性,Matplotlib找不到能生成图例的内容,所以抛出警告。
解决方式二选一:
- 如果不需要图例:直接删掉
ax.legend(loc='best', fontsize=25)这行代码即可。 - 如果需要图例:给
plt.barh()添加label参数,或者按分组单独绘制条形并设置对应标签,让Matplotlib能识别图例元素。
二、修改条形图标签(水果名称)的字体大小
你代码里的plt.yticks(font='Roboto', fontsize=10)其实已经能设置y轴刻度(也就是水果名称)的字体和大小,也可以用更规范的面向对象方式(通过坐标轴对象ax)来设置,效果完全一致:
# 仅设置字体大小 ax.tick_params(axis='y', labelsize=10) # 同时设置字体和大小 ax.set_yticklabels(names, fontdict={'fontsize':10, 'fontfamily':'Roboto'})
修正后的完整代码(不需要图例的情况)
from matplotlib import pyplot as plt from matplotlib.pyplot import figure colorList = ['#e58725', '#04314e', '#176a94', '#176a94', '#176a94'] names = ['Apple', 'Banana', 'Orange', 'Grape', 'Cherry'] counts = [1, 2, 3, 4, 5] figure(figsize=(8.32,5.1)) plt.barh(names, counts, color=colorList) plt.title("My Title", fontsize=20, y=1.03) plt.grid(visible=None) plt.tick_params(axis=u'both', which=u'both',length=0) plt.xticks([]) plt.yticks(font='Roboto', fontsize=10) plt.savefig('Testing.png')
修正后的完整代码(需要图例的情况,按颜色分组)
如果想给不同颜色的条形加图例,比如区分特殊颜色和普通颜色的水果,可以这样写:
from matplotlib import pyplot as plt from matplotlib.pyplot import figure names = ['Apple', 'Banana', 'Orange', 'Grape', 'Cherry'] counts = [1, 2, 3, 4, 5] figure(figsize=(8.32,5.1)) ax = plt.gca() # 分组合绘制并设置图例标签 ax.barh(names[0], counts[0], color='#e58725', label='特殊水果') ax.barh(names[1], counts[1], color='#04314e', label='深蓝色水果') ax.barh(names[2:], counts[2:], color='#176a94', label='浅蓝色水果') ax.legend(loc='best', fontsize=25) plt.title("My Title", fontsize=20, y=1.03) plt.grid(visible=None) plt.tick_params(axis=u'both', which=u'both',length=0) plt.xticks([]) plt.yticks(font='Roboto', fontsize=10) plt.savefig('Testing.png')
内容的提问来源于stack exchange,提问作者jadedQuail
相关产品推荐
相关产品推荐

