J'ai un tracé matplotlib
généré avec le code suivant:
import matplotlib.pyplot as pyplot
Fig, ax = pyplot.subplots()
for i, (mark, color) in enumerate(Zip(
['s', 'o', 'D', 'v'], ['r', 'g', 'b', 'purple'])):
ax.plot(i+1, i+1, color=color,
marker=mark,
markerfacecolor='None',
markeredgecolor=color,
label=i)
ax.set_xlim(0,5)
ax.set_ylim(0,5)
ax.legend()
avec ceci comme figure générée:
Je n'aime pas les lignes passant par les marqueurs de la légende. Comment puis-je m'en débarrasser?
Vous pouvez spécifier linestyle="None"
comme argument de mot clé dans la commande plot:
import matplotlib.pyplot as pyplot
Fig, ax = pyplot.subplots()
for i, (mark, color) in enumerate(Zip(
['s', 'o', 'D', 'v'], ['r', 'g', 'b', 'purple'])):
ax.plot(i+1, i+1, color=color,
marker=mark,
markerfacecolor='None',
markeredgecolor=color,
linestyle = 'None',
label=`i`)
ax.set_xlim(0,5)
ax.set_ylim(0,5)
ax.legend(numpoints=1)
pyplot.show()
Comme vous ne tracez que des points uniques, vous ne pouvez pas voir l'attribut de ligne, sauf dans la légende.
Vous pouvez définir rcparams
pour les tracés:
import matplotlib
matplotlib.rcParams['legend.handlelength'] = 0
matplotlib.rcParams['legend.numpoints'] = 1
Tous les paramètres de la légende. * Sont disponibles en tant que mots clés si vous ne souhaitez pas que le paramètre s'applique globalement à tous les tracés. Voir matplotlib.pyplot.legend documentation et cette question connexe:
le réglage de la légende (numpoints et points de dispersion) dans matplotlib ne fonctionne pas
Pour supprimer simplement les lignes une fois les données tracées:
handles, labels = ax.get_legend_handles_labels()
for h in handles: h.set_linestyle("")
ax.legend(handles, labels)
Vous devez utiliser un nuage de points ici
import matplotlib.pyplot as pyplot
Fig, ax = pyplot.subplots()
for i, (mark, color) in enumerate(Zip(
['s', 'o', 'D', 'v'], ['r', 'g', 'b', 'purple'])):
ax.scatter(i+1, i+1, color=color,
marker=mark,
facecolors='none',
label=i)
ax.set_xlim(0,5)
ax.set_ylim(0,5)
ax.legend(scatterpoints=1)
pyplot.show()