用plt.contour画的等值线,想问一下怎么才能只显示三角形内部的等值线部分?
step = 0.01
x = np.arange(0,2*sqrt(3)/3,step)
y = np.arange(0,1,step)
#meshgrid用于生成三维曲面的分格线座标
X,Y = np.meshgrid(x,y)
#写入IM函数
def I(x,y):
return ((0.31*(sqrt(3)*X-Y)/2 + 14.72*(1 - (sqrt(3)*X-Y)/2 - Y )+ 11.53*Y + 27.34*2.025)/
(0.19*(sqrt(3)*X-Y)/2 + 5.48*(1 - (sqrt(3)*X-Y)/2 - Y) + 48.27*Y + 4.46*2.025))
#写入SM函数
def S(x,y):
return ((2.42*(sqrt(3)*x-y)/2 + 70.25*(1 - (sqrt(3)*x-y)/2 - y) + 34.42*y + 61.52*2.025)/
((0.31*(sqrt(3)*x-y)/2 + 14.72*(1 - (sqrt(3)*x-y)/2 - y )+ 11.53*y + 27.34*2.025)+
(0.19*(sqrt(3)*x-y)/2 + 5.48*(1 - (sqrt(3)*x-y)/2 - y) + 48.27*y + 4.46*2.025)))
#写入KH函数
def K(x,y):
return (((53.13*(sqrt(3)*x-y)/2 + 1.41*(1 - (sqrt(3)*x-y)/2 - y) + 3.53*y + 4.79*2.025/100)-
1.65*(0.31*(sqrt(3)*x-y)/2 + 14.72*(1 - (sqrt(3)*x-y)/2 - y )+ 11.53*y + 27.34*2.025/100)-
0.33*(0.19*(sqrt(3)*x-y)/2 + 5.48*(1 - (sqrt(3)*x-y)/2 - y) + 48.27*y + 4.46*2.025/100))/
(2.8*(2.42*(sqrt(3)*x-y)/2 + 70.25*(1 - (sqrt(3)*x-y)/2 - y) + 34.42*y + 61.52*2.025/100)))
#画等边三角形
plt.plot([0,sqrt(3)/3],[0,1],color='k')
plt.plot([sqrt(3)/3,2*sqrt(3)/3],[1,0],color='k')
plt.plot([0,2*sqrt(3)/3],[0,0],color='k')
#画等值线,设置颜色
IM = plt.contour(X,Y,I(X,Y),[1.7,1.8,1.9,2.0],colors='r')
SM = plt.contour(X,Y,S(X,Y),[1.7,1.8,1.9,2.0],colors='b')
KH = plt.contour(X,Y,K(X,Y),[0.6,0.7,0.8,0.9],colors='k')
我不知道我理解的对不对,你的意思是把三角形以外的线段都删掉是吧?
你可以算算每条线段与三角形的两条线的交点,然后限制这条线的X取值范围是从相交的左条线的交点到右条线的交点。