我正在创建一个“事件图”,目前如下所示:
但是,我不知道如何为每个颜色组添加图例。这就是目前情节的创建方式:
handles = dict()
for i, channel_events in enumerate(channel_event_list):
for event in channel_events:
start = event[0]
end = event[1]
y = (i, i + padding)
c = 'red' if colors is None else colors[i]
h = plt.fill_between([start, end], y[0], y2=y[1], color=c)
if c not in handles:
handles[c] = list()
handles[c].append(h)
Run Code Online (Sandbox Code Playgroud)
我以为我可以使用fill_between()as 句柄的输出,但似乎我错了。
那么,仅针对此处的颜色获取图例的最简单方法是什么?
要从调用fill_between或任何其他调用创建图例句柄,PolyCollection您可以使用此 PolyCollection 并将其提供给图例。
import matplotlib.pyplot as plt
h = plt.fill_between([1,2,3],[1,3,4], y2=[1,2,3], color="#c1009b")
plt.legend(handles=[h], labels=["MyLabel"])
plt.show()
Run Code Online (Sandbox Code Playgroud)
一种更简单的方法是直接使用绘图label的参数fill_between(就像任何其他绘图一样)来创建自动图例条目。
import matplotlib.pyplot as plt
plt.fill_between([0,1,2],[4,3,4], y2=[3,2.5,3], color="#c1009b", label="Label1")
plt.fill_between([0,1,1.3],[1,2,0.5], y2=[0,-1,0], color="#005ec1", label="Label2")
plt.fill_between([2,3,4],[0.5,1,0], y2=[-1,-1,-1.5], color="#005ec1", label="_noLabel")
plt.legend()
plt.show()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4351 次 |
| 最近记录: |