通过plot画圆的各种智障错误和方法
1.如果有圆外线需要设定两个x
x = np.linspace(-10, 10.0, 100)
x1 = np.linspace(-2, 2, 100)
y1 = b + np.sqrt(r**2 - (x1 - a)**2)
这个是圆
y2 = -2x + 10
y3 = 1 + (x - 1) ** 2
y4 = -2x1 + 10
之所以要在设定一条线是因为在圆内的x1自变量范围里,
后面用fill_between的时候
如果将y1和y2进行填充会因为自变量范围不一样造成奇怪的错误,
所以这里用一条y4将圆内自变量范围里的线填充一下
这个是其他的线
# Make plot
plt.plot(x1, y1, label=r'$x_{1}^{2}+x_{2}^{2} \geq 4$')
plt.plot(x1, -y1, label=r'$x_{1}^{2}+x_{2}^{2} \geq 4$')
plt.plot(x, y2, label=r'$2 x_{1}+x_{2} \leq 10$')
# plt.plot(x, y3, label=r'$ -x_{1}-x_{2} \leq -10x_{2}$')
plt.vlines(1, -10, 10, color="red") # 竖线
plt.xlim((-10, 10.000))
plt.ylim((-10, 10.000))
plt.xlabel(r'$x1$')
plt.ylabel(r'$x2$')
这里注意要两条线,y1和-y1不然圆只有正半个
# plt.fill_between(x, y2, y3, where=x <= -2, color='grey', alpha=0.5)
# plt.fill_between(x1, y4, y1, where=(y4>y1), color='grey', alpha=0.5)
# plt.fill_between(x, y2, y3, where=(x >= 2) & (x <= 90/19), color='grey', alpha=0.5)
plt.grid(True, linestyle='-.')
plt.legend(bbox_to_anchor=(1.05, 1), loc=2, borderaxespad=0.)
# plt.savefig('ordering_constraints.eps',dpi=600,bbox_inches='tight')
plt.show()
这样问题就解决了
画无限大上限的函数阴影时候使用
plt.fill_between(X,1,Y1,color='blue',alpha=.25) # 这里的1是图纸的上限就可以