Python 使用matplotlib自动设置条形图的y轴限制

Python 使用matplotlib自动设置条形图的y轴限制,python,matplotlib,Python,Matplotlib,下面是一个绘制大值的示例 import matplotlib.pyplot as plt x = [1,2,3,4,5] y = [1000, 1002, 1001, 1003, 1005] plt.bar(x,y) plt.show() y轴从0开始,因此所有条看起来都相等。我知道您可以使用plt.ylim手动设置限制,但matplotlib是否有办法自动(且智能地)将限制设置为合理的值(如998-1008),并可能显示轴中断?一点简单的代数将有助于修复限制: import matplot

下面是一个绘制大值的示例

import matplotlib.pyplot as plt
x = [1,2,3,4,5]
y = [1000, 1002, 1001, 1003, 1005]
plt.bar(x,y) 
plt.show()

y轴从0开始,因此所有条看起来都相等。我知道您可以使用plt.ylim手动设置限制,但matplotlib是否有办法自动(且智能地)将限制设置为合理的值(如998-1008),并可能显示轴中断?

一点简单的代数将有助于修复限制:

import matplotlib.pyplot as plt
import math
x = [1,2,3,4,5]
y = [1000, 1002, 1001, 1003, 1005]
low = min(y)
high = max(y)
plt.ylim([math.ceil(low-0.5*(high-low)), math.ceil(high+0.5*(high-low))])
plt.bar(x,y) 
plt.show()
通过这种方式,您可以找到y值之间的差异,并使用它们沿y轴设置比例。我使用math.ceil(与math.floor相反)来获得您指定的值并确保整数

至于轴断裂,我建议看看