Sorprendentemente, no encontré una descripción directa sobre cómo dibujar un círculo con matplotlib.pyplot (por favor, sin pylab) tomando como centro de entrada (x, y) y radio r. Intenté algunas variantes de esto:
import matplotlib.pyplot as plt
circle=plt.Circle((0,0),2)
# here must be something like circle.plot() or not?
plt.show()
... pero aún así no funcionó.
python
matplotlib
Max Li
fuente
fuente

plt.Circle(..)dirige amatplotlib.patches.Circle(). Entonces, una solución sin pyplot seríacircle = matplotlib.patches.Circle(..); axes.add_artist(circle).Respuestas:
Necesita agregarlo a los ejes. A
Circlees una subclase de anArtist, y anaxestiene unadd_artistmétodo.Aquí hay un ejemplo de hacer esto:
Esto da como resultado la siguiente figura:
El primer círculo está en el origen, pero por defecto lo
clip_onestáTrue, por lo que el círculo se recorta cuando se extiende más allá delaxes. El tercer círculo (verde) muestra lo que sucede cuando no recorta elArtist. Se extiende más allá de los ejes (pero no más allá de la figura, es decir, el tamaño de la figura no se ajusta automáticamente para representar a todos sus artistas).Las unidades para x, y y radio corresponden a unidades de datos por defecto. En este caso, no tracé nada en mis hachas (
fig.gca()devuelve los ejes actuales), y dado que los límites nunca se han establecido, el valor predeterminado es un rango x e y de 0 a 1.Aquí hay una continuación del ejemplo, que muestra cómo importan las unidades:
lo que resulta en:
Puede ver cómo configuro el relleno del segundo círculo
False, lo cual es útil para rodear los resultados clave (como mi punto de datos amarillo).fuente
matplotlib.pyplot.Circle == matplotlib.patches.CircleevalúaTrue, por lo que probablemente sean alias.Una versión condensada rápida de la respuesta aceptada, para conectar rápidamente un círculo en una trama existente. Consulte la respuesta aceptada y otras respuestas para comprender los detalles.
Por cierto:
gcf()significa Obtener figura actualgca()significa Obtener eje actualfuente
dir(fig)me muestra más de 30 métodos 'get', perogcano tiene unget_current_axisalias. Este tipo de respuestas para tu información son maravillosas.plt.gca()lugar deplt.gcf().gca()Si desea trazar un conjunto de círculos, es posible que desee ver esta publicación o esta esencia (un poco más nueva). La publicación ofrecía una función llamada
circles.La función
circlesfunciona comoscatter, pero los tamaños de los círculos trazados están en la unidad de datos.Aquí hay un ejemplo:
fuente
transform=ax.transAxeshacer?mplleaflet? Si es así, ¿podría dar un ejemplo, por favor?matplotlib, supongo que debería ser compatible,mplleafletaunque nunca lo intenté.O, si lo prefiere, mire
paths, http://matplotlib.sourceforge.net/users/path_tutorial.htmlfuente
Si desea que el "círculo" mantenga una relación de aspecto visual de 1, independientemente de las coordenadas de los datos, puede utilizar el método scatter (). http://matplotlib.org/1.3.1/api/pyplot_api.html#matplotlib.pyplot.scatter
fuente
Extender la respuesta aceptada para un caso de uso común. En particular:
Ver los círculos en una relación de aspecto natural.
Extienda automáticamente los límites de los ejes para incluir los círculos recién trazados.
Ejemplo autónomo:
Tenga en cuenta la diferencia entre
ax.add_patch(..)yax.add_artist(..): de los dos, solo el primero hace que la maquinaria de autoescalado tenga en cuenta el círculo (referencia: discusión ), por lo que después de ejecutar el código anterior obtenemos:Ver también:
set_aspect(..)documentación .fuente
fig, ax = plt.subplots(), de lo contrario obtendrá dos ventanas (una está en blanco).Veo tramas con el uso de (.circle) pero en función de lo que quieras hacer, también puedes probar esto:
fuente
Hola, he escrito un código para dibujar un círculo. Ayudará a dibujar todo tipo de círculos. La imagen muestra el círculo con radio 1 y centro en 0,0 El centro y el radio se pueden editar de cualquier elección.
Buena suerte
fuente
De manera similar al diagrama de dispersión, también puede usar el diagrama normal con estilo de línea circular. Usando el
markersizeparámetro puede ajustar el radio de un círculo:fuente