2013-11-21 149 views
2

這裏是相對編程新手。我很難弄清楚如何在一系列迭代中繪製插值函數,隨着迭代指數的增加,圖形將從黑色漸變到逐漸變淺的灰色陰影。matplotlib:通過依賴迭代的灰度圖着色線圖

例如,

import numpy as np 
import matplotlib.pyplot as plt 
from scipy.interpolate import interp1d 

for t in np.arange(0.,2., 0.4): 
    x = np.linspace(0.,4, 100) 
    y = np.sin(x-2*t) + 0.01 * np.random.normal(size=x.shape) 
    yint = interp1d(x, y) 
    plt.plot(x, yint(x)) 

plt.show() 

產生 enter image description here

我想藍色正弦函數是黑色,其餘變得更輕和更灰色爲t的增加(在右邊)。我會怎麼做?

謝謝大家的慷慨幫助!

回答

4

參見:http://matplotlib.org/api/axes_api.html#matplotlib.axes.Axes.plot

例如您可以將plt.plot(x, yint(x), color=(0.5, 0.5, 0.5))設置爲灰線。不管你喜歡什麼,你都可以設置值(0.0是黑色的,1.0是白色的)。一個簡單的例子:

import numpy as np 
import matplotlib.pyplot as plt 
from scipy.interpolate import interp1d 

for t in np.arange(0.,2., 0.4): 
    x = np.linspace(0.,4, 100) 
    y = np.sin(x-2*t) + 0.01 * np.random.normal(size=x.shape) 
    yint = interp1d(x, y) 
    print t 
    col = (t/2.0, t/2.0, t/2.0) 
    plt.plot(x, yint(x), color=col) 

plt.show() 

enter image description here

+0

那太好了!謝謝!但是有一個問題:通過查看文檔並瀏覽代碼,我仍然無法弄清楚col =(t/2.0,t/2.0,t/2.0)這一行。爲什麼它包含3個相同的元素?每個術語是指什麼(例如,開始顏色,結束顏色等)?它似乎也可以無限期地在括號內添加更多的t/n ..這裏發生了什麼? –

+1

類似'(2,4,5.0,「something」)'的元素是[元組](http://docs.python.org/2/tutorial/datastructures.html#tuples-and-sequences)。它可以有任意數量的元素。在這種情況下,我們正在設置一個'RGB'元組。第一個數字是紅色強度,第二個數字是藍色,第三個數字是綠色。當這些相同時,你會變得灰暗。所以我們創建了一個代表灰色的元組,然後將其用於線條顏色。如果您向下滾動到「默認」開始的段落,您可以在我給出的鏈接中看到如何執行此操作的不同選項。 – YXD

+1

如果你不熟悉元組,那麼我建議花一點時間去瀏覽[Python Tutorial](http://docs.python.org/2/tutorial/),前五個部分至少。 – YXD