如何移除Matplotlib图表上方的冗余文本?
解决Matplotlib图表顶部出现冗余对象文本的问题
问题现象
使用Matplotlib绘图时,某单元格的图表顶部会出现不美观的对象文本(例如([<matplotlib.axis.YTick at 0x7fe2b81d24d0>, [Text(0, 1, '1')),即使尝试移除标签,(0.0, 20.0)这类文本仍会残留,而另一绘图单元格无此问题。
问题原因
在Jupyter环境中,若单元格最后一行是Matplotlib的特定函数(如plt.yticks()、plt.ylim()),这类函数会返回对应的对象实例,Jupyter会自动打印这些返回值,导致图表上方出现冗余文本。无问题的单元格最后一行是plt.grid(),该函数返回None,因此不会触发自动打印。
解决方法
三种简单方式可抑制冗余文本:
- 在单元格最后一行代码末尾添加分号
;,阻止Jupyter打印返回值 - 将最后一行的函数调用赋值给无用变量(如
_),吸收返回值 - 在单元格末尾调用
plt.show(),明确触发图表显示,避免返回值被打印
修改后的示例代码
针对出现问题的绘图单元格,这里用添加分号的方式修改:
# 定义数组p p = list(range(0,20)) plt.plot(sequance,p, "r.") # 注:原代码中l未定义,此处修正为前面生成的sequance数组 # 设置y轴范围 plt.ylim(0, 20); # 添加网格线和标签 plt.grid() plt.title("序列数值与位置关系") plt.xlabel("序列数值") plt.ylabel("序列位置") # 修改刻度间隔,提升可读性 plt.xticks(list(range(0, 55000, 5000))) plt.yticks(list(range(1,21)));
也可以用plt.show()的方式:
# 定义数组p p = list(range(0,20)) plt.plot(sequance,p, "r.") # 设置y轴范围 plt.ylim(0, 20) # 添加网格线和标签 plt.grid() plt.title("序列数值与位置关系") plt.xlabel("序列数值") plt.ylabel("序列位置") # 修改刻度间隔,提升可读性 plt.xticks(list(range(0, 55000, 5000))) plt.yticks(list(range(1,21))) plt.show() # 调用show()明确显示图表,抑制返回值打印
额外说明
原代码存在一处小错误:plt.plot(l,p, "r.")中的l未定义,应为前面生成的sequance数组,已在修改后的代码中修正。
内容的提问来源于stack exchange,提问作者Jumper_Child64
相关产品推荐
相关产品推荐

