提问者:小点点

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


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

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

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

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个答案

匿名用户

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

匿名用户

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

例如,您可以先使用“深色背景”样式,然后使用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()