根据参数绘制具有不同颜色的曲线

时间:2013-03-04 16:59:21

标签: python matplotlib

我想用一些测量数据绘制曲线。它作为一个数组提供,其中包含[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 个答案:

答案 0 :(得分: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()

答案 1 :(得分:-4)

绘制图表的最简单方法可能是使用Google图表API:https://developers.google.com/chart/

这根本不是纯粹的python,而是值得关注的资源。希望它有所帮助。