如何用matplotlib画线?

新手上路,请多包涵

我找不到用 matplotlib Python 库绘制任意线的方法。它允许绘制水平线和垂直线(使用 matplotlib.pyplot.axhlinematplotlib.pyplot.axvline ,例如),但我看不到如何通过两个给定点画一条线 (x1, y1)(x2, y2) 。有办法吗?有简单的方法吗?

原文由 Alexey 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 437
2 个回答

这将绘制一条穿过点 (-1, 1) 和 (12, 4) 的线,以及另一条穿过点 (1, 3) 和 (10, 2) 的线

x1 是第一行点的 x 坐标,y1 是第一行的 y 坐标——x1 和 y1 中的元素必须按顺序排列。

另一条线的 x2 和 y2 相同。

 import matplotlib.pyplot as plt
x1, y1 = [-1, 12], [1, 4]
x2, y2 = [1, 10], [3, 2]
plt.plot(x1, y1, x2, y2, marker = 'o')
plt.show()

在此处输入图像描述

我建议您花一些时间阅读/学习在非常丰富的 matplotlib 网站上找到的基本教程,以熟悉该库。

如果我不想要线段怎么办?


[编辑]:

如 @thomaskeefe 所示,从 matplotlib 3.3 开始,为了方便起见,现在将其内置: plt.axline((x1, y1), (x2, y2)) ,使以下内容过时。


没有直接的方法可以让线延伸到无穷大…… matplotlib 将调整绘图的大小/重新缩放,以便最远的点位于边界上,而另一个点位于内部,有效绘制线段;或者您必须选择要设置为可见的表面边界之外的点,并为 x 和 y 轴设置限制。

如下:

 import matplotlib.pyplot as plt
x1, y1 = [-1, 12], [1, 10]
x2, y2 = [-1, 10], [3, -1]
plt.xlim(0, 8), plt.ylim(-2, 8)
plt.plot(x1, y1, x2, y2, marker = 'o')
plt.show()

在此处输入图像描述

原文由 Reblochon Masque 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题