Die Lösung, die ich vorschlage, ist, zwei verschiedene proxy-artists für einen Eintrag Legende zu kombinieren, wie es hier beschrieben: Combine two Pyplot patches for legend.
Die Strategie ist dann die fillstyle
des ersten quadratischen Markierung left
einzustellen, während der andere auf right
eingestellt ist (siehe http://matplotlib.org/1.3.0/examples/pylab_examples/filledmarker_demo.html). Zwei verschiedene Farben können dann jeder Markierung zugeordnet werden, um den gewünschten zweifarbigen Legendeneintrag zu erzeugen.
Der folgende Code zeigt, wie dies durchgeführt werden kann. Beachten Sie, dass das Argument numpoints=1
in plt.legend
wichtig ist, um nur einen Marker für jeden Eintrag anzuzeigen.
import matplotlib.pyplot as plt
plt.close('all')
#---- Generate a Figure ----
fig = plt.figure(figsize=(4, 4))
ax = fig.add_axes([0.15, 0.15, 0.75, 0.75])
ax.axis([0, 1, 0, 1])
#---- Define First Legend Entry ----
m1, = ax.plot([], [], c='red' , marker='s', markersize=20,
fillstyle='left', linestyle='none')
m2, = ax.plot([], [], c='blue' , marker='s', markersize=20,
fillstyle='right', linestyle='none')
#---- Define Second Legend Entry ----
m3, = ax.plot([], [], c='cyan' , marker='s', markersize=20,
fillstyle='left', linestyle='none')
m4, = ax.plot([], [], c='magenta' , marker='s', markersize=20,
fillstyle='right', linestyle='none')
#---- Plot Legend ----
ax.legend(((m2, m1), (m3, m4)), ('Foo', 'Foo2'), numpoints=1, labelspacing=2,
loc='center', fontsize=16)
plt.show(block=False)
was zur Folge hat:
Haftungsausschluss: Dies wird nur für einen Zweifarben-Legende Eintrag arbeiten. Wenn mehr als zwei Farben erwünscht sind, kann ich mir keine andere Möglichkeit vorstellen, dies zu tun als die von @jwinterm (Python Matplotlib Multi-color Legend Entry)
beschriebene Methode