Проблема заключается в использовании plt.show()
, который заменит фигуру.Вместо этого вы, вероятно, хотите обновить существующую фигуру.
%matplotlib notebook
from ipywidgets import interact
import matplotlib.pyplot as plt
import numpy as np
vol = np.random.uniform(size=(16, 16, 16))
fig, ax = plt.subplots()
im = ax.imshow(vol[0])
@interact(z=(0, 15))
def show(z):
im.set_array(vol[z])
im.set_clim(vol[z].min(), vol[z].max())
fig.canvas.draw_idle()
Обратите внимание, что приведенное выше обеспечивает ту же функциональность, что и код в вопросе, т.е. каждый массив нормализуется индивидуально.Однако вы можете решить установить цветовую нормализацию только один раз, чтобы все массивы имели одинаковые ограничения цвета.
%matplotlib notebook
from ipywidgets import interact
import matplotlib.pyplot as plt
import numpy as np
vol = np.random.uniform(size=(16, 16, 16))
fig, ax = plt.subplots()
im = ax.imshow(vol[0], vmin=vol.min(), vmax=vol.max())
fig.colorbar(im)
@interact(z=(0, 15))
def show(z):
im.set_array(vol[z])
fig.canvas.draw_idle()