раскраска гистограмм в matplotlib в зависимости от значения dcitionary ключа - PullRequest
1 голос
/ 04 августа 2020

У меня есть словарь устройств и их уровень заряда батареи, вот что я пытаюсь сделать, так это построить гистограмму, показывающую уровень заряда батареи разными цветами, красным, если батарея ниже 20, 20 60

Я использую matplotlib, pyplot и я пытаюсь перебрать значения ключей в моем словаре, но я получаю синтаксическую ошибку в моем for l oop (может il oop над ключами и установить значение цвета для каждой полосы?), я не уверен, что я делаю не так, это мой код:

import matplotlib.pyplot as plt

dic={'Door1':50,'Hall':20,'Garage':90,'Door101':15}


i=0
for i in dic.keys()
    if dic.keys(i) <20:
        color='r'
    if 20<dic.keys(i) >=60 
        color='y'
    if dic.keys(i) >=90
        color='g
    i=i+1


plt.bar(range(len(dic)), list(dic.values()), align='center' , color=color)  
plt.xticks(range(len(dic)), list(dic.keys())) 

plt.title('Battery Level')
#save my plot as a png file to insert in Ifram html later
plt.savefig('my_plot.png')

введите описание изображения здесь

1 Ответ

1 голос
/ 04 августа 2020

Думаю, это именно то решение, которое вам нужно:

import matplotlib.pyplot as plt

dic = {'Door1': 50, 'Hall': 20, 'Garage': 90, 'Door101': 15}

color = []

for i in dic.keys():
    if dic[i] < 20:
        color.append('red')
    if 20 <= dic[i] <= 60:
        color.append('yellow')
    if dic[i] >= 90:
        color.append('green')

plt.bar(range(len(dic)), list(dic.values()), align='center', color=color)
plt.xticks(range(len(dic)), list(dic.keys())) 

plt.title('Battery Level')
# save my plot as a png file to insert in Ifram html later
plt.savefig('my_plot.png')

Вывод: введите описание изображения здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...