缺少python等高线图中的等级

时间:2016-10-07 17:00:17

标签: python matplotlib contour

我正在尝试使用指定级别的模拟速度场绘制轮廓,我的值在[75,150]的范围内,并且我将我的级别指定为levels=[75,95,115,135,150],但它只给出了95,115,135行。我检查了我的2d数组,我确实有75和150的点在直线上,但情节只是没有显示它们。我想知道为什么会这样。非常感谢!! 这是我的代码:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.patches import Ellipse

#some parameters...does not matter 
i=60*np.pi/180 #inclination
r=100 #radius
vc=150
vr=0

x=np.arange(-100,100,1)
y=np.arange(-100,100,1)

xx,yy=np.meshgrid(x,y)

#simulate velocity fields....does not matter either
def projv((x, y),v_c, v_r, inc):
   projvy = v_c*x*np.cos(inc)/np.sqrt(x**2+y**2) + v_r*y*np.cos(inc)/np.sqrt(x**2+y**2)
   projvx = v_c*y/np.sqrt(x**2+y**2) + v_r*x/np.sqrt(x**2+y**2)
   v = np.sqrt(projvx**2 + projvy**2)
   return v.ravel()

 #here is my 2d array
 vel = projv((xx,yy),vc, vr, i).reshape(200,200)

#levels I specified
levels=[75,95,115,135,150]
cs=plt.contour(x,y,vel,levels)
plt.clabel(cs,inline=1,fontsize=9)
plt.show()

然后我得到了这个:This is not showing the 75 and 150 contour levels that I specified. Why?

1 个答案:

答案 0 :(得分:0)

您缺少75和150轮廓,因为这些值永远不会在数组中交叉。值150存在,值75(.000000000000014)存在,但这些是最小值和最大值。轮廓描述线/表面边界

#levels modified
levels=[76,95,115,135,149]
cs=plt.contour(x,y,vel,levels)
plt.clabel(cs,inline=1,fontsize=9)

with modified levels