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

时间:2017-04-26 14:25:02

标签: python matplotlib plot

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

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

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

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

# ... plot ...

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

fig.savefig('dark.pdf')
invert(fig)
fig.savefig('light.pdf')

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

您可以使用不同的风格或根据需要更改现有风格,而不是自己更改所有可能艺术家的所有属性。

E.g。您可以从"dark_background"样式开始,然后使用rcParams调整其他一些参数。

import numpy as np
import matplotlib.pyplot as plt
plt.style.use("dark_background")

style = {"lines.linewidth" : 2,
         "axes.facecolor" : "#410448"}
plt.rcParams.update(style)

plt.plot(np.sin(np.linspace(0, 2 * np.pi)))

plt.show()

enter image description here