Функция для определения области в цветовой карте и возврата среднего значения пикселей - PullRequest
0 голосов
/ 24 марта 2019

У меня есть .txt данных с разделителями, размером около 600 x 600 ячеек. Я сделал это с помощью Matplotlib imshow, и теперь я хочу проанализировать интересующую его часть. В частности, мне интересно нарисовать определенную область вокруг определенной (x, y) точки и вернуть среднее значение (из файла) в пределах этой области. Я провел некоторые поиски, но не могу найти ничего, что позволило бы мне манипулировать этим как таковым. Самое близкое, к чему я пришел - это функция patches или patches.Circle, но все, что я могу сделать, это нарисовать круг вокруг определенной точки. Я не могу извлечь (или не могу понять, как) любую информацию оттуда. Вот мой рабочий пример:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.patches as patches

#Setup Plots
fig, ax = plt.subplots(figsize=(20, 10))
plt.rcParams.update({'font.size': 20})
#Open Data
filename = "smalltest.txt"
data = np.genfromtxt(filename, delimiter = ";", skip_header = 0)

#Colourmap
ax.imshow(data, cmap ='hot', interpolation='nearest')

#-------------------------------------
#Average values around point

#Create circle
circ = patches.Circle((345, 195), 60, alpha=0.8, fc='none', 
edgecolor = 'yellow')
ax.add_patch(circ)

fig.colorbar(ax.imshow(data, cmap ='hot', interpolation='nearest'), 
label = "Temperature (K)")
plt.show()

Вот картинка в качестве примера: График произведен. Попытка получить среднее значение в нарисованном круге

...