Matplotlib复用坐标参数警告 供需曲线均衡点绘制异常如何解决
问题解决方法
异常根因
- 代码中
ax = plt.axes()这一行会在当前画布上新建空白坐标轴,默认和原有绘图的坐标轴位置重叠,原有的供需曲线、均衡点会被新坐标轴遮挡,同时新坐标轴的刻度范围和原有绘图不匹配,最终导致显示异常。 - 不需要新建坐标轴,直接获取当前已有的坐标轴对象即可完成标注操作。
修正后完整代码
import numpy as np import sympy as sy import matplotlib.pyplot as plt def S(q): return (q**2) def D(q): return (q - 20)**2 # 计算均衡点 q = sy.Symbol('q') eq = sy.Eq(S(q), D(q)) q_eq = sy.solve(eq)[0] p_eq = S(q_eq) # 绘图 plt.figure(figsize= (10, 8)) q2 = np.linspace(0, 16, 1000) plt.plot(q2, S(q2), label = "S Curve") plt.plot(q2, D(q2), label = "D Curve") plt.plot(q_eq, p_eq, 'o', markersize = 14) plt.title("Equilibrium point") plt.legend(frameon = False) plt.xlabel("Quantity") plt.ylabel("Price") # 关键修改:获取当前已有坐标轴,而非新建 ax = plt.gca() ax.annotate(f'Equilibrium at ({q_eq}, {p_eq})', xy=(q_eq,p_eq), xytext=(10, 250), arrowprops=dict(facecolor='black')) plt.show()
效果验证
修改后即可正常显示供需曲线、均衡标记点与标注箭头,与预期效果一致。
内容的提问来源于stack exchange,提问作者Weke Moyosore
相关产品推荐
相关产品推荐

