获取在图形上绘制的所有对象(艺术家)

Dil*_*rix 9 python plot matplotlib

我希望设置一种可以将正常图形(暗线、白色/透明背景)转换为伪倒置图形(浅色线、黑色/透明背景)的方法。我可以后处理反转图像,但直接反转颜色看起来很糟糕,所以我想(尝试)创建从一组颜色到另一组颜色的映射,然后将其应用于所有已添加的艺术家到(所有轴上)一个图形。

有没有办法访问已添加到图形中的所有对象(例如文本、散点图、线条、刻度标签等)?


编辑:我的动机是自动创建白色背景和黑色背景版本的数字。出版物(例如)总是(我认为)需要白色背景数字,而黑色背景数字可能更适合演示文稿(即谈话幻灯片)。虽然它不会麻烦,设置一个标志,并更改此基础上,例如,每个颜色

if dark:
    col_line = 'cyan'
    col_bg = 'black'
else:
    col_line = 'red'
    col_bg = 'white'

# ... plot ...
Run Code Online (Sandbox Code Playgroud)

做这样的事情会更酷,更方便(尽管有开销),

fig.savefig('dark.pdf')
invert(fig)
fig.savefig('light.pdf')
Run Code Online (Sandbox Code Playgroud)

Pau*_*sen 6

递归调用.get_children(),当返回的列表为空时停止。

  • `.get_children()` 是一种返回所有艺术家父级艺术家的方法。例如`plt.gcf().get_children()`返回轴和背景补丁;plt.gca().get_children() 返回轴背景艺术家、脊椎艺术家、轴艺术家、x/y 标签艺术家、背景补丁艺术家以及任何绘图元素,如线条、标记、图例(许多这些元素的子元素本身就是艺术家,例如一个图例通常包含多个艺术家)。 (2认同)