是否有与此代码等效的内容
plt.plot([1,2,3],[1,2,3],label='22')
z = plt.legend()
tm = z.get_lines()
tm[0].get_color()
但对于错误栏?
plt.errorbar([1,2,3],[1,2,3],[0.5,0.5,0.5],label='22')
z = plt.legend()
tm = z.get_ ????
tm[0].get_color()
我做了z.get + 这就是我所看到的:
我尝试了很多但没有运气
谢谢。
答案 0 :(得分:0)
编辑:感谢邮件列表中的人员,添加了正确的解决方案。
到目前为止,我最好的解决方案是这样的:
plt.errorbar([1,2,3],[1,2,3],[0.5,0.5,0.5])
plt.gca().set_prop_cycle(None) # Reset the color cycle to get the same one
plt.plot([1,2,3],[1,2,3],label='22')
z = plt.legend()
tm = z.get_lines()
tm[0].get_color()
这是再次绘制数据。当然,您在图例中不会得到相同的标记;就我而言,这不是问题(我通过给标签上色替换它们),而是YMMV。
斯科特·拉斯利(Scott Lasley)暗示,这样做的方法是操纵汤姆·卡斯韦尔(Tom Caswell)在回答OP时指出的plt.legend().legendHandles
。不过,它们有两个微妙之处,第一个是我们正在处理LineCollection
而不是Paul Hobson指出的Line2D
(这样我们就可以在返回中获得数组),第二个是将颜色作为RGBA返回数组而不是HEX值,这可能很重要,具体取决于您的用例。因此,要获得与plt.plot()
的{{1}}情况完全相同的输出,您需要执行以下操作:
plt.errorbar()
如果您不关心颜色格式,则可以删除import matplotlib.pyplot as plt
from matplotlib.colors import to_hex
plt.errorbar([1,2,3],[1,2,3],[0.5,0.5,0.5])
z = plt.legend()
tm = z.legendHandles
to_hex(tm[0].get_colors()[0]) # tm[0].get_colors() looks like [[r g b a]]
的导入和使用。