Pyplot - Сюжетные метки - PullRequest
       12

Pyplot - Сюжетные метки

1 голос
/ 25 октября 2011

У меня кошмарное время, когда я пытаюсь пометить данные с помощью pyplot.

В настоящее время я строю все свои данные следующим образом: plt.plot (data).

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

Я хотел бы добавить легенду и соответствующим образом обозначить каждый из списков данных. Я не могу заставить легенду работать, хотя. plt.legend (('Столбец 1', 'Столбец 2', 'и т. д.), loc = 1) и другие подобные вещи не работали. Если я построю каждый столбец отдельно, он по какой-то причине перестанет работать правильно.

Я с нетерпением жду и благодарю вас за любые советы.

EDIT:

for i in range(1,days):
    data.append(totalCost(i)) #cost returns retVal, construction, gas, and wage
plt.ylabel('Cost in US Dollars') 
plt.title('Economic Cost over Time')

plt.plot(data)
plt.legend(('Total','Construction','Gas','Wage'),loc=1) # Legend is blank

РЕДАКТИРОВАТЬ 2: Вместо того, чтобы иметь код в разных местах в моей программе, я реорганизовал его и централизовал все. С этими изменениями легенда начала работать, и все кажется решенным. Я понятия не имею, в чем проблема, хотя.

plt.plot(data)
plt.legend(('Total Cost', 'Construction Cost', 'Gas Cost','Wage Cost'),loc=0)
plt.grid(False)
plt.xlabel('Time (Days)')
plt.ylabel('Cost in US Dollars')
plt.title('Economic Cost over Time')
print ('   Close the Graph to Continue Using this Model')
plt.show()

1 Ответ

2 голосов
/ 25 октября 2011

Ваш код правильно отображает легенду с Matplotlib 1.1 в Mac OS X при условии, что:

  • Matplotlib переводится в интерактивный режим в начале: plt.ion()
  • Код заканчивается, например, plt.show().

Также может помочь обновление Matplotlib.

Последнее возможное решение состояло бы в том, чтобы на самом деле построить каждую строку отдельно с ее собственной меткой: plt.plot(<single line data>, label='Construction') и т. Д., А затем нарисовать легенду с помощью plt.legend(loc='best').

...