在matplotlib中设置折线图的连续颜色图

时间:2019-05-04 00:50:34

标签: python matplotlib

我一直在尝试可视化保存在数组中的路径,并沿线应用颜色渐变。

这是我到目前为止所拥有的:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib import cm

arr = np.array([[24.99487317, 55.466666  ,  0.        ],
       [24.99487367, 55.46666917,  1.        ],
       [24.99487217, 55.46667017,  2.        ],
       [24.99487183, 55.4666715 ,  3.        ],
       [24.99487133, 55.466673  ,  4.        ],
       [24.99487267, 55.466674  ,  5.        ]])

fig, ax = plt.subplots()
ax.plot(arr[:, 0], arr[:, 1], c=cm.hot(arr[:, 2]), linestyle='dashed')
plt.show()

我希望对较新的点进行更高的评估(或在“热”色图上将其更亮)。我总会以某种方式得到错误:

ValueError: Invalid RGBA argument: array([[0.0416, 0.    , 0.    , 1.    ],
       [1.    , 1.    , 1.    , 1.    ],
       [1.    , 1.    , 1.    , 1.    ],
       ...,
       [1.    , 1.    , 1.    , 1.    ],
       [1.    , 1.    , 1.    , 1.    ],
       [1.    , 1.    , 1.    , 1.    ]]) 

我在文档中找不到任何合适的示例,并且我不知道cm.hot的返回值必须具有哪种形状(我尝试了多种方式,或者使用plt.scatter和cmap / norm参数,但是相同错误)

我该如何应用cmap来使线变得越来越亮以便以后进行观察?

1 个答案:

答案 0 :(得分:0)

尝试使用分散的seaborn

fig, ax = plt.subplots(1,1, figsize=(12,8))
ax.plot(arr[:,0], arr[:,1])
sns.scatterplot(arr[:, 0], arr[:, 1], 
                ax=ax, hue=arr[:,2], 
                palette=plt.cm.hot,
                legend=None)
plt.show()

输出:

enter image description here