当我用 绘制某些东西时contourf
,我会在绘图窗口的底部看到鼠标光标下的当前 x 和 y 值。有没有办法也可以看到 z 值?
这里有一个例子contourf
:
import matplotlib.pyplot as plt
import numpy as hp
plt.contourf(np.arange(16).reshape(-1,4))
当我用 绘制某些东西时contourf
,我会在绘图窗口的底部看到鼠标光标下的当前 x 和 y 值。有没有办法也可以看到 z 值?
这里有一个例子contourf
:
import matplotlib.pyplot as plt
import numpy as hp
plt.contourf(np.arange(16).reshape(-1,4))
显示光标位置的文本由 生成ax.format_coord
。您可以覆盖该方法以同时显示 z 值。例如,
import matplotlib.pyplot as plt
import numpy as np
import scipy.interpolate as si
data = np.arange(16).reshape(-1, 4)
X, Y = np.mgrid[:data.shape[0], :data.shape[1]]
cs = plt.contourf(X, Y, data)
func = si.interp2d(X, Y, data)
def fmt(x, y):
z = np.take(func(x, y), 0)
return 'x={x:.5f} y={y:.5f} z={z:.5f}'.format(x=x, y=y, z=z)
plt.gca().format_coord = fmt
plt.show()
文档示例显示了如何将 z 值标签插入绘图
脚本: http: //matplotlib.sourceforge.net/mpl_examples/pylab_examples/contour_demo.py
基本上,它是
plt.figure()
CS = plt.contour(X, Y, Z)
plt.clabel(CS, inline=1, fontsize=10)
plt.title('Simplest default with labels')
只是wilywampa
答案的变体。如果您已经有一个预先计算的插值轮廓值网格,因为您的数据是稀疏的,或者如果您有一个巨大的数据矩阵,那么这可能适合您。
import matplotlib.pyplot as plt
import numpy as np
resolution = 100
Z = np.arange(resolution**2).reshape(-1, resolution)
X, Y = np.mgrid[:Z.shape[0], :Z.shape[1]]
cs = plt.contourf(X, Y, Z)
Xflat, Yflat, Zflat = X.flatten(), Y.flatten(), Z.flatten()
def fmt(x, y):
# get closest point with known data
dist = np.linalg.norm(np.vstack([Xflat - x, Yflat - y]), axis=0)
idx = np.argmin(dist)
z = Zflat[idx]
return 'x={x:.5f} y={y:.5f} z={z:.5f}'.format(x=x, y=y, z=z)
plt.colorbar()
plt.gca().format_coord = fmt
plt.show()
前任: