how - pequeños marcadores de trazado de dispersión en matplotlib son siempre negros
subplot python (4)
En respuesta a la pregunta de zwol en el comentario, mi reputación no es lo suficientemente alta como para dejar comentarios, así que esto tendrá que hacer: en el caso de que tus colores provengan de un mapa de colores (es decir, provienen de una "secuencia de valores a mapear") puede usar color =
como se demuestra en lo siguiente:
from matplotlib import pyplot
x = [1,5,8,9,5]
y = [4,2,4,7,9]
numSides = [2,3,1,1,5]
cmap = pyplot.cm.get_cmap("copper_r")
min, max = min(numSides), max(numSides)
for i in range(len(x)):
if numSides[i] >= 2:
cax = pyplot.scatter(x[i], y[i], marker = ''+'', s = 100, c = numSides[i], cmap = cmap)
cax.set_clim(min, max)
elif numSides[i] == 1:
pyplot.scatter(x[i], y[i], marker = ''.'', s = 40, color = cmap(numSides[i]))
fig = pyplot.gcf()
fig.set_size_inches(8.4, 6)
fig.savefig(''figure_test.png'', dpi = 200)
pyplot.show()
Intento usar matplotlib para hacer un diagrama de dispersión con puntos grises muy pequeños. Debido a la densidad del punto, los puntos deben ser pequeños. El problema es que los marcadores de la función scatter () parecen tener una línea y un relleno. Cuando los marcadores son pequeños, solo la línea es visible, no el relleno, y la línea no es del color correcto (siempre es negra).
Puedo obtener exactamente lo que quiero usando gnuplot: trazar ''nodos'' con puntos pt 0 lc rgb ''gris''
¿Cómo puedo hacer puntos grises muy pequeños usando matplotlib scatterplot ()?
La respuesta más simple a su pregunta es: use el parámetro color
lugar del parámetro c
para establecer el color del marcador completo.
Es fácil ver la diferencia cuando se comparan los resultados:
from matplotlib import pyplot as plt
plt.scatter([1,2,3], [3,1,2], c=''0.8'') # marker not all gray
plt.scatter([1,2,3], [3,1,2], color=''0.8'') # marker all gray
Detalles: para su caso de uso simple en el que solo desea que su marcador sea del mismo color gris, no debería preocuparse por detalles como el color de la cara o el color de borde, y si su marcador está definido como todos los bordes o algunos bordes y algunos llenan. En su lugar, solo use el parámetro de color
y sepa que su marcador completo se configurará con el color único que especifique.
Si el marcador no tiene rostro (no se puede rellenar, p ''+''
Ej., ''+''
, ''x''
), entonces el edgecolor
debe configurarse en lugar de c
, y lw
no debe ser 0
:
scatter([1,2,3], [2,4,5], marker=''+'', edgecolor=''r'')
Lo siguiente no funcionará
scatter([1,2,3], [2,4,5], s=1, marker=''+'', facecolor=''0.5'', lw = 0)
porque el borde / línea no se mostrará, por lo que no se mostrará nada.
scatter([1,2,3], [2,4,5], s=1, facecolor=''0.5'', lw = 0)
Esto establece el marcador en 1 (s = 1), el color de la cara en gris (color de la cara = ''0.5'') y el ancho de la línea en 0 (lw = 0).