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, color='k')
# LEFT VERTICAL
plt.axvline(x=0.1, ymin=0.58, ymax = 0.79, linewidth=2, color='k')
plt.show()

enter image description here

320332 次浏览

您正在调用的 pyplot 函数,axhline()axvline()绘制横跨轴范围的一部分的直线,而与坐标无关。参数 xminymin使用值0.0作为轴的最小值,1.0作为轴的最大值。

相反,使用 plt.plot((x1, x2), (y1, y2), 'k-')绘制一条从点(x1,y1)到点(x2,y2)的直线,颜色为 k。参见 pyplot.plot

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

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

Rectangle医生

对于 Matplotlib 的新用户来说,这可能是一个常见的问题: 画出纵向和横向的线条。为了理解这个问题,您应该知道 Matplotlib 有不同的坐标系统

采用 轴线Axvline两种方法在 坐标轴坐标轴坐标上画线。在这个坐标系中,左下角点的坐标是(0,0) ,而右上角点的坐标是(1,1) ,与你的绘图的数据范围无关。参数 xminxmax都在[0,1]范围内。

另一方面,方法 HlinesVlines是用来绘制线在 数据坐标xminxmax的范围是在 x 轴的数据极限范围内。

举个具体的例子,

import matplotlib.pyplot as plt
import numpy as np


x = np.linspace(0, 5, 100)
y = np.sin(x)


fig, ax = plt.subplots()


ax.plot(x, y)
ax.axhline(y=0.5, xmin=0.0, xmax=1.0, color='r')
ax.hlines(y=0.6, xmin=0.0, xmax=1.0, color='b')


plt.show()

它将产生以下情节: enter image description here

xminxmax的值对于 axhlinehlines方法是相同的。但生产线的长度是不同的。