如果我在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()
答案 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.xlim
和plt.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]
的担忧
答案 2 :(得分:1)
默认情况下,您将获得自动缩放的轴以扩展数据范围的某个百分比。
因此,刻度位置和轴限制是完全不相关的。这主要是使图表内容具有良好的视觉外观。
但是,您可以决定激活舍入数字自动限制模式,
plt.rcParams['axes.autolimit_mode'] = 'round_numbers'
使限制和价格变动相互关联:
在这里,在绘制的数据周围会创建很多空白。您可以决定将边距设置为0
来避免这种情况
plt.rcParams['axes.autolimit_mode'] = 'round_numbers'
plt.rcParams['axes.xmargin'] = 0
plt.rcParams['axes.ymargin'] = 0
请注意,此模式通常会扩展到下一个“ nice number”,可能会或可能不会。例如。如果您将第一个x值设置为小于1,X = [0.99,2,3,4,5]
,则限制将扩展为0.5
matplotlib页面上还有一个example available。