Python& Matplot:如何设置自动偏移?

时间:2015-05-14 14:59:44

标签: python matplotlib

例如,当我尝试绘制点

points = [(0,0),(0,1),(1,1,),(1,0)]
for point in points:
    plt.plot(point[0], point[1], 'o')
plt.show()

将显示

enter image description here

这使得难以看清。如何使xy轴更宽,以便点移动到绘图的中心?像

这样的东西

enter image description here

也就是说,如何将点的offset值设置为plot的bounderies,这样他们就不会在角落处被置换?

3 个答案:

答案 0 :(得分:3)

正如@Rob所说,你可以使用

plt.xlim([xmin, xmax])
plt.ylim([ymin, ymax])

还值得注意的是,绘制所有x值与所有y值的效率要高得多。

points = [(0,0),(0,1),(1,1),(1,0)]
xs, ys = zip(*points)
plt.plot(xs, ys, 'o')
plt.xlim([-1, 2])
plt.ylim([-1, 2])
plt.show()

如果您想为每个点分别使用颜色,可以使用scatter

points = [(0,0),(0,1),(1,1,),(1,0)]
xs, ys = zip(*points)
colors = range(len(xs))
plt.scatter(xs, ys, c=colors)
plt.xlim([-1, 2])
plt.ylim([-1, 2])
plt.show()

编辑:此外,事实证明,由于您要绘制点数,因此您应该使用scatter代替plt,因为它会自动调整您的限制。道德:使用适当的工具来完成工作。见下文(忽略我奇怪的matplotlibrc设置):

points = [(0,0),(0,1),(1,1),(1,0)]
for point in points:
    plt.plot(point[0], point[1], 'o')
plt.show()

enter image description here

points = [(0,0),(0,1),(1,1),(1,0)]
plt.scatter(*zip(*points))
plt.show()

enter image description here

答案 1 :(得分:2)

使用xlimylim

points = [(0,0),(0,1),(1,1,),(1,0)]

for point in points:
    plt.plot(point[0], point[1], 'o')

automin, automax = plt.xlim()
plt.xlim(automin-0.5, automax+0.5)
automin, automax = plt.ylim()
plt.ylim(automin-0.5, automax+0.5)

plt.show()

如果您在绘制数据之前确实需要设置限制,可以关闭autoscaling first,然后使用xlimylim设置限制

答案 2 :(得分:0)

您需要使用ylim和xlim参数。 e.g。

plt.ylim(-1,5)
plt.xlim(-1,5)
plt.show()