20

这是绘制大值的示例。

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),并且还可能显示轴中断?

4

1 回答 1

26

一点简单的代数将有助于解决这些限制:

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)来获取您指定的值并确保整数。

就轴断裂而言,我建议看一下这个例子

于 2012-06-27T00:29:51.327 回答