web-dev-qa-db-fra.com

Valeurs alpha individuelles dans le nuage de points

Je me demande s'il est possible d'avoir des valeurs alpha individuelles pour chaque point à tracer en utilisant la fonction scatter de Matplotlib. J'ai besoin de tracer un ensemble de points, chacun avec sa valeur alpha.

Par exemple, j'ai ce code pour tracer certains points

def plot_singularities(points_x, p, alpha_point, file_path):
    plt.figure()
    plt.scatter(points_x, points_y, alpha=alpha_point)
    plt.savefig(file_path + '.png', dpi=100)
    plt.close()

Tous mes points_x, points_y Et alpha_point Ont n valeurs. Cependant, je ne peux pas affecter un tableau au paramètre alpha dans scatter(). Comment puis-je avoir une valeur alpha différente pour chaque point? Je peux boucler et tracer point par point avec chaque valeur alpha spécifique, mais cela ne semble pas être une bonne approche.

33
pceccon

la suggestion de tcaswell est correcte, vous pouvez le faire comme ceci:

import numpy as np
import matplotlib.pylab as plt

x = np.arange(10)
y = np.arange(10)

alphas = np.linspace(0.1, 1, 10)
rgba_colors = np.zeros((10,4))
# for red the first column needs to be one
rgba_colors[:,0] = 1.0
# the fourth column needs to be your alphas
rgba_colors[:, 3] = alphas

plt.scatter(x, y, color=rgba_colors)
plt.show()

Output

48
MaxNoe