Jupyter Notebook中使用matplotlib绘图无法显示标题和标签如何解决
问题核心原因
plt.show()的默认执行逻辑是渲染并清空当前活动的绘图对象,你在绘制步骤中间多次调用该方法,导致元素分散在不同画布、后续无内容可渲染。
修复后可正常运行的代码
import matplotlib.pyplot as plt x = [5, 2, 9, 4, 7] y = [10, 5, 8, 4, 2] # 所有绘图、样式配置都放在plt.show()之前执行 plt.scatter(x, y) plt.title("GeeksForGeeks") plt.xlabel("Time (hr)") plt.ylabel("Position (Km)") # 仅最后调用一次渲染 plt.show()
对应问题的解决说明
- 绘图数据、标题、标签同时显示的方法
所有绘图操作(绘制数据、设置标题、设置坐标轴标签)都要放在同一次plt.show()调用之前执行,所有配置会作用在同一个活动画布上,一次渲染即可完整显示所有元素,不会出现丢失的情况。 plt.show()无输出的解决方法
你之前多次调用plt.show()后已经清空了当前画布,后续没有新的绘图操作就直接调用plt.show()自然没有内容输出。如果在Jupyter环境中使用,可在导入库后添加魔法命令%matplotlib inline,开启自动渲染模式,运行绘图代码后会自动输出当前画布内容,不需要每次手动调用plt.show()。
如果需要跨Jupyter单元格操作同一张图,更稳定的方式是用面向对象的写法显式绑定画布对象:
# 单元格1:创建画布并绘制数据 import matplotlib.pyplot as plt %matplotlib inline fig, ax = plt.subplots() x = [5, 2, 9, 4, 7] y = [10, 5, 8, 4, 2] ax.scatter(x, y)
# 单元格2:继续配置样式并显示 ax.set_title("GeeksForGeeks") ax.set_xlabel("Time (hr)") ax.set_ylabel("Position (Km)") fig
内容的提问来源于stack exchange,提问作者Kevin the Drummer
相关产品推荐
相关产品推荐

