Редактировать: я вставил необходимый фрейм данных, чтобы проблема была воспроизводимой.
Извините за длинный фрагмент кода, это то, что у меня есть на jupyter. Вы можете прокрутить до самого низа и найти draw_plots()
, который отлично работает и рисует матрицу hist2d
s. Позже, как вы можете видеть, я запускаю modify_color('Hc', 'q', 0, 30)
, который также отлично работает и изменяет соответствующий график и обновляет его цветовую карту с новыми ограничениями, заданными (0-30)
. Проблема: последняя строка, когда я пытаюсь запустить modify_color
через интерактивные виджеты, кажется, что она работает нормально, я получаю хорошие операторы печати, которые я ставлю для отладки, но график и цветовая полоса не обновляются.
Как я могу получить график и его цветную полосу для обновления?
merged =pd.DataFrame( {'Hc': {10000: 45.0,
10001: 68.0,
10002: 70.0,
10003: 58.0,
10004: 40.0,
10005: 40.0,
10006: 51.0,
10007: 70.0,
10008: 69.0,
10009: 70.0},
'SONUCNO': {10000: 1.0,
10001: 2.0,
10002: 3.0,
10003: 4.0,
10004: 5.0,
10005: 6.0,
10006: 7.0,
10007: 8.0,
10008: 9.0,
10009: 10.0},
'SONUCNORM': {10000: 0.07692307692307693,
10001: 0.15384615384615385,
10002: 0.2307692307692308,
10003: 0.3076923076923077,
10004: 0.38461538461538464,
10005: 0.4615384615384616,
10006: 0.5384615384615384,
10007: 0.6153846153846154,
10008: 0.6923076923076923,
10009: 0.7692307692307693},
'n_HJPair': {10000: 3,
10001: 0,
10002: 2,
10003: 0,
10004: 4,
10005: 0,
10006: 0,
10007: 2,
10008: 0,
10009: 0},
'q': {10000: 0.029980572858854998,
10001: 0.13087877831873412,
10002: 0.13350577945847913,
10003: 0.1865475118001965,
10004: 0.2053608670014144,
10005: 0.24318638969823925,
10006: 0.3040225082331678,
10007: 0.459925865474959,
10008: 0.5381321066914233,
10009: 0.5919278296001834}})
from ipywidgets import interact
inp = ['Hc', 'n_HJPair']
out = ['SONUCNO', 'SONUCNORM', 'q']
global axs
global h2d
def draw_plots(in_props=inp, out_props=out):
global axs
global h2d
n_in = len(in_props)
n_out = len(out_props)
h2d={}
%matplotlib inline
plt.rcParams['figure.figsize'] = [10*n_out, 5*n_in]
fig, axs = plt.subplots(nrows=n_in,ncols=n_out)
for index,inprop in enumerate(in_props):
for index_2, outprop in enumerate(out_props):
mask = (~((merged[inprop].isna()) | (merged[outprop].isna())))
v_max = mask.sum()/40/20*5
h2d[inprop+outprop] = (axs[index, index_2].hist2d(merged[mask][inprop],merged[mask][outprop], vmin=00, vmax=v_max, bins=[45,15], cmap='gist_rainbow'))
axs[index, index_2].set_xlabel(inprop)
axs[index, index_2].set_ylabel(outprop)
fig.colorbar(h2d[inprop+outprop][3], ax=axs[index, index_2])
draw_plots()
def modify_color(ip,op,min=0,max=0):
global h2d
print("I am running with: ",ip,op,min,max)
h2d[ip+op][3].set_clim(min,max)
modify_color('Hc', 'q', 0, 30)
interact(modify_color, ip=inp,op=out,min=0.0,max=100.0)