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. 我该怎么做呢?

4

2 回答 2

2

最好的方法是使用 matplotlib 的colormapAPI。

from matplotlib import pyplot as pl
from matplotlib import cm

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

显然,您需要使用其他一些函数从数据中获取颜色。一般来说,cm.spectral(或任何其他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()
于 2013-03-04T17:06:07.320 回答
-6

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

这根本不是纯粹的python,而是值得一看的资源。希望能帮助到你。

于 2013-03-04T17:01:57.130 回答