Как обрезать стопку данных изображения в matplotlib - PullRequest
0 голосов
/ 25 марта 2019

У меня следующий код по ссылке здесь для генерации стопки изображений с использованием 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

Теперь я хочу вырезать стеков, используя круглое или прямоугольное пятно, чтобы получить сглаженные края, как что-то реализованное здесь

Но, похоже, set_clip_path - это метод экземпляра для Axes.

Еще один способ построения стопки изображений - это использование plot_surface и применение данных к цвету лица, подробности можно найти здесь . Таким образом, мы можем избежать эффекта зигзага на краях, как показано в методе ax.contourf(). Лучший сюжет края выглядит как

enter image description here

Однако он имеет недостатки:

  • медленнее по сравнению с контуром
  • и это не применимо, если нам нужен только круговой патч данных.

Есть ли какой-нибудь умный способ добиться версии клипа в 3d корпусе?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...