Matplotlib:在指定的x轴范围内绘制两个图形

时间:2013-01-18 03:58:59

标签: python matplotlib

基本上我处于一种情况,我想根据绘制的第一张图来锁定图表的起点。

e.g。如果我做这样的事情。

import matplotlib.pyplot as plt
plt.plot([7,8,9,10], [1,4,9,16], 'yo')
plt.plot([1,9,11,12], [1,4,9,16], 'ro')
plt.show()

我想要一种方法来限制x轴从7开始,因此第二个图中的(1,1)将被删除。

有办法做到这一点吗?我可以自己跟踪它,但只是好奇是否内置了一些东西来处理它。

感谢。

3 个答案:

答案 0 :(得分:5)

Matplotlib为您提供两种方式:

import matplotlib.pyplot as plt
plt.plot([7,8,9,10], [1,4,9,16], 'yo')
plt.plot([1,9,11,12], [1,4,9,16], 'ro')
plt.xlim(xmin=7)
plt.show()

或更面向对象的方式

import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot([7,8,9,10], [1,4,9,16], 'yo')
ax.plot([1,9,11,12], [1,4,9,16], 'ro')
ax.set_xlim(xmin=7)
plt.show()

如果您不使用IPython,我强烈推荐它,因为您可以创建轴对象,然后键入ax.<Tab>并查看所有选项。在这种情况下,自动填充功能可能是一件很棒的事情。

答案 1 :(得分:3)

简而言之:plt.xlim()。

长期:

import matplotlib.pyplot as plt
x1, y1 = ([7,8,9,10], [1,4,9,16])
plt.plot(x1, y1, 'yo')
plt.xlim(min(x1), max(x1))
plt.plot([1,9,11,12], [1,4,9,16], 'ro')
plt.show()

答案 2 :(得分:3)

您可以在第一个图(doc)之后关闭自动缩放:

ax = plt.gca()
ax.autoscale(enable=False)

将锁定所有刻度(您也可以单独执行x和y)。