首页 > 解决方案 > 在 matplotlib 中创建一个没有可映射的颜色条

问题描述

要打电话plt.colorbar,我需要一个“可映射的”,我通常由plt.imshowor创建plt.contour。没有这些,是否有一种“合理”的方式来创建可映射的?

更具体地说,我的代码如下:

import matplotlib.pyplot as plt
from matplotlib.cm import viridis

colors = viridis(np.linspace(0,1,10))
for i, col in enumerate(colors):
    plt.plot(i, 'o', color = col)

然后我想打电话plt.colorbar,但我没有可映射的。我通常的工作是cmap = plt.scatter(np.linspace(0,1), np.full(50, np.nan), c = np.linspace(0,1)),它工作得很好,但我觉得非常难看。

标签: pythonmatplotlibcolorbar

解决方案


在这种情况下,您scatter不仅可以使用生成可映射对象,还可以一次完成所有工作(绘制点,并返回相应的可映射对象)。

编辑

一般来说,Matplotlib 总是提供一种创建对象集合的方法(例如参见LineCollection 使用示例),允许绘制具有不同属性(如颜色、线宽等)的线条(或任何其他对象)集合。

import matplotlib.pyplot as plt
import numpy as np

colors = np.linspace(0,1,10)
mappable = plt.scatter(np.zeros(10), colors, s=30, c=colors, cmap='viridis')
plt.colorbar(mappable)
plt.show()

产生以下图像

分散可映射颜色条


推荐阅读