Как получить цвет самой последней строки в 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]
будет достаточным.