如何在 for 循环的每次迭代中循环显示图中的颜色

use*_*933 1 python for-loop colors matplotlib

我正在尝试运行一个 for 循环,为 for 循环的每次迭代循环遍历颜色。我发现类似的问题循环显示颜色,但不依赖于特定的 for 循环。我在下面提供一些链接:

如何为 matplotlib 中的图形中的每条绘制线选择新颜色?

matplotlib.cycler

颜色循环仪演示

我的代码用于简单的随机游走

# Parameters
ntraj=10
n=20
p=0.4

# Initialize holder for trajectories
xtraj=np.zeros(n+1,float)

# Simulation
for j in range(ntraj):
    for i in range(n):
        xtraj[i+1]=xtraj[i]+2.0*np.random.binomial(1,p)-1.0

    plt.plot(range(n+1),xtraj,'b-',alpha=0.2)
plt.title("Simple Random Walk")  
Run Code Online (Sandbox Code Playgroud)

我想为每个创建一条具有不同颜色的线j。如果答案是显而易见的,我深表歉意。我是 python 的新手。

Jad*_*win 6

我添加了颜色列表。我很确定它们可以是 RGB 或 Hex。然后在 j 循环内颜色将切换到下一个索引。

colors = ['b','g','r','c','m','y']
# Parameters

# Simulation
for j in range(ntraj):
    color = colors[j % len(colors)]
    for i in range(n):
        xtraj[i+1]=xtraj[i]+2.0*np.random.binomial(1,p)-1.0

    plt.plot(range(n+1),xtraj,"{}-".format(color),alpha=0.2)
plt.title("Simple Random Walk")  
Run Code Online (Sandbox Code Playgroud)


Pyg*_*irl 5

从中选择您喜欢的任何调色板matplotlib.cm

尝试:

# Parameters
ntraj=10
n=20
p=0.4

colors = plt.cm.jet(np.linspace(0,1,ntraj))# Initialize holder for trajectories
xtraj=np.zeros(n+1,float)


# Simulation
for j in range(ntraj):
    for i in range(n):
        xtraj[i+1]=xtraj[i]+2.0*np.random.binomial(1,p)-1.0

    plt.plot(range(n+1),xtraj,'b-',alpha=0.2, color=colors[j])

plt.title("Simple Random Walk")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


小智 5

现在,每条线都会采用新的颜色。如果您想限制选择并循环浏览列表,您可以使用itertools.cycle

from itertools import cycle

colours = cycle(['red', 'green', 'blue'])


# Simulation
for j in range(ntraj):
    for i in range(n):
        xtraj[i+1]=xtraj[i]+2.0*np.random.binomial(1,p)-1.0

    plt.plot(range(n+1),xtraj,'b-',alpha=0.2, color=colours.next())

Run Code Online (Sandbox Code Playgroud)

  • 这个答案已经过时了,使用“next(colors)”而不是“colors.next()”,请参阅:/sf/answers/366636511/ (3认同)