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?
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'
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.