use*_*933 1 python for-loop colors matplotlib
我正在尝试运行一个 for 循环,为 for 循环的每次迭代循环遍历颜色。我发现类似的问题循环显示颜色,但不依赖于特定的 for 循环。我在下面提供一些链接:
如何为 matplotlib 中的图形中的每条绘制线选择新颜色?
我的代码用于简单的随机游走
# 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 的新手。
我添加了颜色列表。我很确定它们可以是 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)
从中选择您喜欢的任何调色板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)
归档时间: |
|
查看次数: |
10911 次 |
最近记录: |