我希望设置一种方法,可以将正常图形(深色线条,白色/透明背景)转换为伪倒置图形(浅色线条,黑色/透明背景)。我可以在处理后反转图像,但是直接反转颜色看起来很糟糕,所以我想转而(尝试)创建从一组颜色到另一组颜色的映射,然后将其应用于所有添加到(所有轴上)的艺术家图。
是否有办法访问添加到图形中的所有对象(例如文本、散点、线条、标签等)?
编辑:我的动机是自动创建白底和黑底版本的图形。(我认为)出版物总是需要白底数字(例如),而黑底数字可能更适合演示(即谈话幻灯片)。虽然设置一个标志并在此基础上更改每种颜色并不麻烦,例如。
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')
递归调用.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()