我有一个图表,由.txt文件中的数据组成。目前,Matplotlib会将其绘制到我文件的最后一点。我需要它继续那么远。我似乎记得在某个地方说我可以让一条线继续无限。 (在使用微积分和限制时,我不是指无穷大,我只是指屏幕的一条直线,直到图的边缘。)
现在,我知道如果我有一个曲线图,这将是不准确的,因为该线将永远以最后一个数据点的角度继续。但是,由于我有一个直线图,这将是理想的。
有谁知道这是否可行,若然,怎么样?我已经做过研究,不记得我在哪里看到文档条目说我可以做到这一点,所以如果有人能够阐明这一点,我真的很感激。
答案 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()