我想在matplotlib中创建一个图例条目,看起来像这样:
对于给定的图例项,它具有多种颜色。代码如下所示,该代码输出一个红色矩形。我想知道我需要做什么来覆盖一种颜色在另一种颜色上?或者有更好的解决方案吗?
import matplotlib.patches as mpatches
import matplotlib.pyplot as plt
red_patch = mpatches.Patch(color='red', label='Foo')
plt.legend(handles=[red_patch])
plt.show()
5条答案
按热度按时间bd1hkmkf1#
我建议的解决方案是将两个不同的代理艺术家组合为一个条目图例,如下所述:将两个Pyplot面片合并为图例。
然后,策略是将第一个正方形标记的
fillstyle
设置为left
,而另一个则设置为right
(参见http://matplotlib.org/1.3.0/examples/pylab_examples/filledmarker_demo.html)。然后可以将两种不同的颜色归属于每个标记,以便产生所需的双色图例条目。下面的代码展示了如何做到这一点。请注意,
plt.legend
中的numpoints=1
参数非常重要,以便为每个条目只显示一个标记。其结果是:
**免责声明:**这只适用于双色图例条目。如果需要两种以上的颜色,除了@jwinterm(Python Matplotlib Multi-color Legend Entry)描述的方法之外,我想不出其他方法来实现这一点
w9apscun2#
也许另一个黑客处理两个以上的补丁。请确保您根据列数对句柄/标签进行排序:
这导致:
a1o7rhls3#
我非常喜欢拉斐尔的回答。这是一个带圆圈的版本。此外,我对代码进行了重构和修整,使其更加模块化。
示例用法和图像,请注意,一些图例句柄具有
radius_factor=0.5
,因为真实大小太小。vnzz0bqm4#
实际上有一个正确的方法来实现这个目标,如matplotlib-doc中 “实现自定义图例处理程序” 中所解释的那样:
tzdcorbm5#
可能不是你想要的,但是你可以手动地在图上放置补丁和文本。例如: