Раскраска полос разными цветами «вручную» или с использованием логического выражения в панде барплот - PullRequest
0 голосов
/ 27 июня 2018

Я хочу раскрасить столбцы, представляющие значения, которые превышают числовое значение и которые относятся к определенному интервалу лет во временной серии, цвет которых отличается от остальных.

Моя первая попытка сделать это «вручную», то есть путем ручного задания цвета для каждого столбца на графике, привела к исключению. Я хотел бы знать, как исправить код, а также, если есть способ автоматизировать раскраску с помощью логического выражения.

Мои данные:

df1

2004    23
2005    10
2006     2
2007    15
2008    13
2009    15
2010    30
2011    38
2012    42
2013    72

my_colors = 'b'*6 + 'r'*4
my_colors # I want bars representing values above 15 and after 2005 to be colored 
          # red, while the rest blue
'bbbbbbrrrr' 
df1.plot(kind = 'bar', color = my_colors, figsize = (10, 8))
plt.title('Immigration from Iceland to Canada')
plt.xlabel('Year')
plt.ylabel('Number of Immigrants')
plt.show()

ValueError: Invalid RGBA argument: 'bbbbbbrrrr'

1 Ответ

0 голосов
/ 27 июня 2018

предположим, у вас есть столбец с именем Значение, которое содержит эти числовые значения и дату для этих дат

a = (df['Value'] > 15)& (df['Date'] > 2005)

colors = np.where(a, 'r', 'b')
print(colors)

['b' 'b' 'b' 'b' 'b' 'b' 'r' 'r' 'r' 'r']

Теперь вы можете использовать этот цвет на вашем графике

color = colors
...