Tout d'abord, si vous utilisez savefig
, sachez que cela remplacera la couleur d'arrière-plan de la figure lors de l'enregistrement, sauf indication contraire (par exemple fig.savefig('blah.png', transparent=True)
).
Cependant, pour supprimer l'arrière-plan des axes et de la figure à l'écran, vous devez définir les deux ax.patch
et fig.patch
être invisible.
Par exemple
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)
(Bien sûr, vous ne pouvez pas faire la différence sur le fond blanc de SO, mais tout est transparent ...)
Si vous ne voulez rien afficher d'autre que la ligne, désactivez également l'axe en utilisant 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)
Dans ce cas, cependant, vous voudrez peut-être que les axes reprennent la figure complète. Si vous spécifiez manuellement l'emplacement des axes, vous pouvez lui dire de prendre la figure complète (vous pouvez également utiliser subplots_adjust
, mais c'est plus simple pour le cas d'un seul axe).
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
? (Si tel est le cas, il remplace ce que vous avez défini lors de l'enregistrement de la figure.) Le réglage manuelfig.patch.set_visible(False)
fonctionne-t-il?