Matplotlib继续进入无限

时间:2014-09-04 22:41:18

标签: python python-3.x matplotlib

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

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

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

2 个答案:

答案 0 :(得分:3)

从一个到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()

答案 1 :(得分:0)

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()

enter image description here