zaskakująco nie znalazłem prostego opisu, jak narysować okrąg z matplotlib.pyplot (proszę nie pylab) przyjmując jako środek wprowadzania (x, y) i promień r. Wypróbowałem kilka wariantów tego:
import matplotlib.pyplot as plt
circle=plt.Circle((0,0),2)
# here must be something like circle.plot() or not?
plt.show()
... ale nadal nie działało.
python
matplotlib
Max Li
źródło
źródło
plt.Circle(..)
kieruje domatplotlib.patches.Circle()
. Więc rozwiązanie bez pyplota byłobycircle = matplotlib.patches.Circle(..); axes.add_artist(circle)
.Odpowiedzi:
Musisz dodać go do osi. A
Circle
jest podklasą klasy anArtist
, a anaxes
maadd_artist
metodę.Oto przykład, jak to zrobić:
Z tego wynika następujący rysunek:
Pierwszy okrąg znajduje się w punkcie początkowym, ale domyślnie tak
clip_on
jestTrue
, więc okrąg jest przycinany, gdy kiedykolwiek wychodzi pozaaxes
. Trzecie (zielone) kółko pokazuje, co się stanie, gdy nie przypniesz plikuArtist
. Rozciąga się poza osie (ale nie poza figurę, tj. Rozmiar figury nie jest automatycznie dostosowywany do kreślenia wszystkich twoich artystów).Jednostki x, y i promień domyślnie odpowiadają jednostkom danych. W tym przypadku nie wykreśliłem niczego na moich osiach (
fig.gca()
zwraca bieżące osie), a ponieważ limity nigdy nie zostały ustawione, domyślnie są one w zakresie xiy od 0 do 1.Oto kontynuacja przykładu, pokazująca znaczenie jednostek:
Co skutkuje w:
Możesz zobaczyć, jak ustawiłem wypełnienie drugiego koła na
False
, co jest przydatne do otaczania kluczowych wyników (takich jak mój żółty punkt danych).źródło
matplotlib.pyplot.Circle == matplotlib.patches.Circle
ocenia się naTrue
, więc prawdopodobnie są to aliasy.Szybka, skondensowana wersja zaakceptowanej odpowiedzi, aby szybko podłączyć okrąg do istniejącej fabuły. Zapoznaj się z zaakceptowaną odpowiedzią i innymi odpowiedziami, aby zrozumieć szczegóły.
Tak poza tym:
gcf()
oznacza Pobierz bieżącą figuręgca()
oznacza Pobierz bieżącą ośźródło
dir(fig)
pokazuje mi ponad 30 metod „get”, alegca
nie maget_current_axis
aliasu. Tego rodzaju odpowiedzi fyi są cudowne.plt.gca()
zamiastplt.gcf().gca()
Jeśli chcesz narysować zestaw kręgów, możesz chcieć zobaczyć ten post lub ten tekst (nieco nowszy). Post oferował funkcję o nazwie
circles
.Funkcja
circles
działa podobniescatter
, ale rozmiary kreślonych okręgów są w jednostce danych.Oto przykład:
źródło
transform=ax.transAxes
?mplleaflet
? Jeśli tak, czy mógłbyś podać przykład?matplotlib
, myślę, że powinien być zgodny z,mplleaflet
chociaż nigdy nie próbowałem.Lub, jeśli wolisz, spójrz na
path
s, http://matplotlib.sourceforge.net/users/path_tutorial.htmlźródło
Jeśli chcesz, aby „koło” zachowywało wizualny współczynnik proporcji 1 bez względu na współrzędne danych, możesz użyć metody scatter (). http://matplotlib.org/1.3.1/api/pyplot_api.html#matplotlib.pyplot.scatter
źródło
Rozszerzenie zaakceptowanej odpowiedzi na typowy przypadek użycia. W szczególności:
Oglądaj okręgi w naturalnych proporcjach.
Automatycznie wydłuż granice osi, aby uwzględnić nowo wykreślone okręgi.
Samodzielny przykład:
Zwróć uwagę na różnicę między
ax.add_patch(..)
iax.add_artist(..)
: z tych dwóch, tylko pierwszy powoduje, że mechanizm autoskalowania bierze pod uwagę koło (odniesienie: dyskusja ), więc po uruchomieniu powyższego kodu otrzymujemy:Zobacz też:
set_aspect(..)
dokumentacja .źródło
fig, ax = plt.subplots()
, w przeciwnym razie otrzymasz dwa okna (jedno jest puste).Widzę wykresy z użyciem (.circle), ale w oparciu o to, co możesz chcieć zrobić, możesz również wypróbować to:
źródło
Witam napisałem kod do rysowania koła. Pomoże w rysowaniu wszelkiego rodzaju okręgów. Obraz przedstawia okrąg o promieniu 1 i środku w 0,0 . Środek i promień można dowolnie edytować.
Powodzenia
źródło
Podobnie jak w przypadku wykresu punktowego, można również użyć normalnego wykresu ze stylem linii koła. Za pomocą
markersize
parametru można dopasować promień okręgu:źródło