我想用一些测量数据绘制曲线。它作为一个数组提供,其中包含[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
中的值。我该怎么做?
答案 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.spectral
(or 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,而是值得关注的资源。希望它有所帮助。