如何从python中的线性分段颜色映射创建颜色条?

2024-03-28 14:05:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在创建一个条形图,其中条形图根据自定义的颜色映射进行着色,以显示数据的额外维度。我使用linearsegmentedcolormap创建颜色。代码看起来像这样

import matplotlib.pyplot as plt
import matplotlib.colors as mcolors

xvalues = [1,2,3,4]
yvalues = [1,2,3,4]
colorvalues = [0,0.3,0.6,0.99]

clist = [(0, 'powderblue'), (1, 'darkblue')]
colors = mcolors.LinearSegmentedColormap.from_list("", clist)

barcolors = []
for value in colorvalues:
    barcolors.append(colors(value))

fig, ax = plt.subplots()
ax.bar(xvalues, yvalues, color = barcolors) 

这一切都是我想要的,并产生了我正在寻找的图形。但是,我还想使用linearsegmentedcolormap生成的颜色添加一个colorbar图例。每当我尝试使用plt.colorbar时,如下所示

plt.colorbar(colors)

我得到一个错误声明
AttributeError:“LinearSegmentedColormap”对象没有“自动缩放”属性

我发现的使用linearsegmentedcolormap方法创建自定义colormap的解决方案在图形本身上使用了上述colormap,使用类似plt.imshow的东西。我一直无法找到一个解决方案,其中colormap实际上不用于绘制某些图形


Tags: import图形matplotlib颜色asplt条形图colors
1条回答
网友
1楼 · 发布于 2024-03-28 14:05:16

让我们尝试根据颜色创建cmap可映射对象,并从中绘制颜色栏:

## you other codes go here

from matplotlib.cm import ScalarMappable
from matplotlib.colors import Normalize
cmappable = ScalarMappable(norm=Normalize(0,1), cmap=colors)
plt.colorbar(cmappable)

输出:

enter image description here

相关问题 更多 >