Skip to main content
 首页 » 编程设计

python之如何将图例添加到 matplotlib 事件图中

2025年05月04日12zengkefu

有谁知道如何为 matplotlib 的新绘图类型 eventplot 添加图例?

我尝试过很多事情都没有成功,包括:

labels1 = ['red', 'green', 'blue', 'yellow', 'magenta', 'cyan'] 
ax2.eventplot(data1, colors=colors1, lineoffsets=lineoffsets1, 
              linelengths=linelengths1, orientation='vertical', label=labels1) 
ax2.legend() 

这些编辑是在示例代码上进行的,eventplot_demo.py 位于 http://matplotlib.org/dev/api/pyplot_api.html#matplotlib.pyplot.eventplot

请您参考如下方法:

长话短说

只是,ax.legend( list_of_names )

解释

来自你的代码,

labels1 = ['red', 'green', 'blue', 'yellow', 'magenta', 'cyan'] 
ax2.eventplot(data1, colors=colors1, lineoffsets=lineoffsets1, 
              linelengths=linelengths1, orientation='vertical') 
ax2.legend( labels1 ) 

以matplotlib.pyplot.eventplot中的例子为例

import matplotlib.pyplot as plt 
import numpy as np 
import matplotlib 
 
# Fixing random state for reproducibility 
np.random.seed(19680801) 
 
# create random data 
data = np.random.random([6, 50]) 
 
# set different colors for each set of positions 
colors = np.array([[1, 0, 0], 
                    [0, 1, 0], 
                    [0, 0, 1], 
                    [0, 0, 0], 
                    [1, 0, 1], 
                    [0, 1, 1]]) 
# label each set 
labels = ['John','Mike','Bob','Sam','Alex','Eva'] 
 
fig, axs = plt.subplots(1,1) 
 
# create a horizontal plot 
axs.eventplot(data,color=colors) 
# Just needed axs.legend(labels) the everything else is for the positioning 
axs.legend(labels, bbox_to_anchor=(0., 1.0, 1., .10), loc=3,ncol=3, mode="expand", borderaxespad=0.) 
plt.show() 

最终结果