擅长:python、mysql、java
<h2>垂直标记所有行</h2>
<p>如果目标是使图例中的每一行都垂直标记,而不是水平标记,则可以通过<code>handler_map</code>更新图例句柄。在</p>
<pre><code>import numpy as np
import matplotlib.pyplot as plt
from matplotlib.legend_handler import HandlerLine2D
plt.plot([1,3,2], label='something')
plt.plot([.5,.5], [1,3], label='something else')
def update_prop(handle, orig):
handle.update_from(orig)
x,y = handle.get_data()
handle.set_data([np.mean(x)]*2, [0, 2*y[0]])
plt.legend(handler_map={plt.Line2D:HandlerLine2D(update_func=update_prop)})
plt.show()
</code></pre>
<p><a href="https://i.stack.imgur.com/4evzn.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/4evzn.png" alt="enter image description here"/></a></p>
<h2>微型复制线</h2>
<p>如果目标是获得图例中绘制线的缩略版本,原则上可以使用<a href="https://stackoverflow.com/a/52340163/4124317">Using a miniature version of the plotted data as the legend handle</a>的答案。有一个小小的修改需要考虑到一个可能是0宽度的边界框,我现在也编辑到原来的答案。在这里,它看起来像:</p>
^{pr2}$
<p><a href="https://i.stack.imgur.com/6Qtik.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/6Qtik.png" alt="enter image description here"/></a></p>