real - matplotlib python
Matplotlib-Dibujando un cĂrculo suave en una trama polar (1)
Puede establecer el argumento de transform
del Circle
:
%matplotlib inline
import pylab as pl
import numpy as np
N = 100
theta = np.random.rand(N)*np.pi*2
r = np.cos(theta*2) + np.random.randn(N)*0.1
ax = pl.subplot(111, polar=True)
ax.scatter(theta, r)
circle = pl.Circle((0.5, 0.3), 0.2, transform=ax.transData._b, color="red", alpha=0.4)
ax.add_artist(circle)
salida:
o transform=ax.transProjectionAffine + ax.transAxes
si no te gusta usar el atributo privado.
Me gusta mucho la trama polar de matplotlib y me encantaría seguir trabajando con ella (ya que mis puntos de datos se dan en coordenadas polares de todos modos y mi entorno es circular).
Sin embargo, en la trama, me gustaría agregar círculos de radios dados en puntos específicos.
Por lo general, yo haría:
ax = plt.subplot(111)
ax.scatter(data)
circle = plt.Circle((0,0), 0.5)
ax.add_artist(circle)
plt.show()
Sin embargo, en coordenadas polares, no puedo usar el círculo, ya que asume coordenadas rectangulares.
Las ideas que he propuesto son: generar una matriz de puntos con coordenada radial constante y una coordenada angular en [0, 2PI] o cambiar completamente a coordenadas rectangulares. Ambas soluciones no son realmente satisfactorias. ¿Puede uno mejorar con matplotlib?
¡Gracias!