Dengan Python, dengan Matplotlib, bagaimana plot sebaran dengan lingkaran kosong bisa diplot? Tujuannya adalah untuk menggambar lingkaran kosong di sekitar beberapa disk berwarna yang telah direncanakan scatter()
, sehingga untuk menyorotnya, idealnya tanpa harus menggambar ulang lingkaran berwarna.
Saya mencoba facecolors=None
, tetapi tidak berhasil.
python
matplotlib
geometry
scatter-plot
scatter
Eric O Lebigot
sumber
sumber
Jawaban:
Dari dokumentasi untuk pencar:
Coba yang berikut ini:
Catatan: Untuk jenis plot lainnya, lihat posting ini tentang penggunaan
markeredgecolor
danmarkerfacecolor
.sumber
facecolors=None
tidak berfungsi, yang membuat saya tersandung.markerfacecolor='none'
, inilah caranya sekarang.markerfacecolor='none'
mencoba menambahkanmarkeredgewidth=1.0
%matplotlib inline
danimport matplotlib.pyplot as plt
, dan kemudian menetapkan Seaborn sebagai standar pembuatan plot olehimport seaborn as sns; sns.set()
Apakah ini akan berhasil?
atau menggunakan plot ()
sumber
plot
sebagai penggantiscatter
scatter
, Anda perlu menentukanedgecolors
sukaedgecolors='r'
. Kalau tidak, lingkarannya akan hilang. Lihat di siniBerikut cara lain: ini menambahkan lingkaran ke sumbu, plot, atau gambar saat ini atau apa pun:
(Lingkaran pada gambar bisa tergencet ke elips karena
imshow aspect="auto"
).sumber
Di matplotlib 2.0 ada parameter yang disebut
fillstyle
yang memungkinkan kontrol yang lebih baik pada cara penanda diisi. Dalam kasus saya, saya telah menggunakannya dengan errorbars tetapi berfungsi untuk spidol secara umum http://matplotlib.org/api/_as_gen/matplotlib.axes.Axes.errorbar.htmlfillstyle
menerima nilai berikut: ['penuh' | 'kiri' | 'benar' | 'bawah' | 'atas' | 'tidak ada']Ada dua hal penting yang perlu diingat saat menggunakan
fillstyle
,1) Jika mfc diatur ke jenis nilai apa pun akan diprioritaskan, maka, jika Anda menetapkan fillstyle menjadi 'tidak ada' itu tidak akan berpengaruh. Jadi hindari menggunakan mfc bersamaan dengan fillstyle
2) Anda mungkin ingin mengontrol lebar tepi marker (menggunakan
markeredgewidth
ataumew
) karena jika marker relatif kecil dan lebar tepi tebal, marker akan terlihat seperti terisi meskipun sebenarnya tidak.Berikut ini adalah contoh menggunakan errorbars:
sumber
Berdasarkan contoh Gary Kerr dan seperti yang diusulkan di sini, seseorang dapat membuat lingkaran kosong terkait dengan nilai yang ditentukan dengan kode berikut:
sumber
.scatter()
tidak. Untuk konteks, saya juga menerapkan colormap (c=z, cmap='jet'
).Jadi saya menganggap Anda ingin menyoroti beberapa poin yang sesuai dengan kriteria tertentu. Anda dapat menggunakan perintah Prelude untuk melakukan plot pencar kedua dari titik-titik yang disorot dengan lingkaran kosong dan panggilan pertama untuk memplot semua poin. Pastikan paramter s cukup kecil untuk lingkaran kosong yang lebih besar untuk melampirkan yang lebih kecil diisi.
Opsi lainnya adalah tidak menggunakan sebar dan menggambar tambalan satu per satu menggunakan perintah lingkaran / elips. Ini ada di matplotlib.patches, berikut adalah beberapa contoh kode tentang cara menggambar lingkaran persegi panjang dll.
sumber