Resize a figure automatically in matplotlib
Use bbox_inches='tight'
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cm as cm
X = 10*np.random.rand(5,3)
fig = plt.figure(figsize=(15,5),facecolor='w')
ax = fig.add_subplot(111)
ax.imshow(X, cmap=cm.jet)
plt.savefig("image.png",bbox_inches='tight',dpi=100)
...only works when saving images though, not showing them.
Another way of doing this is using the matplotlib tight_layout function
import matplotlib.pyplot as plt
fig,(ax) = plt.subplots(figsize=(8,4), ncols=1)
data = [0,1,2,3,4]
ax.plot(data)
fig.tight_layout()
fig.show()