matplotlib:imshow() 上的 scatter() 在收缩坐标上显示点
matplotlib: scatter() on imshow() show points on shrunk coordinates
我有一个二维数组 img_pseudo_df
,我用 imshow()
绘制它并表示一些伪荧光数据,其中每个荧光点的中心代表一个细胞:
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))
然后 img_pseudo_df
中的像素 (x,y)
被分配一个特定的 signal
值并通过 2D 高斯滤波器进行卷积(以创建伪荧光外观):
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()
我希望荧光点位于细胞位置的中心 (x,y)
。
在此先感谢您的帮助。
干杯,
男
好的,卷积确实有错误。正确的选项是mode='same'
,以便使结果数字匹配原来空的'img_pseudo_df'。
干杯,
米
我有一个二维数组 img_pseudo_df
,我用 imshow()
绘制它并表示一些伪荧光数据,其中每个荧光点的中心代表一个细胞:
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))
然后 img_pseudo_df
中的像素 (x,y)
被分配一个特定的 signal
值并通过 2D 高斯滤波器进行卷积(以创建伪荧光外观):
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()
我希望荧光点位于细胞位置的中心 (x,y)
。
在此先感谢您的帮助。
干杯,
男
好的,卷积确实有错误。正确的选项是mode='same'
,以便使结果数字匹配原来空的'img_pseudo_df'。
干杯,
米