Python 在matplotlib中平滑外边缘

Python 在matplotlib中平滑外边缘,python,matplotlib,smooth,contourf,Python,Matplotlib,Smooth,Contourf,我有两个问题也许有人能帮我。 我想用contoruf绘制一个赤平投影图,并在Matplotlib中为Z方向的较高部分着色。 为此,我有两个问题 在使用meshgrid和griddata之前,我正在使用contourf绘图,其他边不平滑如何平滑它们? 我 我想在Z中有一个对数刻度,我怎么能做到呢,我试着用ticker.LogLocator,但后来我得到的只是一些部分的颜色 这是我的代码: # craation of a 2D grid xi = np.linspace(min(X), max(X)

我有两个问题也许有人能帮我。 我想用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()

回答第一个问题:

可以通过以下操作平滑轮廓值:

zmin = Z1.min()
zmax=Z1.max()
levels=linspace(zmin, zmax, 400)
然后将级别作为参数传递给plt.f

要平滑外边缘,必须在二维栅格中使用更多的值,这可以通过使用linspace时所需的值数来实现:


感谢它有助于平滑图形,但我也想平滑图形的边界边,我想在这里?
nx = 1000
ny = 1000
xi = np.linspace(min(X), max(X), nx)
yi = np.linspace(min(Y), max(Y), ny)