2014-01-15 5 views
1

У меня возникли проблемы с добавлением надписей к легенде. По какой-то причине matplotlib игнорирует метки, которые я создаю в DataFrame. Любая помощь?Ярлыки на участках

панды версия: 0.13.0
Matplotlib версия: 1.3.1

import pandas as pd 
%matplotlib inline 
import matplotlib.pyplot as plt 

# Sample dataframe 
d = {'date': [pd.to_datetime('1/1/2013'), pd.to_datetime('1/1/2014'), pd.to_datetime('1/1/2015')], 
    'number': [1,2,3], 
    'letter': ['A','B','C']} 
df = pd.DataFrame(d) 

#################### 
fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(13, 10)) 
fig.subplots_adjust(hspace=2.0) ## Create space between plots 

# Chart 1 
df.plot(ax=axes[0], label='one') 

# Chart 2 
df.set_index('date')['number'].plot(ax=axes[1], label='two') 

# add a little sugar 
axes[0].set_title('This is the title') 
axes[0].set_ylabel('the y axis') 
axes[0].set_xlabel('the x axis') 
axes[0].legend(loc='best') 
axes[1].legend(loc='best'); 

Проблема заключается в том, что диаграмма 1 возвращается легенда, как «число», и я хочу, чтобы это сказать «один».

ответ

1

Иллюстрирует это для первой оси. Вы можете повторить второй.

In [72]: fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(13, 10)) 

Получить ссылку на оси

In [73]: ax=df.plot(ax=axes[0]) 

Получить легенду

In [74]: legend = ax.get_legend() 

Получить текст легенды

In [75]: text = legend.get_texts()[0] 

Печать текущего текста легенды

In [77]: text.get_text() 
Out[77]: u'number' 

Установка требуемого текста

In [78]: text.set_text("one") 

Drawing обновить

In [79]: plt.draw() 

На следующем рисунке показана измененная легенду для первой оси. Вы можете сделать то же самое для другой оси.

NB: автозаполнение IPython помогло решить этот ответ!

enter image description here

+0

спасибо, я получил его на работу с помощью осей [0] .legend ([ «метка диаграммы 1»], LOC = «лучший»), но я до сих пор не знаю, почему мой исходный код не работает. – DataByDavid

Смежные вопросы