问题描述
我仍然熟悉 matplotlib 库,但遇到了一个我以前从未遇到过的问题。我的目的是将与 scipy.integrate.quadrature
方法相关的相对误差作为其容差值的函数绘制出来。然而,我在绘制它时遇到的是来自同一个 plt.plot 命令的两条不同的线。这怎么发生的?我会把我的代码放在下面。
from scipy import integrate
def f(x):<br/>
return np.sqrt(1 - x**2)<br/>
xlist = []<br/>
for i in range (-12,0):<br/>
xlist.append(i)<br/>
tolerancelist = []<br/>
for i in xlist:<br/>
tolerancelist.append(10**i)<br/>
ylist = []<br/>
for i in tolerancelist:<br/>
q = integrate.quadrature(f,-1,1,tol=i)<br/>
ylist.append(q)<br/>
plt.plot(tolerancelist,ylist,label='line1')<br/>
legend = plt.legend(loc='best')
解决方法
如果您打印 ylist,您将更好地了解正在发生的事情。
[(1.5708027245307299,3.9572988685954158e-07),(1.5708027245307299,(1.5708087325834776,9.6666040283466259e-07),(1.5708599005218433,8.8700570273214652e-06),(1.571132830068839,8.7760917619084111e-05),(1.5721552241258274,0.00062673127406376317),(1.5759063348593505,0.0043711928407235145),(1.5916172578151968,0.041375904040254818)]
ylist 中的每个值实际上都是两个值的元组。 Matplotlib 将两者都绘制为两条单独的线。