【问题标题】:Matplotlib continuing line into infinityMatplotlib 继续行进无穷大
【发布时间】:2014-10-29 19:53:00
【问题描述】:

我有一个图表,由 .txt 文件中的数据制成。目前,Matplotlib 会将其绘制到我文件中的最后一点。我需要它继续更进一步。我似乎记得某处说我可以让一条线一直延伸到无穷远。 (在使用微积分和极限时,我的意思不是无穷大,我只是指屏幕上的一条线,直到图形的边缘。)

现在,我知道如果我有一个曲线图,这将是不准确的,因为这条线将永远在最后一个数据点之外的角度继续。但是,由于我有一个直线图,这将是理想的。

有谁知道这是否可行,如果可以,怎么做?我做过研究,不记得我在哪里看到文档条目说我可以做到这一点,所以如果有人能阐明这一点,我真的很感激。

【问题讨论】:

  • 与 OP 无关,但对于来自 Google 的任何想要绘制无限 verticalhorizo​​ntal 线的人,请注意,您可能想要axvlineaxhline 函数。

标签: python python-3.x matplotlib


【解决方案1】:

从 1 到 hacky,这很 hacky,但您可以询问 matplotlib 绘图的当前边界是什么

import matplotlib.pyplot as plt

plt.plot([0,10], [0,10])
plt.axis()

返回:

(0.0, 10.0, 0.0, 10.0)

这非常笨拙,但您可以计算出最后两点的线的方程,然后计算出该线与边界框相交的位置。然后绘制一条从最后一个点到 BB 的线。


新想法,稍微不那么笨重。延长最后两点的线,然后将轴设置回原来的位置。

import numpy
import matplotlib.pyplot as plt

X = [0, 1, 2]
Y = [4, 6, 4]

plt.plot(X,Y)
axes = plt.axis()
plt.plot([X[-2],X[-2]+1000*(X[-1]-X[-2])], [Y[-2],Y[-2]+1000*(Y[-1]-Y[-2])])
plt.xlim( [axes[0], axes[1]])
plt.ylim( [axes[2], axes[3]])
plt.show()

【讨论】:

  • 我可以,是的,但我更希望它自动执行某些操作。当我说“我有一个图表”时,它是三条直线的图表。此外,我可能正在更改一些控制绘制点的 X 和 Y 坐标的变量。我希望有更简单的东西,比如“plt.plot().continueIndef”或类似的东西?
  • 是的,我知道你在说什么,但 matplotlib 基本上只绘制点。
  • 伙计...我不认为我可以得到一个可以提供帮助的插件或其他模块?
  • @CoilKid matplotlib 现在支持绘制无限线。见my answer below
【解决方案2】:

v3.3 开始,添加了一个新的axline 方法来绘制穿过两点的无限长线:

import matplotlib.pyplot as plt 

fig, ax = plt.subplots()

ax.axline((.1, .1), slope=5, color='C0', label='by slope')
ax.axline((.1, .2), (.8, .7), color='C3', label='by points')

ax.legend()

【讨论】:

    猜你喜欢
    • 2022-08-12
    • 1970-01-01
    • 2015-12-25
    • 2019-03-19
    • 2013-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-19
    相关资源
    最近更新 更多