在图像上绘制线条与坐标不匹配。Python。

4
当我在图像上按顺序绘制点时,它们会按预期显示:
import numpy as np
import matplotlib.pyplot as plt
#display in a jupyter notebook
%matplotlib inline 
#make and display data 
image = np.full((50,60,), 0, dtype = 'float32')
image[10:20, 10:20] = .5
image[10,20, 30:40] = .5
plt.plot(15,15, 'y*')
plt.plot(35,15, 'b*')
plt.imshow(image)

在图像上绘制的点

但当我试图在这两个点之间绘制一条线时,它似乎使用了不同的坐标轴约定:

plt.plot([15,15], [35,15], 'y-')
plt.imshow(image) 

奇怪的绘图

如果我在线中指定点的数组,那么它可以正常工作:

line_x = np.array(range(15,35))
line_y = np.repeat(15, 20)
plt.plot(line_x, line_y, 'y-')
plt.imshow(image)

线性点指定

我猜测matplotlib在这些绘图任务中使用了不同的轴约定,但是我对为什么在绘制连续点时能够起作用,而在绘制连接两个点之间的线时却不能理解?

背景:我正在使用skimage.measure.profile_line进行线扫描http://scikit-image.org/docs/dev/api/skimage.measure.html。你可以使用该函数指定线扫描的起始点和终止点,但我想在我的图像中直观地展示我的线扫描位置。

1个回答

5

Matplotlib始终使用相同的约定,


plt.plot(x,y, ...)

当你绘制一系列点时,x表示水平坐标,y表示垂直坐标。这与绘制线条无关。

当你调用

plt.plot(15,15, 'y*')
plt.plot(35,15, 'b*')

第一个点的x坐标是15,第二个点的x坐标是35。 当您调用plt.plot([15,15], [35,15], 'y-')时,这两个点的x坐标都是15
因此,有两个点

x1 = 15; y1 = 15
x2 = 35; y2 = 15

您可以通过以下两种方式绘制它们:

plt.plot(x1,y1, 'y*')
plt.plot(x2,y2, 'b*')

或者
plt.plot([x1,x2], [y1,y2], 'y-')

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接