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

Posted

技术标签:

【中文标题】如何使用 matplotlib 为所有子图设置默认颜色循环?【英文标题】:How to set the default color cycle for all subplots with matplotlib? 【发布时间】:2012-03-12 23:12:02 【问题描述】:

如何为使用 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)])

但是有什么方法可以为所有图(包括子图)设置相同的颜色集?

【问题讨论】:

相关***.com/questions/4971269/… 【参考方案1】:

当然! specify axes.color_cycle in your .matplotlibrc file 或在运行时使用 matplotlib.rcParamsmatplotlib.rc 设置它。

以后者为例:

import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np

# Set the default color cycle
mpl.rcParams['axes.prop_cycle'] = mpl.cycler(color=["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()

【讨论】:

对于那些想要更多颜色的人:mpl.rcParams['axes.color_cycle'] = ['blue', 'green', 'red', 'cyan', 'magenta', 'yellow' , '黑色', '紫色', '粉色', '棕色', '橙色', '蓝绿色', '珊瑚色', '浅蓝色', '青柠色', '薰衣草色', '绿松石色', '深绿色', '棕褐色, '三文鱼', '黄金'] axes.color_cycle is not a valid rc parameter @endolith in version 1.5 and later, the new key is axes.prop_cycle @LudoSchmidt 我刚刚花了大约 4 个小时来处理颜色循环。但你的清单更好。干得好。 如何在不重启内核的情况下将其设置回默认值?我的意思是,假设我只是运行mpl.rcParams['axes.prop_cycle'] = mpl.cycler(color=["r", "k", "c"]) 并绘制一堆图。现在我想恢复默认的 matplotlib 颜色并绘制另一组图。我该怎么做?【参考方案2】:

从 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"]) 

【讨论】:

【参考方案3】:

在 2.1.0 版本中,以下对我有用,使用 set_prop_cycle 和模块循环器

from cycler import cycler
custom_cycler = (cycler(color=['r','b','m','g']))
ax.set_prop_cycle(custom_cycler)

你可以添加额外的线属性

custom_cycler = (cycler(color=['r','b','m','g']) + cycler(lw=[1,1,1,2]))

'ax' 来自 ax=plt.axes() 或任何轴生成器

【讨论】:

这是第三方模块吗? 我不这么认为。在我的记忆中,它包含在 matplotlib 中。

以上是关于如何使用 matplotlib 为所有子图设置默认颜色循环?的主要内容,如果未能解决你的问题,请参考以下文章

Matplotlib:获取子图以填充图形

matplotlib 子图的行标题

Matplotlib 在所有子图上显示 x-ticks 和唯一的 y 标签

python使用matplotlib可视化subplots子图subplots绘制子图并为可视化的多个子图设置共享的X轴

python使用matplotlib可视化subplots子图subplots绘制子图并为可视化的多个子图设置共享的Y轴

如何为所有子图设置一个颜色条