Искам да актуализирам графика 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?