Untuk menghapus bingkai dalam gambar, saya menulis
frameon=False
bekerja dengan sempurna pyplot.figure
, tetapi dengan matplotlib.Figure
itu hanya menghilangkan latar belakang abu-abu, bingkai tetap. Juga, saya hanya ingin garis ditampilkan, dan semua gambar lainnya transparan.
dengan pyplot saya dapat melakukan apa yang saya inginkan, saya ingin melakukannya dengan matplotlib untuk beberapa alasan lama saya lebih suka tidak menyebutkan untuk memperpanjang pertanyaan saya.
python
matplotlib
Emmet B
sumber
sumber
savefig
? (Jika demikian, itu menimpa apa pun yang Anda atur saat menyimpan angka.) Apakah pengaturan secara manualfig.patch.set_visible(False)
berfungsi?Jawaban:
Pertama, jika Anda menggunakan
savefig
, ketahuilah bahwa itu akan menimpa warna latar belakang gambar saat menyimpan kecuali Anda menentukan sebaliknya (misalnyafig.savefig('blah.png', transparent=True)
).Namun, untuk menghapus latar belakang sumbu dan gambar di layar, Anda harus mengatur keduanya
ax.patch
danfig.patch
tidak terlihat.Misalnya
(Tentu saja, Anda tidak bisa membedakan antara latar belakang putih SO, tetapi semuanya transparan ...)
Jika Anda tidak ingin menampilkan selain garis, matikan juga poros menggunakan
ax.axis('off')
:Namun, dalam hal itu, Anda mungkin ingin membuat sumbu mengambil angka penuh. Jika Anda secara manual menentukan lokasi sumbu, Anda dapat memerintahkannya untuk mengambil gambar lengkap (secara bergantian, Anda dapat menggunakan
subplots_adjust
, tetapi ini lebih sederhana untuk kasus sumbu tunggal).sumber
ax.axis('off')
(Anda masih harus mematikan bingkai gambar juga).ax.set_yticklabels(('G1', 'G2', 'G3'))
print_png()
melemparkanTypeError: write() argument must be str, not bytes
pengecualian bagi saya di python 3. Membuka file sebagai write biner ('wb'
) diperlukan untuk itu untuk bekerja.ax.axis('off')
, akan seperti yang ditunjukkan Joe Kington, hapus semuanya kecuali garis yang diplot.Bagi mereka yang ingin hanya menghapus bingkai (perbatasan), dan menyimpan label, tickers dll, orang dapat melakukannya dengan mengakses
spines
objek pada sumbu. Diberikan objek sumbuax
, berikut ini harus menghapus batas di keempat sisi:Dan, dalam hal menghapus
x
dany
kutu dari plot:sumber
ax.yaxis.set_ticks_position('left') ax.xaxis.set_ticks_position('bottom')
Cara termudah untuk menyingkirkan bingkai jelek di versi matplotlib yang lebih baru:
Jika Anda benar-benar harus selalu menggunakan pendekatan berorientasi objek, maka lakukan:
ax.set_frame_on(False)
.sumber
ax.set_frame_on(False)
, yang melakukan hal yang sama. Mungkin termasuk dalam jawaban di atas.Membangun jawaban yang sangat bagus dari @ peeol , Anda juga dapat menghapus frame dengan melakukan
Untuk memberikan contoh (seluruh contoh kode dapat ditemukan di akhir posting ini), katakanlah Anda memiliki plot bar seperti ini,
Anda dapat menghapus bingkai dengan perintah di atas dan kemudian menyimpan
x-
danytick
label (plot tidak ditampilkan) atau menghapusnya dengan baikDalam hal ini, seseorang kemudian dapat memberi label bar secara langsung; plot terakhir dapat terlihat seperti ini (kode dapat ditemukan di bawah):
Berikut ini seluruh kode yang diperlukan untuk membuat plot:
sumber
Seperti yang saya jawab di sini , Anda dapat menghapus duri dari semua plot Anda melalui pengaturan gaya (style sheet atau rcParams):
sumber
Masalah
Saya memiliki masalah yang sama menggunakan kapak. Parameter kelas hanyalah
frameon
kwargframe_on
. axes_api>>> plt.gca().set(frameon=False)
AttributeError: Unknown property frameon
Larutan
frame_on
Contoh
sumber
Saya biasa melakukannya:
sumber
Untuk menghapus bingkai grafik
Saya harap ini bisa berhasil
sumber
sumber
harus melakukan trik.
sumber
plt.savefig memiliki opsi-opsi itu sendiri, hanya perlu mematikan sumbu sebelumnya
sumber