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

Kat*_*att 59 python colors 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)])
Run Code Online (Sandbox Code Playgroud)

但是有没有办法为所有情节设置相同的颜色集,包括子图?

Joe*_*ton 70

当然!无论是指定axes.color_cycle在你的.matplotlibrc文件,或者使用在运行时设置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()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • 对于那些想要更多颜色的人:mpl.rcParams['axes.color_cycle'] = ['blue', 'green', 'red', 'cyan', 'magenta', 'yellow', 'black', 'purple' , '粉红色', '棕色', '橙色', '蓝绿色', '珊瑚色', '浅蓝色', '柠檬色', '薰衣草色', '绿松石色', '深绿色', '棕褐色', '鲑鱼色', '金子'] (3认同)
  • `axes.color_cycle不是有效的rc参数` (2认同)
  • @endolith [在版本 1.5 及更高版本中,新密钥是 `axes.prop_cycle`](/sf/answers/26071/​​11181/52074) (2认同)

vol*_*myr 45

从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"]) 
Run Code Online (Sandbox Code Playgroud)


Joo*_*ark 5

在2.1.0版本中,以下内容对我有用,使用set_prop_cycle和模块cycler

from cycler import cycler
custom_cycler = (cycler(color=['r','b','m','g']))
ax.set_prop_cycle(custom_cycler)
Run Code Online (Sandbox Code Playgroud)

您可以添加额外的线路属性

custom_cycler = (cycler(color=['r','b','m','g']) + cycler(lw=[1,1,1,2]))
Run Code Online (Sandbox Code Playgroud)

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