我想在python的matplotib图中为图例添加一个空格。我在图例中有奇数条目,目前看起来像:
_________________________________________________________________
| handle1 - label1 handle3 - label3 handle5 - label5 |
| handle2 - label2 handle4 - label4 |
但是,数据在逻辑上与控件成对分组,所以如果它看起来像这样会更好:
_________________________________________________________________
| handle1 - label1 handle2 - label2 handle4 - label4 |
| handle3 - label3 handle5 - label5 |
在自动运行数据集上的for循环期间生成图例:
for [folder1,folder2, label] in folder_list:
parse_folder([folder1,folder2])
color = next(colorgen)
marker = next(markergen)
ax1.errorbar(percent[0],percent[1], yerr=per_std, c=color, fmt=marker, label=label)
if label == 'Flat Plate':
print 'tripped'
ax1.plot(np.NaN, np.NaN, '-', color='none', label=' ')
然后在结束时打电话
leg = ax1.legend(loc='lower left',fancybox=True,prop={'size':fontsize-2},ncol=4,bbox_to_anchor=(-0.1, -0.315))
有没有办法将这个空白点插入图例?
答案 0 :(得分:3)
您可以定义假白线
l = Line2D([0],[0],color="w")
然后绘制数据并将线/标记保存在变量
中f = figure()
ax = f.add_subplot(111)
l1, = ax.plot(1*arange(10))
l2, = ax.plot(2*arange(10))
l3, = ax.plot(3*arange(10))
l4, = ax.plot(4*arange(10))
l5, = ax.plot(5*arange(10))
最后,您按以下方式致电legend
ax.legend((l1,l,l2,l3,l4,l5),("label1","","label2","label3","label4","label5"),
loc='upper center',fancybox=True,ncol=3)
其中每行/标记与不同的标签相关联。在您希望在图例中有间隙的位置插入伪造的白线l
并将空白字符串与其关联。
希望它有所帮助。
答案 1 :(得分:3)
Farenorth的解决方案(在对Op的评论中给出)给出了最清晰的答案。
在需要空白位置的位置添加其他命令,使用np.NaN
获取数据并将颜色设置为none
。
ax1.plot(np.NaN, np.NaN, '-', color='none', label='')
请注意,这必须是相同的类型,因为用于自动生成Legend的方法会顺序获取不同的绘图类型,即所有绘图,然后是所有错误栏等,因此空白条目需要与保持按功能调用的顺序。