tellme('You will define a triangle, click to begin')
plt.waitforbuttonpress()
whileTrue: pts = [] whilelen(pts) < 3: tellme('Select 3 corners with mouse') pts = np.asarray(plt.ginput(3, timeout=-1)) iflen(pts) < 3: tellme('Too few points, starting over') time.sleep(1) # Wait a second
ph = plt.fill(pts[:, 0], pts[:, 1], 'r', lw=2)
tellme('Happy? Key click for yes, mouse click for no')
if plt.waitforbuttonpress(): break
# Get rid of fill for p in ph: p.remove()
现在轮廓根据三角形角的距离 - 只是一个例子
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
# Define a nice function of distance from individual pts deff(x, y, pts): z = np.zeros_like(x) for p in pts: z = z + 1/(np.sqrt((x - p[0])**2 + (y - p[1])**2)) return1/z
X, Y = np.meshgrid(np.linspace(-1, 1, 51), np.linspace(-1, 1, 51)) Z = f(X, Y, pts)
CS = plt.contour(X, Y, Z, 20)
tellme('Use mouse to select contour label locations, middle button to finish') CL = plt.clabel(CS, manual=True)
现在做一个缩放
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
tellme('Now do a nested zoom, click to begin') plt.waitforbuttonpress()
whileTrue: tellme('Select two corners of zoom, middle mouse button to finish') pts = np.asarray(plt.ginput(2, timeout=-1))