Я определил функцию построения гистограммы. Внутри этой функции я делаю некоторый анализ данных, которые я получаю от 2 кликов на рисунке.Получение значения изнутри def()
Мой код ниже:
def hist_maker():
heights,edges = np.histogram(data, 1000)
edges = edges[:-1]+(edges[1]-edges[0])
fig, ax = plt.subplots()
ax.plot(edges,heights) # plot histogram
plt.yscale('log', nonposy='clip')
ax.set(title=titl, xlabel='ADC Value(DN/40)', ylabel='Frequency')
point1, point2 = fig.ginput(2) # get input from 2 clicks on figure
ax.axvspan(point1[0], point2[0], color='red', alpha=0.5) # paint selected area in red
mask = (edges>point1[0]) & (edges<point2[0])
# calculate which values are selected and display mean
fig.text(0.2,0.84,'Mean: ' + str((sum(edges[mask]*heights[mask])/sum(heights[mask]))))
mean = sum(edges[mask]*heights[mask])/sum(heights[mask])
mean_noise = edges[heights.argmax() # Find the x value corresponding to the max y value
fig.text(0.2,0.8,'Std: ' + str(g))
Что на самом деле происходит внутри функции все работает отлично. Но, например, из кода, если я захочу использовать caculated mean_noise
в какой-то момент позже в коде, я получаю сообщение об ошибке, в котором говорится, что средний шум не определен (что правильно, потому что он не определен вне функции)
Итак, мой вопрос заключается в том, как извлечь значение mean_noise, которое я вычисляю автоматически, когда я определил hist_maker, чтобы впоследствии использовать его?
Один из способов - избавиться от функции hist_maker и просто повторить код внутри каждой гистограммы, которую я планирую, и я уверен, что это сработает. Но поскольку я рисую несколько гистограмм, я думал, что было бы легче определить функцию, а затем просто называть это для каждой гистограммы.
return mean_noise или иметь глобальную переменную (объявленную за пределами области действия) – depperm