有两个问题也许有人可以帮助我。 我想用contoruf绘制立体投影,并想在Matplotlib中为Z方向的较高部分着色。 为此,我有两个问题。
我在使用meshgrid和griddata之前使用contourf进行绘图,其他边缘不平滑我怎样才能平滑它们?
我
我想在Z中有一个对数刻度我怎么能这样做,我试图使用ticker.LogLocator,但后来我只得到一些颜色的部分。
这是我的代码:
# craation of a 2D grid
xi = np.linspace(min(X), max(X))
yi = np.linspace(min(Y), max(Y))
X1, Y1 = np.meshgrid(xi, yi)
##### interpolation
Z1 = griddata(X, Y, Z,xi,yi)
plt.contourf(X1,Y1,Z1,50,cmap=plt.cm.rainbow,vmax=abs(Z1).max(),
locator=ticker.LogLocator)
plt.colorbar()
plt.xlim(-1,1)
plt.ylim(-1,1)
plt.show()
plt.set_zscale('log')
plt.set_xlabel('X')
plt.set_ylabel('Y')
plt.show()
答案 0 :(得分:0)
回答第一个问题:
您可以平滑轮廓值:
zmin = Z1.min()
zmax=Z1.max()
levels=linspace(zmin, zmax, 400)
然后将levels
作为参数传递给plt.contourf()
。
要平滑外边缘,您必须在二维网格中使用更多值,这可以通过使用linspace()
时所需的值数来实现:
nx = 1000
ny = 1000
xi = np.linspace(min(X), max(X), nx)
yi = np.linspace(min(Y), max(Y), ny)