Как использовать итеративное значение поверх гистограммы в Jupyter Notebook - PullRequest
0 голосов
/ 20 апреля 2020

Я пытаюсь добавить итерацию поверх гистограммы в блокноте jupyter, чтобы увидеть ее значение по сравнению со значениями гистограммы. Я попробовал следующий код:

f histogram_thresholding(matrix, bins, threshold_value):
    plt.hist(matrix.flatten(), bins)
    plt.axvline(threshold_value, linewidth = 0.2, color = "green", 
                label = "Threshold value = "+"{:.2f}".format(threshold_value))
    plt.legend()
    plt.xlabel("Intensity")
    plt.ylabel("Number of pixels")
    plt.show()
interact(histogram_thresholding, matrix = fixed(model_3D_matrix), 
         threshold_value = (model_3D_matrix.min(),model_3D_matrix.max()))

, но затем гистограмма вычисляется и строится каждый раз, когда я меняю итеративное значение, что занимает много времени.

гистограмма с итерацией значение

Затем я попытался сначала построить гистограмму, а затем запустить функцию с итеративным значением, представляя, что matplotlib использует удержание команды и строит вертикальную линию поверх гистограммы. Вместо этого гистограмма и вертикальная линия были построены отдельно.

def histogram_thresholding(threshold_value):
    plt.axvline(threshold_value, linewidth = 0.2, color = "green", 
                label = "Threshold value = "+"{:.2f}".format(threshold_value))
    plt.legend()
    plt.xlabel("Intensity")
    plt.ylabel("Number of pixels")
    plt.show()

plt.hist(model_3D_matrix.flatten(), bins = 100)
interact(histogram_thresholding, threshold_value = (model_3D_matrix.min(),model_3D_matrix.max()))

гистограмма и вертикальное значение были нанесены отдельно

я хотел отобразить информацию точно так же, как первый отпечаток, но не нужно каждый раз строить гистограмму, а только вертикальную линию поверх нее, чтобы сэкономить время. Может кто-нибудь помочь мне, как это сделать?

...