Как получить цвет самой последней строки в Python plt

Я строю строку без указания цвета (думаю: plt.plot(x, y)). Скажем, цвет выделяется синим.

Вопрос: Как получить этот цвет из объекта plt, чтобы я мог поместить его в переменную?

Похоже, что это близко (и, возможно, решение):

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

Обновленный вопрос: Я не уверен, что я понимаю индекс "0": всегда ли p [0] получает доступ к последней построенной строке?

Ответы

Ответ 1

В вашем примере p представляет собой список объектов Line2D. В этом примере у вас есть только один объект линии, p [0]. Ниже приведен пример построения трех строк. Когда добавляется больше строк, она добавляется к p.So, если вы хотите цвет последнего графика, это будет 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

Ответ 2

Для обычного plt.plot, делая item.get_color() для каждого элемента списка, который он возвращает, вы получите цвета каждой строки.

Но другие функции графика, такие как plt.scatter, возвратят Collection. Для Collection вы можете вызвать result.get_facecolor(). Это вернет массив значений цвета цветов переднего плана элементов. Так что, если они имеют одинаковый цвет (как и когда вы делаете график рассеяния только с значениями X и Y), result.get_facecolor()[0] будет достаточным.