W Pythonie, za pomocą Matplotlib, jak można wykreślić wykres punktowy z pustymi okręgami? Celem jest narysowanie pustych kółek niektórych kolorowych dysków już wykreślonych scatter()
, tak aby je podświetlić, najlepiej bez konieczności przerysowywania kolorowych kółek.
Próbowałem facecolors=None
, ale bezskutecznie.
python
matplotlib
geometry
scatter-plot
scatter
Eric O Lebigot
źródło
źródło
Odpowiedzi:
Z dokumentacji dla rozpraszania:
Spróbuj wykonać następujące czynności:
Uwaga: W przypadku innych typów działek zobacz ten post dotyczący używania
markeredgecolor
imarkerfacecolor
.źródło
facecolors=None
nie działa, co mnie zaskoczyło.markerfacecolor='none'
tak jest teraz.markerfacecolor='none'
spróbuj dodaćmarkeredgewidth=1.0
%matplotlib inline
iimport matplotlib.pyplot as plt
, a następnie ustawienie Seaborn być domyślną kreślenia przezimport seaborn as sns; sns.set()
Czy to zadziała?
lub używając plot ()
źródło
plot
zamiastscatter
scatter
musisz określićedgecolors
jakedgecolors='r'
. W przeciwnym razie kręgi znikną. Zobacz tutajOto inny sposób: dodaje to okrąg do aktualnych osi, wykresu lub obrazu lub cokolwiek innego:
(Kręgi na obrazku zostaną zgniecione do elips, ponieważ
imshow aspect="auto"
).źródło
W matplotlib 2.0 istnieje parametr o nazwie,
fillstyle
który pozwala na lepszą kontrolę nad sposobem wypełniania znaczników. W moim przypadku użyłem go z paskami błędów, ale działa to ogólnie dla znaczników http://matplotlib.org/api/_as_gen/matplotlib.axes.Axes.errorbar.htmlfillstyle
akceptuje następujące wartości: ['full' | 'lewo' | „w prawo” | „dół” | „do góry” | 'Żaden']Istnieją dwie ważne rzeczy, o których należy pamiętać podczas używania
fillstyle
,1) Jeśli mfc jest ustawione na jakąkolwiek wartość, będzie miało pierwszeństwo, więc jeśli ustawisz styl fillstyle na „none”, nie zadziała. Dlatego unikaj używania mfc w połączeniu z fillstyle
2) Możesz chcieć kontrolować szerokość krawędzi markera (używając
markeredgewidth
lubmew
), ponieważ jeśli marker jest stosunkowo mały, a szerokość krawędzi jest gruba, markery będą wyglądać na wypełnione, mimo że tak nie jest.Poniżej znajduje się przykład użycia pasków błędów:
źródło
Bazując na przykładzie Gary'ego Kerra i zgodnie z propozycją tutaj, można utworzyć puste okręgi związane z określonymi wartościami za pomocą następującego kodu:
źródło
.scatter()
nie działało . Dla kontekstu stosowałem również Colormap (c=z, cmap='jet'
).Zakładam więc, że chcesz podkreślić kilka punktów, które pasują do określonych kryteriów. Możesz użyć polecenia Prelude, aby wykonać drugi wykres punktowy wyróżnionych punktów z pustym okręgiem i pierwsze wywołanie, aby wykreślić wszystkie punkty. Upewnij się, że parametr s jest wystarczająco mały, aby większe puste koła obejmowały mniejsze wypełnione.
Inną opcją jest rezygnacja z rozpraszania i samodzielne rysowanie łat za pomocą polecenia okrąg / elipsa. Są one w matplotlib.patches, tutaj jest przykładowy kod pokazujący, jak rysować koła, prostokąty itp.
źródło