我可以把换色器放在一个循环中吗?

时间:2012-04-03 18:16:52

标签: python colors numpy matplotlib

所以基本上我想知道的是,当我绘制试验图时,我的代码底部是否有办法在那里运行颜色生成器?或者更明确地说,我可以制作一个暖色调列表,并将其放入我的绘图函数中,当循环遍历时,它会在列表中的每种颜色中运行,因此我的绘图只包含暖色调吗?

from numpy import *
from pylab import show,plot
from scipy.special import erfinv    
n = 366 #number of days     
ntrials = 5000
u = random.rand(ntrials)
v = sqrt(2.)*erfinv(2.*u-1.)
mu = 0                                          
sigma = .05                             
investment = 1000.              
data = empty((ntrials,n))
data[:,0] = investment        
for t in range(n-1):
    u = random.rand(ntrials)
    v = sqrt(2.)*erfinv(2.*u-1.)
    epsilon = v
    data[:,t+1] = (1. + mu +sigma*epsilon)*data[:,t]

data2 = data.sum(axis=0)
woo = data2[-1]/ntrials                 
data3 = data2[-1]
x = linspace(0,n,n)
for t in range(n):
    plot(x,data[t,:])    
show()

1 个答案:

答案 0 :(得分:14)

听起来你只是想要这样的东西?

import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np

# Generate data...
nx, nsteps = 100, 20
x = np.linspace(0, 1, nx)
data = np.random.random((nx, nsteps)) - 0.5
data = data.cumsum(axis=0)
data = data.cumsum(axis=1)

# Plot
cmap = mpl.cm.autumn
for i, y in enumerate(data.T):
    plt.plot(x, y, color=cmap(i / float(nsteps)))

plt.show()

enter image description here

关键是调用matplotlib色彩映射实例的值介于0和1之间将返回一种颜色(其中0是色彩图中最低的颜色,1是最高的颜色)。

有关可用色彩映射的列表,see here。您可以使用name_r访问其中任何一个版本的反转版本(例如mpl.cm.autumn的反转版本为mpl.cm.autumn_r)。