Automatically setting y-axis limits for bar graph using matplotlib
bar-chart, matplotlib, plot, python
Solution
A little bit of simple algebra will help fix the limits:
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()
In this way, you are able to find the difference between your y-values and use them to set the scale along the y-axis. I used math.ceil (as opposed to math.floor) in order to obtain the values you specified and ensure integers.
As far as an axis break goes, I'd suggest looking at this example.
Problem
Here's an example of graphing large values. ``` import matplotlib.pyplot as plt x = [1,2,3,4,5] y = [1000, 1002, 1001, 1003, 1005] plt.bar(x,y) plt.show() ``` The y-axis starts at 0, so the bars all look equal. I know you can use `plt.ylim` to manually set the limits, but is there a way for matplotlib to automatically (and smartly) set the limits to reasonable values (like 998-1008), and also perhaps show an axis break?