调整Pyplot图例大小时出现“No artists with labels found”警告
解决Pyplot图例放大无效及警告问题
问题原因
你代码里调用了两次plt.legend():
- 第一次
plt.legend(fontsize="x-large")未传入图例标签,matplotlib找不到带标签的绘图元素,触发警告 - 第二次
plt.legend(["This is my legend"])设置了图例内容,但覆盖了第一次的字体大小配置,导致放大效果失效
警告信息翻译
未找到带标签的艺术家(Artist)用于生成图例。注意:当不带参数调用legend()时,标签以下划线开头的艺术家会被忽略。
关于Artist的说明
在matplotlib中,Artist是所有绘图元素的统称——比如你绘制的折线、柱状图的柱子、散点标记等都属于Artist。只有给Artist设置了label属性,调用legend()时才能识别并生成对应的图例条目。
修正方案
有两种简洁的修正方式:
方式1:绘图时直接设置标签,再统一配置图例大小
import matplotlib.pyplot as plt import seaborn as sns sns.set_style("whitegrid") plt.rcParams['figure.figsize'] = [15, 7] lst = [1,2,3,4,5,6,7,8,9,8,7,6,5,4,3,4,5,6] # 绘图时指定label plt.plot(lst, label="This is my legend") # 一次调用legend设置字体大小 plt.legend(fontsize="x-large") plt.ylabel('some numbers') plt.show()
方式2:调用legend时同时传入标签和字体大小参数
import matplotlib.pyplot as plt import seaborn as sns sns.set_style("whitegrid") plt.rcParams['figure.figsize'] = [15, 7] lst = [1,2,3,4,5,6,7,8,9,8,7,6,5,4,3,4,5,6] plt.plot(lst) # 一次完成图例内容和大小设置 plt.legend(["This is my legend"], fontsize="x-large") plt.ylabel('some numbers') plt.show()
内容的提问来源于stack exchange,提问作者Peyman
相关产品推荐
相关产品推荐

