Anında grafikler oluşturmak için hızlı ve kirli bir komut dosyası yazıyorum. Başlangıç noktası olarak aşağıdaki kodu (Matplotlib belgelerinden) kullanıyorum:
from pylab import figure, axes, pie, title, show
# Make a square figure and axes
figure(1, figsize=(6, 6))
ax = axes([0.1, 0.1, 0.8, 0.8])
labels = 'Frogs', 'Hogs', 'Dogs', 'Logs'
fracs = [15, 30, 45, 10]
explode = (0, 0.05, 0, 0)
pie(fracs, explode=explode, labels=labels, autopct='%1.1f%%', shadow=True)
title('Raining Hogs and Dogs', bbox={'facecolor': '0.8', 'pad': 5})
show() # Actually, don't show, just save to foo.png
Çizimi bir GUI üzerinde görüntülemek istemiyorum, bunun yerine çizimi bir dosyaya (örneğin foo.png) kaydetmek istiyorum, böylece örneğin toplu komut dosyalarında kullanılabilir. Bunu nasıl yapabilirim?
Soru yanıtlanmış olsa da, matplotlib.pyplot.savefig kullanırken bazı yararlı ipuçları eklemek istiyorum. Dosya biçimi uzantı ile belirtilebilir:
from matplotlib import pyplot as plt
plt.savefig('foo.png')
plt.savefig('foo.pdf')
Her ikisi de yararlı olabilecek sırasıyla rasterleştirilmiş veya vektörleştirilmiş bir çıktı verecektir. Buna ek olarak, pylab
ın görüntünün etrafında cömert, genellikle istenmeyen bir boşluk bıraktığını göreceksiniz. Şununla kaldırın:
savefig('foo.png', bbox_inches='tight')
Çözüm şu:
pylab.savefig('foo.png')
Eğer "akım" figürü kavramını sevmiyorsanız, yapın:
import matplotlib.image as mpimg
img = mpimg.imread("src.png")
mpimg.imsave("out.png", img)