2014-02-20 3 views
1

В следующем коде представлены 2D-массивы, значение которых может быть изменено в интерактивном режиме. Единственное, чего не хватает, это то, что я хотел бы, чтобы он изменил colobar. Так или иначе, когда я изменяю изображение, цветная панель не корректирует себя.Как обновить цветную панель в интерактивном графике

from pyplot import * 
from numpy import * 
from matplotlib.widgets import Slider, Button, RadioButtons 

ax = subplot(111) 
subplots_adjust(left=0.25, bottom=0.25) 

my_img=random((100,100))*10. 

l = imshow(my_img,origin='lower');cbar=colorbar() 

ax1= axes([0.25, 0.1, 0.65, 0.03], axisbg='w') 

par1 = Slider(ax1, 'normalization', 1, 100., valinit=1.5) 

def update(val): 
    new_normalization = par1.val 
    new_img=random((100,100))*new_normalization 

    l.set_array(new_img) 

    # this doesn't change the new colobar maximum 
    cbar.vmax=new_img.max() 
    cbar.vmin=0 
    draw() 

par1.on_changed(update) 

resetax = axes([0.8, 0.025, 0.1, 0.04]) 
button = Button(resetax, 'Reset', color='w', hovercolor='0.975') 
def reset(event): 
    par1.reset() 

button.on_clicked(reset) 
show() 

ответ

1

Я сам нашел решение.

Все это занимает всего

 l.set_clim([new_img.min(), new_img.max()]) 
Смежные вопросы