虽然其他答案肯定是正确的,但使用样式或特定 rcParams 或使用 tick_params 函数似乎更容易解决这个问题
样式
Matplotlib 提供dark_background 样式。您可以使用它,例如通过plt.style.use("dark_background"):
import matplotlib.pyplot as plt
import numpy as np
plt.style.use("dark_background")
fig = plt.figure()
data = np.clip(np.random.randn(150,150),-1,1)
plt.imshow(data)
plt.title('my random fig')
plt.colorbar()
plt.savefig('temp2.png', facecolor="black", edgecolor="none")
plt.show()
或者,如果您需要创建具有和不具有黑色背景的相同图形,可以在上下文中使用样式。
import matplotlib.pyplot as plt
import numpy as np
def create_plot():
fig = plt.figure()
data = np.clip(np.random.randn(150,150),-1,1)
plt.imshow(data)
plt.title('my random fig')
plt.colorbar()
return fig
# create white background plot
create_plot()
plt.savefig('white_bg.png')
with plt.style.context("dark_background"):
create_plot()
plt.savefig('dark_bg.png', facecolor="black", edgecolor="none")
在Customizing matplotlib 教程中了解更多信息。
具体的 rcParams
您可以单独设置所需的rcParams,以在脚本中所需的位置构成样式。
例如使任何文本变为蓝色并将 yticks 变为红色:
params = {"text.color" : "blue",
"xtick.color" : "crimson",
"ytick.color" : "crimson"}
plt.rcParams.update(params)
这也会自动为刻度线着色。
自定义刻度和标签
您也可以单独自定义图中的对象。对于刻度和刻度标签,有一个 tick_params 方法。例如。只使颜色条的刻度变为红色,
cbar = plt.colorbar()
cbar.ax.tick_params(color="red", width=5, length=10)