首页 > 解决方案 > Python matplotlib 自定义颜色条,用于手动分配颜色的绘制线

问题描述

我正在尝试为以下类型的绘图定义一个颜色条。

import matplotlib.pyplot as plt
import numpy as np

for i in np.arange(0,10,0.1):
    plt.plot(range(10),np.ones(10)*i,c=[i/10.,0.5,0.25])
plt.show()

结果图

这只是我的实际数据的简化版本,但基本上,我想要由另一个带有颜色条键的变量绘制和着色的一系列线条。这在分散中很容易做到,但我无法分散来绘制连接线。积分太笨重了。我知道这听起来像是基本的东西,但我很难找到一个简单的解决方案......我错过了什么明显的解决方案?

标签: python-3.xmatplotlibcolorbar

解决方案


您可以从中构建自定义颜色图和可映射的,然后传递给colorbar

from matplotlib.cm import ScalarMappable
from matplotlib.colors import Normalize
import matplotlib.colors as mcolors

color_list = [(i/10, 0.5,0.25) for i in np.arange(0,10,0.1)]
cmap = mcolors.LinearSegmentedColormap.from_list("my_colormap", color_list)
cmappable = ScalarMappable(norm=Normalize(0,10), cmap=cmap)

plt.figure(figsize=(10,10))
for j,i in enumerate(np.arange(0,10,0.1)):
    plt.plot(range(10),np.ones(10)*i,c=color_list[j])
    
plt.colorbar(cmappable)
plt.show()

输出:

在此处输入图像描述


推荐阅读