Plot Python: Bagaimana saya bisa membuat matplotlib.pyplot berhenti memaksakan gaya penanda saya?

Saya mencoba memplot banyak titik data (ribuan) dengan Python menggunakan matplotlib jadi saya perlu setiap penanda menjadi sangat kecil dan tepat. Bagaimana cara mendapatkan penanda sekecil mungkin dan sesederhana mungkin? Saya menggunakan perintah ini untuk memplot data saya:

 matplotlib.pyplot( x , y ,'.',markersize=0.1,linewidth=None,markerfacecolor='black')

Lalu saya bisa melihatnya dengan pl.show() lalu menyimpannya. Atau langsung gunakan plt.savefig('filename.ps') pada kode untuk menyimpannya. Masalahnya adalah ini: ketika saya menggunakan pl.show() untuk melihat file di GUI tampak bagus dengan tanda hitam kecil kecil, namun ketika saya menyimpan dari show() GUI ke file atau menggunakan langsung savefig dan kemudian melihat ps yang saya buat terlihat berbeda ! Setiap penanda memiliki lingkaran cahaya biru kecil di sekitarnya (seolah-olah dimulai di setiap titik untuk menghubungkannya dengan garis biru default, tetapi tidak) dan semua gayanya salah. Mengapa gayanya berubah saat disimpan? Bagaimana cara menghentikan python memaksa gaya penanda? Dan ya, saya telah melihat beberapa paket alternatif seperti CairoPlot, tapi saya ingin tetap menggunakan matplotlib untuk saat ini.

Pembaruan: Ternyata menyimpan ke PNG terlebih dahulu membuat warna menjadi oke, tetapi memaksa konversi gambar ketika saya ingin menyimpannya lagi sebagai .ps nanti (untuk dimasukkan dalam PDF ) dan kemudian saya kehilangan kualitas. Bagaimana cara mempertahankan sifat vektor file dan mendapatkan format yang tepat?


person Alex    schedule 13.02.2009    source sumber
comment
Nah, untuk ploting poin, CairoPlot versi trunk memiliki kelas ScatterPlot. Dengan menggunakan itu Anda dapat menentukan radius penanda, jadi Anda bisa mengaturnya ke 1 karena ini akan menjadi pilihan terkecil. Apakah ada alasan khusus bagi Anda untuk tidak menggunakan CairoPlot?   -  person Rodrigo    schedule 13.02.2009


Jawaban (3)


Untuk keluaran vektor yang terlihat bagus, jangan gunakan gaya penanda '.'. Gunakan mis. 'o' (lingkaran) atau 's' (persegi) (lihat help(plot) untuk opsinya) dan atur argumen kata kunci markersize menjadi sesuatu yang kecil, misalnya:

plot(x, y, 'ko', markersize=2)
savefig('foo.ps')

'.' (titik) yang menghasilkan hasil yang kurang bagus dapat ditafsirkan sebagai bug di matplotlib, tapi lalu, apa arti "titik" dalam format grafik vektor?

person Jouni K. Seppänen    schedule 12.03.2009

Sudahkah Anda mencoba bentuk titik ','? Ini menciptakan "piksel" (titik-titik kecil, bukan bentuk).

Anda juga bisa bermain dengan opsi markersize, dengan bentuk ini?

person Eric O Lebigot    schedule 08.08.2009

Jika belum, Anda harus mencoba menyimpan di mesin rasterisasi -- simpan ke file PNG dan lihat apakah tindakan tersebut dapat memperbaikinya. Jika Anda memerlukan plot vektor, coba simpan ke PDF dan konversi dengan utilitas eksternal. Saya juga pernah mengalami masalah sebelumnya dengan mesin PS yang diselesaikan dengan menyimpan menggunakan mesin Agg atau PDF dan mengonversi secara eksternal.

person Matt    schedule 13.02.2009
comment
Ya, solusi ini berhasil. BTW kami melakukan pekerjaan yang sama. - person Alex; 14.02.2009