Я хочу обновить график contourf
в функции, которая отлично работает. Однако диапазон данных меняется, и поэтому мне также нужно обновить цветовую шкалу. Вот где я не могу этого сделать.
См. Следующий минимальный рабочий пример:
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
ax = fig.add_subplot(111)
# Random data
data = np.random.rand(10, 10)
# Plot data
levels = np.linspace(0., 1., 100)
plot = ax.contourf(data, levels=levels)
clist = plot.collections[:]
# Create colorbar
cbar = plt.colorbar(plot)
cbar_ticks = np.linspace(0., 1., num=6, endpoint=True)
cbar.set_ticks(cbar_ticks)
plt.show()
def update():
# Remove old plot
for c in clist:
ax.collections.remove(c)
clist.remove(c)
# Create new data and plot
new_data = 2.*np.random.rand(10, 10)
new_levels = np.linspace(0., 2., 200)
new_plot = ax.contourf(new_data, levels=new_levels )
# Modify colorbar
cbar.set_clim(0., 2.)
new_cbar_ticks = np.linspace(0., 2., num=21, endpoint=True)
cbar.set_ticks(new_cbar_ticks)
plt.draw()
update()
Без звонка update()
получаю следующее изображение:
Это именно то, что я хочу. В функции update()
я в основном меняю диапазон данных с [0,1)
на [0,2)
, создаю новые данные и обновляю график. Я также попытался удвоить выборку в тиках шкалы палитры, чтобы тики были с интервалом 0,1 вместо 0,2. Вот что я получаю:
Данные построены правильно, палитра данных верна, отметки и цвет на палитре верны, но диапазон палитры по-прежнему от 0 до 1. Как изменить палитру, чтобы показать полный диапазон вверх до 2?