matplotlib使刻度线与刻度的末端对齐

时间:2018-08-31 13:38:48

标签: python python-2.7 matplotlib

如果我在matplotlib中绘制某些内容,它会自行选择y轴上的间距(在此处放置刻度)。如何告诉轴总是以完整的刻度线结束,而不是在两个刻度线之间?

如果它选择每0.5跳动一次,则结束点为2.0,并且比没有跳动的2.0高一点。

import matplotlib.pyplot as plt

X = [1,2,3,4,5]
y = [0.1,0.3,2.4,3.9,3.2]

plt.plot(X, y)
plt.show()

3 个答案:

答案 0 :(得分:1)

现在,默认情况下,较新版本的matplotlib会在绘图中添加边距。您可以通过调用plt.margins(0, 0)来删除它们:

import matplotlib.pyplot as plt

X = [1,2,3,4,5]
y = [0.1,0.3,2.4,3.9,3.2]

plt.plot(X, y)
plt.margins(0, 0)
plt.show()

但是,这会自动生成轴倾斜。在上面的示例中,这将不包括0或4(因为数据不包括0或4)。因此,您可以自己设置轴限制:

plt.ylim(0, 4)

答案 1 :(得分:1)

如果要将限制限制在某个范围内,请仅使用plt.xlimplt.ylim。这是一个示例:

import matplotlib.pyplot as plt
import numpy as np

X = [1,2,3,4,5]
# y = [0.1,0.3,2.4,3.9,3.2]
y = [0.1,0.2,0.3,0.5,1.1]

plt.plot(X, y)
plt.xlim(min(X), max(X))
ticks = [tick for tick in ax.get_yticks()]
plt.ylim(ticks[0], ticks[-1])
# plt.ylim(np.floor(min(y)), np.ceil(max(y))) # If you want only integer upper and lower limits

编辑:这可以解决您对以下一组值X = [1,2,3,4,5]y = [0.1,0.2,0.3,0.5,1.1]的担忧

enter image description here

答案 2 :(得分:1)

默认情况下,您将获得自动缩放的轴以扩展数据范围的某个百分比。

enter image description here

因此,刻度位置和轴限制是完全不相关的。这主要是使图表内容具有良好的视觉外观。

但是,您可以决定激活舍入数字自动限制模式,

plt.rcParams['axes.autolimit_mode'] = 'round_numbers'

使限制和价格变动相互关联:

enter image description here

在这里,在绘制的数据周围会创建很多空白。您可以决定将边距设置为0来避免这种情况

plt.rcParams['axes.autolimit_mode'] = 'round_numbers'
plt.rcParams['axes.xmargin'] = 0
plt.rcParams['axes.ymargin'] = 0

enter image description here

请注意,此模式通常会扩展到下一个“ nice number”,可能会或可能不会。例如。如果您将第一个x值设置为小于1,X = [0.99,2,3,4,5],则限制将扩展为0.5

enter image description here

matplotlib页面上还有一个example available