web-dev-qa-db-fra.com

Comment obtenir la couleur de la ligne tracée la plus récente en Python

Je trace une ligne sans spécifier la couleur (pensez: plt.plot (x, y)) . Dites que la couleur sort en bleu.

Question: Comment puis-je obtenir cette couleur de l'objet plt afin de pouvoir la mettre dans une variable?

On dirait que c'est proche (et potentiellement la solution):

p = plt.plot(x,y)
color = p[0].get_color()

Question mise à jour: Je ne suis pas sûr de comprendre l'index "0": p [0] accède-t-il toujours à la dernière ligne tracée?

30
denvar

Dans votre exemple, p est une liste d'objet Line2D. Dans cet exemple, vous n'avez qu'un seul objet de ligne, p [0]. Ce qui suit est un exemple traçant trois lignes. Au fur et à mesure que plus de lignes sont ajoutées, elles sont ajoutées au p.Ainsi, si vous voulez la couleur du dernier tracé, ce sera a[-1].get_color().

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(10)
y = np.arange(10)
p = plt.plot(x,y, x,y*2, x,y*3) # make three line plots
type(p) # list
type(p[0]) # <class 'matplotlib.lines.Line2D'>
p[0].get_color() # 'b'
p[1].get_color() # 'g'
p[2].get_color() # 'r'

 line plot

42
Hun

Pour plt.plot normal, faire item.get_color() sur chaque élément de la liste renvoyée vous donnera les couleurs de chaque ligne.

Mais d'autres fonctions de tracé, telles que plt.scatter, renverront une Collection. Pour une Collection, vous pouvez appeler result.get_facecolor(). Cela renverra un tableau de valeurs de couleur des couleurs de premier plan des éléments. Donc, si elles ont toutes la même couleur (comme quand vous faites un diagramme de dispersion avec seulement les valeurs X et Y), result.get_facecolor()[0] suffira.

1
Jim Hunziker