Могу ли я поставить смену цвета в цикле? - PullRequest
4 голосов
/ 03 апреля 2012

Так что, в общем-то, что мне интересно, это то, что находится внизу моего кода, когда я строю график своих испытаний, есть ли способ запустить там генератор цвета? Или, если выразиться точнее, могу ли я составить список теплых цветов и поместить его в мою функцию графика, где он проходит через каждый цвет в списке по мере прохождения цикла, и поэтому мой график будет состоять только из теплых цветов?

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 Ответ

14 голосов
/ 03 апреля 2012

Похоже, вы просто хотите что-то подобное?

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 - самый высокий).

Список доступных цветовых карт см. здесь .Вы можете получить доступ к обратной версии любого из них с помощью name_r (например, обратная версия mpl.cm.autumn - это mpl.cm.autumn_r).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...