Изменить легенду matplolib в python - PullRequest
1 голос
/ 10 января 2020

В настоящее время я использую следующий код для построения своих данных:

#
#Plotting
plt.plot(temp1, densityHEX,'bo',markersize='12',label='Hexadecane MD')
plt.plot(expTempHexa,expDensHexa,'bo',markersize='12',markerfacecolor='none',label='Hexadecane Exp')

plt.plot(temp2, densityLAU,'rs',markersize='12',label='Methyl Laurate MD')
plt.plot(expTempLau2,expDensLau2,'rs',markersize='12',markerfacecolor='none',label='Methyl Laurate Exp')

plt.plot(temp2, densityMIX,'^',color='indigo',markersize='12',label='Mixture 1:1 MD')
plt.plot(expTempMix,expDensMix,'^',color='indigo',markersize='12',markerfacecolor='none',label='Mixture 1:1 Exp')

leg = plt.legend(loc='best',ncol=2,frameon=False,prop={'size': 13})
leg.get_frame().set_edgecolor('k')
plt.ylabel(r'$\rho$ (g/cm$^3$)',fontsize = 22)
plt.xlabel('T (K)',fontsize = 22)
plt.ylim((0.650,1.0))
plt.tight_layout()
plt.savefig("rhoCombined3.pdf", format='pdf')

Вывод такой:

this

Мне было интересно, есть ли способ изменить легенду, чтобы получить что-то вроде этого:

What i need.

1 Ответ

1 голос
/ 10 января 2020

Один из вариантов такой:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.legend_handler import HandlerTuple

x = np.arange(10)
y = x*0.2

#Plotting
l1, = plt.plot(x,y+0.0, 'bo', markersize='12', label='Hexadecane MD')
l2, = plt.plot(x,y+0.3, 'bo', markersize='12', markerfacecolor='none', label='Hexadecane Exp')

l3, = plt.plot(x,y+1.0, 'rs', markersize='12', label='Methyl Laurate MD')
l4, = plt.plot(x,y+1.3, 'rs', markersize='12', markerfacecolor='none', label='Methyl Laurate Exp')

l5, = plt.plot(x,y+2.0, '^', color='indigo', markersize='12', label='Mixture 1:1 MD')
l6, = plt.plot(x,y+2.3, '^', color='indigo', markersize='12', markerfacecolor='none',label='Mixture 1:1 Exp')

plt.legend(handles=[(l1, l2), (l3, l4), (l5, l6)], 
           labels=["Hexadecane", "Methyl Laurate", "Mixture 1:1"],
           handler_map={tuple: HandlerTuple(ndivide=2)}, 
           handlelength=3,
           title="MD  Exp                         ")
plt.show()

enter image description here

Неправильное использование заголовка для "заголовка столбца" является грязным хаком. Но это быстро дает желаемый результат.

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