无法更改 matplotlib 中的默认颜色图

Cannot change default colormap in matplotlib

我正在尝试为我的 jupyter 笔记本中的 matplotlib 设置 default colormap(不仅仅是特定图的颜色)( Python 3).我找到了命令:plt.set_cmap("gray") 和 mpl.rc('image', cmap='gray'),它们应该将默认颜色映射设置为灰色,但两者命令在执行过程中被忽略,我仍然得到旧的颜色图。

我试过这两个代码:

import matplotlib as mpl
mpl.rc('image', cmap='gray')
plt.hist([[1,2,3],[4,5,6]])

import matplotlib.pyplot as plt
plt.set_cmap("gray")
plt.hist([[1,2,3],[4,5,6]])

它们都应该生成带有灰色调的图。但是,直方图有颜色,对应于默认颜色图的前两种颜色。我没有得到什么?

您可以在 matplotlib 绘图函数中使用颜色参数。

import matplotlib.pyplot as plt
plt.hist([[1,2,3],[4,5,6]], color=['gray','gray'])

使用这种方法,您必须为每个数据集指定配色方案,因此需要一个颜色数组,正如我在上面所说的那样。

如果您使用的 matplotlib 版本介于 prio 和 2.0 之间,您需要使用 rcParams(仍在较新版本中工作):

import matplotlib.pyplot as plt

plt.rcParams['image.cmap'] = 'gray'

由于您要传递两个数据集,因此您需要指定两种颜色。

plt.hist([[1,2,3],[4,5,6]], color=['black','purple'])

感谢 Chris 的评论,我发现了问题,我需要更改的不是默认的 colormap,而是默认的 color cycle[=19] =].它在这里描述:How to set the default color cycle for all subplots with matplotlib?

import matplotlib as mpl
import matplotlib.pyplot as plt
from cycler import cycler

# Set the default color cycle
colors=plt.cm.gray(np.linspace(0,1,3))
mpl.rcParams['axes.prop_cycle'] = mpl.cycler(color=colors)
plt.hist([[1,2,3],[4,5,6]])