2013-03-04 97 views
3

我想用某些測量數據繪製曲線。它可用作包含[t,b]格式項的數組,其中t是我想繪製的參數,b是描述測量設備狀態的字符串。我現在想要繪製t的值,並根據b的值對線進行着色。到目前爲止我的代碼是根據參數繪製具有不同顏色的曲線

import pylab as pl 
measurements = [[0, "a"], [1, "b"], [2, "c"]] 
times = pl.arange(0, 3, 1) 
values = zip(*measurements)[0] 
parameters = zip(*measurements)[1] 
pl.plot(times, values) 
pl.show() 

該行現在應該有不同的顏色,這取決於parameters值。我該怎麼做呢?

回答

2

最好的方法是使用matplotlib的colormap API。

from matplotlib import pyplot as pl 
from matplotlib import cm 

pl.scatter(times, values, c = cm.spectral(1.*values/max(values))) 

很明顯,您會想使用其他函數從數據中獲取顏色。雖然在一般,cm.spectralor any other colormap)將返回給定的0和1或0和255

作爲一般性評論之間的int之間的浮色,你也可能會更好使用numpy的陣列,而不是試圖zip將您的數據放在一起。比這個例子更復雜的數據結構可能會更容易。

import numpy as np 
from matplotlib import pyplot as pl 
from matplotlib import cm 

measurements = np.array([[0, "a"], [1, "b"], [2, "c"]]) 
times = np.arange(3) 
values = np.array(measurements[:,0], dtype=float) 
parameters = np.array(measurements[:,1], dtype='S1') 

pl.scatter(times, values, c = cm.spectral(values/max(values))) 
pl.show() 
+0

不幸的是,代碼不起作用(並不僅僅是因爲括號丟失),我也沒有找到一個顏色地圖教程,幫助我在我的情況。 – 2013-03-04 17:39:22

+0

對不起,應該是'scatter',以允許顏色成爲相同形狀的顏色列表。請參閱編輯。 – askewchan 2013-03-04 17:41:55

-4

繪製圖表最簡單的方法很可能是使用谷歌的圖表API:https://developers.google.com/chart/

這不是純粹的蟒蛇所有,但值得一看的資源。希望能幫助到你。

+0

嗯,不,那是不幸的。我一定會使用pylab。整個事情被嵌入到更多的Python代碼中,所以我真的懷疑它是與Google Chart接口的最簡單方式。 – 2013-03-04 17:06:33

相關問題