我想在for循环中绘制两条线,这两条线都有一个标签,在一个for循环中生成多个绘图。在某些情况下,我希望图例同时包含两个行条目,有些条目只包含第一行的句柄和标签,将第二行的条目留空。在所有的情况下,我需要图例框有完全相同的大小,留下空白的情况下,我不想第二个条目。在
理论上,我只需要转动第二个手柄,然后标记为“不可见”。我找到了一些将Rectangle()
或Circle()
伪项设置为不可见的解决方案。但是,它们的大小与真实的图例条目不一样,这会导致不同的图例框高,这取决于我是在图例中使用两条线还是仅使用一条线和虚拟线。有解决办法吗?在
下面是一个与它看起来很接近的例子(当然,尽管产生了价值)。比如说,在每一次迭代中,我需要下面的图例项消失,而不改变图例框的大小或形状。我怎么能做到呢?在
import numpy as np
import matplotlib.pyplot as plt
for i in range(10):
x1 = x2 = y1 = y2 = np.random.rand(5)
yerr1 = yerr2 = .1
plt.figure()
plt.errorbar(x1, y1, yerr=yerr1, c='r', ls='-', marker='.', label='set1')
plt.errorbar(x2, y2, yerr=yerr2, c='k', ls='-', marker='.', label='set2')
# Get rid of error bars in legend
ax.gca()
handles, labels = ax.get_legend_handles_labels()
handles = [n[0:1] for n in handles]
plt.legend(handles, labels, bbox_to_anchor=(0.,1.,1.,0.), loc=3, numpoints=2, ncol=1 ,borderaxespad=0., mode='expand', labelspacing=0.5, borderpad=0.2, handletextpad=0.05)
plt.savefig('test_%d' % i)
plt.close()
谢谢你的例子。在
像这样的事情呢:
在这里,我使用了dummy_white_line来“擦除”label中的行(您在白色背景上有白线),并使用空字符串作为标签。在
正常曲线图:
无(即空假人)第二个标签的绘图:
相关问题 更多 >
编程相关推荐