[英]How to cycle through colors in a plot for each iteration of a for loop
我正在尝试运行一个 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")
我想为每个j
创建一条具有不同颜色的线。 如果答案很明显,我很抱歉。 我是 python 的新手。
就像现在一样,将为每一行采用新颜色。 如果你想限制选择并遍历一个列表,你可以使用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())
我添加了 colors 的列表。 我很确定它们可以是 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")
从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")
您有几个使用 matplotlib.pylplot 的选项。
除了已经提供的解决方案之外,您还可以直接定义颜色并根据 for 循环更改值:
# Parameters
ntraj=10
n=20
p=0.4
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
ctemp = 0.1+(j-1)/ntraj
plt.plot(range(n+1),xtraj,'b-',alpha=0.2, color=(ctemp, ctemp, ctemp))
plt.title("Simple Random Walk")
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.