У меня есть 2D массив img_pseudo_df
, что я сюжет по imshow()
и представляет некоторые данные псевдо флуоресценции, где в центре каждого цветения месте представляет собой ячейку:Matplotlib: разброс() на imshow() показывают точки на Shrunk координаты
img = plt.imshow(img_pseudo_df.T, cmap=plt.cm.gray, interpolation='none', extent=(0.0,N_pixels,0.0,N_pixels))
В вышеуказанных случаях я фиксирую априорный размер фигуры до N_pixels
, и я переношу изображение для своего удобства. Полученная цифра выглядит как, например:
На верхней части этого рисунка, я хочу, чтобы наложить scatter()
участок, где каждая точка представляет собой ячейку. Я передаю разбрасывать x
и y
координаты в пиксельных значений (каждый в пределах интервала [0,N_pixels]
):
plt.scatter(x,y)
Однако по какой-то причине эти координаты кажутся сократилась по координатам флуоресценции на рисунке:
Я не могу понять, что я делаю неправильно, и как получить соответствие координат imshow с данными моих точек. Это, по-видимому, общая проблема с imshow()
, но я не мог найти ответ, который работает для меня до сих пор.
В частности, x
и y
содержат значения индекса для столбцов строк массива img_pseudo_df
. Этот массив создается первоначально
img_pseudo_df = zeros((N_pixels,N_pixels))
Затем пикселей (x,y)
в img_pseudo_df
присваиваются определенное signal
значения и свернуты гауссовый фильтр 2D (для создания псевдо флуоресценции appeareance):
for cell,pixel in enumerate(zip(x,y)):
img_pseudo_df[pixel] = signals[cell] # signals contains N cells values and there are N cells (x,y) pairs
img_pseudo_df = convolve2d(space, gaussian_kern(20), mode='valid')
В качестве фильтра центрируется вокруг нуля и строится по:
def gauss_kern(size, sizey=None):
""" Returns a normalized 2D gauss kernel array for convolutions """
size = int(size)
if not sizey:
sizey = size
else:
sizey = int(sizey)
x, y = mgrid[-size:size+1, -sizey:sizey+1]
g = exp(-(x**2/float(size)+y**2/float(sizey)))
return g/g.sum()
Я ожидаю, что флуоресценция poi nt быть центром в ячейках (x,y)
.
Заранее за вашу помощь.
Приветствия,
M
Как создать 'x' и' y'? Может быть, ценности ошибочны? – hitzg
@hitzg Спасибо, что указали это: я отредактировал свое сообщение соответственно. – maurizio