首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >按值分色热图

按值分色热图
EN

Stack Overflow用户
提问于 2022-08-12 09:08:55
回答 1查看 59关注 0票数 2

我想绘制一个热图并为每个值指定一个颜色:

代码语言:javascript
运行
复制
import pandas as pd
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
data = pd.DataFrame()
data['percentile'] = pd.DataFrame({'percentile':[95] * 3 + [98] * 3 + [99] * 3})
data['time_scale'] = pd.DataFrame({'time_scale' : [1 , 7, 30 ] * 3 })
data['drivers'] = pd.DataFrame({'drivers' : [ 1 , 3 , 5 , 3 ,1 , 4 , 4  ,5 , 1] })

data = data.pivot_table(values='drivers', index='percentile', columns='time_scale').to_numpy()
im = plt.imshow(data, interpolation='none', origin='lower')

如何根据驱动程序的值指定颜色?

1:灰色

2:黑色

蓝色等..。

我试过这个:

代码语言:javascript
运行
复制
cmap = matplotlib.cm.get_cmap('Set2', 5)

但我不知道怎么具体说明我想要的颜色。

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-12 09:23:26

您可以从LinearSegmentedColormap中使用matplotlib.colors

代码语言:javascript
运行
复制
cmap = matplotlib.colors.LinearSegmentedColormap.from_list('', ['grey', 'black', 'blue', 'purple', 'red'])
im = plt.imshow(data, interpolation='none', origin='lower', cmap=cmap)

还可以添加注释以检查颜色排列是否正确:

代码语言:javascript
运行
复制
for i in range(len(data)):
    for j in range(len(data)):
        text = plt.text(j, i, data[i, j],
                       ha="center", va="center", color="w")

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73331808

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档