Как создать легенду для линии морского побережья с двумя отдельно рассчитанными линиями - PullRequest
0 голосов
/ 04 мая 2019

У меня есть следующий сюжет, и мне нужно создать легенду для двух линий. Моя проблема в том, что я не могу понять, как использовать legend () с двумя строками.

То, что я хотел бы, это иметь поле легенды вне графика с «доходом» для строки rvn и «бюджетом» для строки bgt.

Я пытался

plt.legend(handles=[bgt, rvn])

и

plt.legend((bgt, rvn), ('Budget', 'Revenue')),

но они не работали.

bgt = sns.lineplot(x= 'release_year', y='budget_adj_avg', data= df_bpr_avg) # blue
rvn = sns.lineplot(x= 'release_year', y='revenue_adj_avg', data= df_bpr_avg);# orange
plt.xlabel("Release year")
plt.ylabel("Amount ($)")
plt.title("Comparison average movies Budget and Revenue per year")
#plt.legend((bgt, rvn), ('Budget', 'Revenue'))
plt.legend(handles=[bgt, rvn])
plt.show()

1 Ответ

1 голос
/ 04 мая 2019

Попробуйте это:

bgt = sns.lineplot(x= 'release_year', y='budget_adj_avg', data= df_bpr_avg, palette = 'blue', label = 'bgt') 
rvn = sns.lineplot(x= 'release_year', y='revenue_adj_avg', data= df_bpr_avg, palette = 'orange', label = 'rvn')
plt.xlabel("Release year")
plt.ylabel("Amount ($)")
plt.title("Comparison average movies Budget and Revenue per year")
plt.legend()
plt.show()

У меня нет ваших данных, поэтому я попытался использовать собственные данные:

    index   size    half
0   0   20          10
1   1   28          14
2   2   38          19
3   3   42          21
4   4   42          21
5   5   42          21
6   6   44          22
7   7   124         62
8   8   176         88
9   9   192         96
10  10  194         97
11  11  216         108
12  12  228         114
13  13  316         158
14  14  318         159
15  15  2048        1024
16  16  2714        1357
17  17  2802        1401
18  18  4128        2064
19  19  4186        2093
20  20  6910        3455
21  21  9313        4656
22  22  10816       5408
23  23  16560       8280
24  24  20704       10352
25  25  34766       17383
26  26  91022       45511

И я сделал

sns.lineplot(x = s['index'], y = s['size'], palette = 'blue', label="full")
sns.lineplot(x = s['index'], y = s['half'], palette = 'orange', label="half")
plt.legend()

и это дает мне:

enter image description here

...