Цвета Pyplot не такие, как ожидалось - PullRequest
1 голос
/ 23 марта 2011

Кто-нибудь знает, почему этот код не отображает цвета блоков правильно? Я хочу, чтобы каждый компонент был разного цвета, но все они выглядят черными с синей легендой.

from numpy import array, zeros
import matplotlib.pyplot as plt

# Components: Useage times (start, stop), wattage, detail

COMPONENTS = {"fridge": ( [(0.0,24.0)], 35, " Litres"),
              "kettle": ([(7.3,7.33), (19.0,19.3)], 2500, ""),
              "netbook": ([(8.0,9.3),(12.0,15.0)], 12.5, ""),
              "light bulb": ([(18.0,22.0)], 20, "")
              }
COLORS = ('b','g','r','c','m','y','k','w')
PLOT = []
TIME = range(24*60)

Powers = [] # list of array of power for each component
for key in COMPONENTS.keys(): # each useage
    p = zeros(len(TIME))
    for j in COMPONENTS[key][0]: # start and stop
        start = round(j[0]*60)
        end = round(j[1]*60)
        p[start:end] = COMPONENTS[key][1]
    Powers.append(p)

b=zeros(len(TIME))
for i in range(len(COMPONENTS.keys())):
    PLOT.append(plt.bar(TIME,Powers[i],width = 1, color=COLORS[i], bottom=b))
    b+=Powers[i]


plt.ylabel('Power (W)')
plt.xlabel('Time (h)') ###
plt.title('Power Cycle')
plt.xticks(range(0,25*60,60) ,[str(t) for t in range(25)])
plt.legend( tuple([i for i in PLOT]), tuple([c for c in COMPONENTS.keys()]) )

plt.show()

1 Ответ

2 голосов
/ 23 марта 2011

Ваш код в плане графика в порядке.Проблема в том, что там слишком много баров, поэтому вы видите только черные границы.Вот что выглядит при увеличении: enter image description here

Чтобы получить легенду правильно, передайте аргумент label при построении, а затем просто вызовите plt.legend() без аргументов, когда вы закончите.

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