2013-03-04 100 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

相关问题