如何从 matplotlib 中的 numpy 数组创建颜色图?

How to create a colormap from a numpy array in matplotlib?

我有一个数据框,其中包含一个带有 numpy 数组的列和另一个带有浮点数的列,如下所示:

arrays          | floats
------------------------
(1.2, 3.4, 5.6) |  4.5
(1.7, 4.4, 8.1) |  5.5

我想在单个图中绘制每个数组,但我需要线条的颜色取决于与其关联的浮点数。

到目前为止,我已经这样做了:

# Plot
import matplotlib.pyplot as plt
import matplotlib.colors as mcolors
import matplotlib.cm as cm

colormap = cm.jet
normalize = mcolors.Normalize(vmin=np.min(floats.values), vmax=np.max(floats.values))
s_map = cm.ScalarMappable(norm=normalize, cmap=colormap)

x_axis = np.linspace(0, 10, len(arrays.values[0]))

for arr, flt in in zip(arrays.values, floats.values):
   plt.plot(x_axis, arr)
plt.show()

我知道可以传递颜色:plt.plot(x_axis, arr, color='b'),但我如何根据第二列的值使用 s_map 变量来执行此操作?

我在这里阅读了类似的问题,但是 none 解决了我的问题。

df = pd.DataFrame({'arrays':[(1.2, 3.4, 5.6),(1.7, 4.4, 8.1)],'floats':[4.5,5.5]})

s_map.to_rgba 与每个数组的浮点值一起使用。

colormap = cm.jet
normalize = mcolors.Normalize(vmin=np.min(floats), vmax=np.max(floats))
s_map = cm.ScalarMappable(norm=normalize, cmap=colormap)

for arr, flt in zip(df.arrays.values, df.floats.values):
    plt.plot(arr,color=s_map.to_rgba(flt))
plt.show()