垂直及垂直;matplotlib中的水平线

垂直及垂直;matplotlib中的水平线,matplotlib,Matplotlib,我不太明白为什么我不能在指定的限制下创建水平线和垂直线。我想用这个框来绑定数据。然而,双方似乎没有遵守我的指示。为什么会这样 # CREATING A BOUNDING BOX # BOTTOM HORIZONTAL plt.axhline(y=.4, xmin=0.25, xmax=0.402, linewidth=2, color = 'k') # RIGHT VERTICAL plt.axvline(x=0.402, ymin=0.4, ymax = 0.615, linewidth=2,

我不太明白为什么我不能在指定的限制下创建水平线和垂直线。我想用这个框来绑定数据。然而,双方似乎没有遵守我的指示。为什么会这样

# CREATING A BOUNDING BOX
# BOTTOM HORIZONTAL
plt.axhline(y=.4, xmin=0.25, xmax=0.402, linewidth=2, color = 'k')
# RIGHT VERTICAL
plt.axvline(x=0.402, ymin=0.4, ymax = 0.615, linewidth=2, color='k')
# LEFT VERTICAL
plt.axvline(x=0.1, ymin=0.58, ymax = 0.79, linewidth=2, color='k')
plt.show()

您正在调用的pyplot函数,并绘制跨越一部分轴范围的直线,而不考虑坐标。参数
xmin
ymin
使用值0.0作为轴的最小值,1.0作为轴的最大值


相反,使用
plt.plot((x1,x2),(y1,y2),“k-”)
以颜色k从点(x1,y1)到点(x2,y2)绘制一条线。请参见。

如果要添加边框,请使用矩形:

ax = plt.gca()
r = matplotlib.patches.Rectangle((.5, .5), .25, .1, fill=False)
ax.add_artist(r)

对于Matplotlib的新用户来说,绘制垂直线和水平线可能是一个常见问题。为了理解这个问题,您应该意识到

方法和用于在轴坐标处绘制线。在此坐标系中,无论绘图的数据范围如何,左下角点的坐标为(0,0),而右上角点的坐标为(1,1)。参数
xmin
xmax
都在范围[0,1]内

另一方面,方法和用于在数据坐标处绘制线。
xmin
xmax
的范围在x轴的数据限制范围内

让我们举个具体的例子

导入matplotlib.pyplot作为plt
将numpy作为np导入
x=np.linspace(0,5100)
y=np.sin(x)
图,ax=plt.子批次()
轴图(x,y)
ax.axhline(y=0.5,xmin=0.0,xmax=1.0,color='r')
hlines(y=0.6,xmin=0.0,xmax=1.0,color='b')
plt.show()
它将生成以下绘图:


xmin
xmax
的值对于
axhline
hlines
方法是相同的。但生产线的长度不同

绘制水平线和垂直线的另一种解决方案是分别使用or,因为这比常规的
plot
i.m.o更简单。