 <p>I did this using the following snippet.</p> <pre><code>#!/usr/bin/env python import numpy as np import matplotlib.cm as cm import matplotlib.mlab as mlab import matplotlib.pyplot as plt from pylab import * delta = 0.025 x = y = np.arange(-3.0, 3.0, delta) X, Y = np.meshgrid(x, y) Z1 = mlab.bivariate_normal(X, Y, 1.0, 1.0, 0.0, 0.0) Z2 = mlab.bivariate_normal(X, Y, 1.5, 0.5, 1, 1) Z = Z2-Z1 # difference of Gaussians ax = Axes(plt.gcf(),[0,0,1,1],yticks=[],xticks=[],frame_on=False) plt.gcf().delaxes(plt.gca()) plt.gcf().add_axes(ax) im = plt.imshow(Z, cmap=cm.gray) plt.show() </code></pre> <p>Note the grey border on the sides is related to the aspect rario of the Axes which is altered by setting <code>aspect='equal'</code>, or <code>aspect='auto'</code> or your ratio.</p> <p>Also as mentioned by Zhenya in the comments <a href="http://stackoverflow.com/questions/4042192/reduce-left-and-right-margins-in-matplotlib-plot">Similar StackOverflow Question</a> mentions the parameters to <code>savefig</code> of <code>bbox_inches='tight'</code> and <code>pad_inches=-1</code> or p<code>ad_inches=0</code></p>