如何使用matplotlib设置所有子图的默认颜色循环?

我如何设置matplotlib绘制的图的默认颜色集? 我可以像这样设置一个特定的颜色映射

import numpy as np import matplotlib.pyplot as plt fig=plt.figure(i) ax=plt.gca() colormap = plt.get_cmap('jet') ax.set_color_cycle([colormap(k) for k in np.linspace(0, 1, 10)]) 

但有没有办法为所有地块设置相同的颜色,包括子图?

当然! 可以在.matplotlibrc文件中指定axes.color_cycle ,或者在运行时使用matplotlib.rcParamsmatplotlib.rc来设置它。

作为后者的一个例子:

 import matplotlib.pyplot as plt import matplotlib as mpl import numpy as np # Set the default color cycle mpl.rcParams['axes.color_cycle'] = ['r', 'k', 'c'] # Alternately, we could use rc: # mpl.rc('axes', color_cycle=['r','k','c']) x = np.linspace(0, 20, 100) fig, axes = plt.subplots(nrows=2) for i in range(10): axes[0].plot(x, i * (x - 10)**2) for i in range(10): axes[1].plot(x, i * np.cos(x)) plt.show() 

在这里输入图像描述

从matplotlib 1.5开始,不推荐使用mpl.rcParams ['axes.color_cycle']。 你应该使用axes.prop_cycle:

 import matplotlib as mpl mpl.rcParams['axes.prop_cycle'] = mpl.cycler(color=["r", "#e94cdc", "0.7"])