gpt4 book ai didi

python - Matplotlib set_color_cycle 与 set_prop_cycle

转载 作者:IT老高 更新时间:2023-10-28 21:02:58 27 4
gpt4 key购买 nike

在 Matplotlib 中我最喜欢做的事情之一是设置颜色循环以匹配一些颜色图,以便生成线条图,线条图具有很好的颜色渐变。喜欢这个:

enter image description here

以前,这是使用 set_color_cycle 的一行代码:

ax.set_color_cycle([plt.cm.spectral(i) for i in np.linspace(0, 1, num_lines)])

但是,最近我看到一个警告:

MatplotlibDeprecationWarning: 
The set_color_cycle attribute was deprecated in version 1.5.
Use set_prop_cycle instead.

使用set_prop_cycle,我可以达到同样的效果,但是我需要import cycler,而且语法不太紧凑:

from cycler import cycler
colors = [plt.cm.spectral(i) for i in np.linspace(0, 1, num_lines)]
ax.set_prop_cycle(cycler('color', colors))

所以,我的问题是:

我是否正确使用了 set_prop_cycle? (并且以最有效的方式?)

有没有更简单的方法将颜色循环设置为颜色图?换句话说,有这样的神话功能吗?

ax.set_colorcycle_to_colormap('jet', nlines=30)

这是完整示例的代码:

import numpy as np
import matplotlib.pyplot as plt

ax = plt.subplot(111)
num_lines = 30

colors = [plt.cm.spectral(i) for i in np.linspace(0, 1, num_lines)]

# old way:
ax.set_color_cycle(colors)

# new way:
from cycler import cycler
ax.set_prop_cycle(cycler('color', colors))

for n in range(num_lines):
x = np.linspace(0,10,500)
y = np.sin(x)+n
ax.plot(x, y, lw=3)

plt.show()

最佳答案

因为新的属性循环器可以迭代除颜色之外的其他属性(例如线条样式),您需要指定 label,即要循环的属性。

ax.set_prop_cycle('color', colors)

虽然不需要导入和创建循环器;所以在我看来,新方法的唯一缺点是它使调用时间变长了 8 个字符。

没有将颜色图作为输入并创建循环器的神奇方法,但您也可以通过直接将 numpy 数组提供给颜色图来缩短颜色列表的创建过程。

colors = plt.cm.Spectral(np.linspace(0,1,30))

或组合

ax.set_prop_cycle('color',plt.cm.Spectral(np.linspace(0,1,30)))

关于python - Matplotlib set_color_cycle 与 set_prop_cycle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44806598/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com