Prima di tutto, se stai utilizzando savefig, tieni presente che sovrascriverà il colore di sfondo della figura durante il salvataggio, a meno che non specifichi diversamente (ad esempio fig.savefig('blah.png', transparent=True)).
Tuttavia, per rimuovere sullo schermo gli assi e lo sfondo della figura, dovrai impostare sia ax.patchefig.patch essere invisibile.
Per esempio
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot(range(10))
for item in [fig, ax]:
item.patch.set_visible(False)
with open('test.png', 'w') as outfile:
fig.canvas.print_png(outfile)

(Certo, non puoi dire la differenza sullo sfondo bianco di SO, ma tutto è trasparente ...)
Se non vuoi mostrare altro che la linea, disattiva anche l'asse usando ax.axis('off'):
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot(range(10))
fig.patch.set_visible(False)
ax.axis('off')
with open('test.png', 'w') as outfile:
fig.canvas.print_png(outfile)

In tal caso, tuttavia, potresti voler fare in modo che gli assi occupino l'intera figura. Se specifichi manualmente la posizione degli assi, puoi dire che occupa l'intera figura (in alternativa, puoi usare subplots_adjust, ma questo è più semplice per il caso di un singolo asse).
import matplotlib.pyplot as plt
fig = plt.figure(frameon=False)
ax = fig.add_axes([0, 0, 1, 1])
ax.axis('off')
ax.plot(range(10))
with open('test.png', 'w') as outfile:
fig.canvas.print_png(outfile)

savefig? (In tal caso, sovrascrive tutto ciò che viene impostato durante il salvataggio della figura.) L'impostazione manualefig.patch.set_visible(False)funziona?