如何使用 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.rcParams
或 matplotlib.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 在所有子图上显示 x-ticks 和唯一的 y 标签
python使用matplotlib可视化subplots子图subplots绘制子图并为可视化的多个子图设置共享的X轴
python使用matplotlib可视化subplots子图subplots绘制子图并为可视化的多个子图设置共享的Y轴