En Python, con Matplotlib, ¿cómo se puede trazar un diagrama de dispersión con círculos vacíos ? El objetivo es dibujar círculos vacíos alrededor de algunos de los discos de colores ya trazados scatter()
, para resaltarlos, idealmente sin tener que volver a dibujar los círculos de colores.
Lo intenté facecolors=None
, pero fue en vano.
python
matplotlib
geometry
scatter-plot
scatter
Eric O Lebigot
fuente
fuente
Respuestas:
De la documentación para dispersión:
Intenta lo siguiente:
Nota: Para otros tipos de parcelas, vea esta publicación sobre el uso de
markeredgecolor
ymarkerfacecolor
.fuente
facecolors=None
no funciona, lo que me hizo tropezar.markerfacecolor='none'
, así es ahora.markerfacecolor='none'
intente agregarmarkeredgewidth=1.0
%matplotlib inline
yimport matplotlib.pyplot as plt
, luego, configurar Seaborn para que sea el trazado predeterminado porimport seaborn as sns; sns.set()
¿Funcionarían estos?
o usando plot ()
fuente
plot
lugar descatter
scatter
, debe especificaredgecolors
comoedgecolors='r'
. De lo contrario, los círculos desaparecen. Ver aquíAquí hay otra forma: esto agrega un círculo a los ejes actuales, la trama o la imagen o lo que sea:
(Los círculos en la imagen se convierten en elipses porque
imshow aspect="auto"
).fuente
En matplotlib 2.0 hay un parámetro llamado
fillstyle
que permite un mejor control sobre la forma en que se llenan los marcadores. En mi caso lo he usado con barras de error pero funciona para marcadores en general http://matplotlib.org/api/_as_gen/matplotlib.axes.Axes.errorbar.htmlfillstyle
acepta los siguientes valores: ['full' | 'izquierda' | 'derecho' | 'fondo' | 'top' | 'ninguna']Hay dos cosas importantes a tener en cuenta al usar
fillstyle
,1) Si mfc se establece en cualquier tipo de valor, tendrá prioridad, por lo tanto, si configuró el estilo de relleno en 'ninguno', no tendría efecto. Así que evite usar mfc en conjunción con el estilo de relleno
2) Es posible que desee controlar el ancho del borde del marcador (usando
markeredgewidth
omew
) porque si el marcador es relativamente pequeño y el ancho del borde es grueso, los marcadores se verán rellenos aunque no lo estén.El siguiente es un ejemplo usando barras de error:
fuente
Basándose en el ejemplo de Gary Kerr y como se propone aquí, uno puede crear círculos vacíos relacionados con valores especificados con el siguiente código:
fuente
.scatter()
no lo hizo. Por contexto, también estaba aplicando un mapa de colores (c=z, cmap='jet'
).Así que supongo que desea resaltar algunos puntos que se ajustan a ciertos criterios. Puede usar el comando Prelude para hacer un segundo diagrama de dispersión de los puntos resaltados con un círculo vacío y una primera llamada para trazar todos los puntos. Asegúrese de que el parámetro s sea lo suficientemente pequeño para que los círculos vacíos más grandes encierren los más pequeños llenos.
La otra opción es no usar dispersión y dibujar los parches individualmente usando el comando circle / ellipse. Estos están en matplotlib.patches, aquí hay un código de muestra sobre cómo dibujar círculos, rectángulos, etc.
fuente