전설 순서가 가장 최근의 관측 순위에 의해 결정되는 간단한 범프 차트를 만들려고합니다. 나는 판다 (pandas) DataFrame "y"와 같은 줄을 가로 지르는 랭킹을 가지고있다.matplotlib 범례의 아이템을 동적으로 재주문하는 방법은 무엇입니까?
In[231]: y
Out[231]:
Currency AUD CAD CHF EUR GBP JPY NOK NZD SEK USD
2017-09-08 5.0 1.0 8.0 3.0 9.0 7.0 4.0 6.0 2.0 10.0
2017-09-22 8.0 2.0 10.0 1.0 5.0 9.0 4.0 6.0 3.0 7.0
2017-10-06 4.0 5.0 10.0 2.0 7.0 9.0 3.0 8.0 1.0 6.0
2017-10-20 3.0 4.0 10.0 1.0 7.0 5.0 6.0 9.0 2.0 8.0
2017-11-03 5.0 3.0 10.0 1.0 9.0 7.0 2.0 8.0 4.0 6.0
2017-11-17 5.0 4.0 10.0 1.0 9.0 7.0 3.0 8.0 2.0 6.0
내가 지금까지 사용했던 코드 :
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
fig = plt.figure(figsize=(8.5,8.5))
ax = fig.add_subplot(111)
l1,l2,l3,l4,l5,l6,l7,l8,l9,l10 = ax.plot_date(y.index.to_pydatetime(), y, '*-')
ax.xaxis.set_major_locator(mdates.WeekdayLocator(byweekday=(4),interval=2))
ax.xaxis.set_major_formatter(mdates.DateFormatter('%b %d'))
ax.yaxis.set_ticks(np.arange(1, 11, 1))
ax.set_title('Sample Chart', fontsize=20)
plt.gca().invert_yaxis()
fig.legend([l1,l2,l3,l4,l5,l6,l7,l8,l9,l10], ['AUD','CAD','CHF','EUR','GBP','JPY','NOK','NZD','SEK','USD'], 'right', fontsize=16, frameon=False, labelspacing=1.4)
plt.tight_layout(pad=10)
의 출력을 생성하는 내 질문 2017 '에서 마지막 관찰을 기반으로 전설의 순서를 변경하는 방법입니다 -11-17? 즉, 나는 EUR, SEK, NOK 등을 원한다. 나는 정적 알파벳 순서를 원하지 않는다. 본질적으로 fig.legend에서 [l4, l9, l7, ..., l3]이 필요하지만,이 목록은 행이 'y'에 추가 될 때 순서가 변경됩니다. 적절한 순서로 목록을 생성 할 수는 있지만 fig.legend는 요소가 인용 부호로 묶인 목록을 허용하지 않습니다. 즉, [ 'l4', 'l9', 'l7', ..., 'l3'].
내가 완전히 잘못 될 수 있으므로 도움이 될 것입니다.
완벽하게 작동합니다, 감사합니다! – RHoward