tiempo real matrices graficos graficas graficar grafica coordenadas barras python matplotlib

python - real - Matplotlib-Cómo hacer que el color de la cara del marcador sea transparente sin hacer que la línea sea transparente



matplotlib python (2)

Consulte la respuesta de @ Pelson a continuación para conocer la forma correcta de hacerlo con una línea.

Puede hacer esto de una manera hacky Line2D pegajosamente dos objetos Line2D independientes.

th = np.linspace(0, 2 * np.pi, 64) y = np.sin(th) ax = plt.gca() lin, = ax.plot(th, y, lw=5) mark, = ax.plot(th, y, marker=''o'', alpha=.5, ms=10) ax.legend([(lin, mark)], [''merged'']) plt.draw()

matplotlib.org/users/legend_guide.html#legend-handler para la explicación

Sé cómo establecer la transparencia de una línea en matplotlib. Por ejemplo, el siguiente código hace que la línea y los marcadores sean transparentes.

import numpy as np import matplotlib.pyplot as plt vec = np.random.uniform(0, 10, 50) f = plt.figure(1) ax = f.add_subplot(111) ax.plot(vec, color=''#999999'', marker=''s'', alpha=0.5)

Quiero alfa de la línea = 1.0, y el color de la cara del marcador es semitransparente (alfa = 0.5). ¿Se puede hacer esto en matplotlib?

Gracias.


Después de leer el código fuente de matplotlib.line , resulta que hay una ruta de código (al menos en Agg, pero probablemente todos los backends) que le permite hacer esto. Si esto fue alguna vez un comportamiento intencional, no estoy seguro, pero ciertamente funciona en este momento. La clave no es definir un valor alfa para la línea, sino definir los colores deseados junto con un valor alfa:

import matplotlib.pyplot as plt plt.plot([0, 1], [1, 0], ''k'') # Do not set an alpha value here l, = plt.plot(range(10), ''o-'', lw=10, markersize=30) l.set_markerfacecolor((1, 1, 0, 0.5)) l.set_color(''blue'') plt.show()

Probablemente se pueden dar como argumentos en plt.plot , así que solo

plt.plot(range(10), ''bo-'', markerfacecolor=(1, 1, 0, 0.5), )

hará el truco

HTH