如何在matplotlib

时间:2019-03-25 16:49:21

标签: python matplotlib

我有以下here引用的代码,可以使用ax.contourf()

生成一堆图像
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.gca(projection='3d')

x = np.linspace(0, 1, 100)
X, Y = np.meshgrid(x, x)
Z = np.sin(X)*np.sin(Y)

levels = np.linspace(-1, 1, 40)

ax.contourf(X, Y, .1*np.sin(3*X)*np.sin(5*Y), zdir='z', levels=.1*levels)
ax.contourf(X, Y, 3+.1*np.sin(5*X)*np.sin(8*Y), zdir='z', levels=3+.1*levels)
ax.contourf(X, Y, 7+.1*np.sin(7*X)*np.sin(3*Y), zdir='z', levels=7+.1*levels)

ax.legend()
ax.set_xlim3d(0, 1)
ax.set_ylim3d(0, 1)
ax.set_zlim3d(0, 10)

输出是这样的,请注意边缘为锯齿形:

enter image description here

现在,我想使用圆形补丁或矩形补丁剪切堆栈,以获取平滑的边缘,例如已实现的here

但是看来set_clip_pathAxes的实例方法。

另一种绘制图像堆栈的方法是使用plot_surface并将数据应用于脸色,可以找到详细信息here。这样,我们可以避免ax.contourf()方法中所示的边缘的锯齿形影响。更好的边缘图看起来像

enter image description here

但是,它有缺点:

  • 与轮廓线f相比,速度较慢
  • 并且如果我们仅需要循环数据补丁,则不适用。
  

在3d情况下,是否有任何巧妙的方法可以实现剪辑版本?

0 个答案:

没有答案