为seaborn 热图指定特定颜色

2023-12-10

我正在尝试使用 seaborn 制作热图,但无法更改特定值的颜色。假设值 0 应为白色,值 1 应为灰色,然后使用 cmap 提供的调色板。

尝试使用面膜,但感到困惑。

import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
import pandas as pd

df = pd.read_csv('/home/test.csv', index_col=0)

fig, ax = plt.subplots()
sns.heatmap(df, cmap="Reds", vmin=0, vmax=15)
plt.show()

这是样本数据

TAG     A   B   C   D   E   F   G   H   I   J
TAG_1   1   0   0   5   0   7   1   1   0   10
TAG_2   0   1   0   6   0   6   0   0   0   7
TAG_3   0   1   0   2   0   4   0   0   1   4
TAG_4   0   0   0   3   1   3   0   0   0   10
TAG_5   1   0   1   5   0   2   1   1   0   11
TAG_6   0   0   0   0   0   0   0   0   0   12
TAG_7   0   1   0   0   1   0   0   0   0   0
TAG_8   0   0   0   1   0   0   1   0   1   0
TAG_9   0   0   1   0   0   0   0   0   0   0
TAG_10  0   0   0   0   0   0   0   0   0   0


df.set_index('TAG', inplace=True)告诉seaborn标签应该用作标签,而不是数据。

“二元”颜色图从较低值的白色平滑过渡到最高值的深黑色。和谁玩vmin and vmax, 环境vmin=0 and vmax对于介于 1.5 和大约 5 之间的值,值 0 将是白色,而 1 将是任何所需类型的灰色。

要设置掩码,数据帧应转换为 2D numpy 数组并且为 float 类型。

import matplotlib.pyplot as plt
import seaborn as sns
import pandas as pd
from io import StringIO

data_str = StringIO('''TAG     A   B   C   D   E   F   G   H   I   J
TAG_1   1   0   0   5   0   7   1   1   0   10
TAG_2   0   1   0   6   0   6   0   0   0   7
TAG_3   0   1   0   2   0   4   0   0   1   4
TAG_4   0   0   0   3   1   3   0   0   0   10
TAG_5   1   0   1   5   0   2   1   1   0   11
TAG_6   0   0   0   0   0   0   0   0   0   12
TAG_7   0   1   0   0   1   0   0   0   0   0
TAG_8   0   0   0   1   0   0   1   0   1   0
TAG_9   0   0   1   0   0   0   0   0   0   0
TAG_10  0   0   0   0   0   0   0   0   0   0''')

df = pd.read_csv(data_str, delim_whitespace=True)
df.set_index('TAG', inplace=True)
values = df.to_numpy(dtype=float)
ax = sns.heatmap(values, cmap='Reds', vmin=0, vmax=15, square=True)
sns.heatmap(values, xticklabels=df.columns, yticklabels=df.index,
            cmap=plt.get_cmap('binary'), vmin=0, vmax=2, mask=values > 1, cbar=False, ax=ax)
plt.show()

example plot

或者,可以创建自定义颜色图。这样,颜色条也会显示调整后的颜色。

from matplotlib.colors import LinearSegmentedColormap

cmap_reds = plt.get_cmap('Reds')
num_colors = 15
colors = ['white', 'grey'] + [cmap_reds(i / num_colors) for i in range(2, num_colors)]
cmap = LinearSegmentedColormap.from_list('', colors, num_colors)
ax = sns.heatmap(df, cmap=cmap, vmin=0, vmax=num_colors, square=True, cbar=False)
cbar = plt.colorbar(ax.collections[0], ticks=range(num_colors + 1))
plt.show()

custom colormap

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为seaborn 热图指定特定颜色 的相关文章

随机推荐

  • 使用 PowerShell 以管理员身份运行命令?

    您知道如果您是系统的管理用户并且只需右键单击批处理脚本并以管理员身份运行它而无需输入管理员密码 该怎么办 我想知道如何使用 PowerShell 脚本来执行此操作 我不想输入密码 我只是想模仿右键以管理员身份运行 method 到目前为止我
  • Nginx - 下载 PHP 而不是执行

    我正在使用 CentOS 并且我有两个网页用于一项工作 第一个是 html 它有一个表单 使用 php 脚本将数据发送到我的 mySQL 数据库 这工作正常 第二个只是一个 php 页面 应该显示数据库中表的内容 问题是 我的浏览器下载文件
  • Ajax 使用express 和JQuery 刷新部分视图?

    我想使用 ajax 刷新部分视图 我知道如何将新数据附加到 HTML 但我想知道是否有更简单的方法 我有部分观点可以做到这一点 数据中的每个 x 李X姓名 我使用 partial test data data 传递数据 我想调用一个函数来再
  • 5 年后,还有比“最快的 C++ 代表”更好的东西吗?

    我知道 C 代表 这个话题已经被干死了 而且都http www codeproject com and http stackoverflow com深刻地涵盖了这个问题 一般来说 似乎唐 克拉格斯顿 Don Clugston 最快的代表是很
  • 将数据添加到列的简单方法

    我想将两个单独的数据集插入到 JavaFX TableView 中的列中 基本上我有 2 个带有字符串的 LinkedList 我想将一个列表放在一列中 另一个列表放在第二列中 做到这一点最简单的方法是什么 或者另一个 JavaFX 元素更
  • 应用程序定义或对象定义错误 1004

    VBA 抛出上面给出的错误Sheets Sheet1 Range A i Copy Destination Sheets Sheet2 Range A i A LastCol 1 我想做的实际上是复制 A i单元格 在第一次迭代中它是A2
  • Firestore 查询中可以使用通配符功能吗?

    我正在尝试决定如何在 firestore 中对数据进行建模 基本上 它是一个列出欢乐时光和餐厅其他特色菜的应用程序 每个餐厅 酒吧可能会根据一周中的某一天提供多种特色菜和欢乐时光 这是我的一个非常简单的例子hoping对数据建模 name
  • Python的平台模块未检测到Windows 10

    我目前正在 Windows 10 上工作 如果平台是 Windows 10 则需要放置一些代码 因此 我检查了 python 文档并阅读了有关平台模块的信息 文档是这样说的 platform win32 ver release versio
  • 按下播放按钮后进行回调 - Youtube 嵌入视频

    按下播放按钮后是否可以执行 JavaScript 操作 我知道我需要使用 Youtube API 中的 onStateChange 函数 但我真的不知道从哪里开始 有什么帮助吗 谢谢 我还在这里发现了一些东西 http apiblog yo
  • 计算中的小数点为 。或者 ,

    如果我使用小数点输入数字 则小数点会根据国家和地区格式而变化 可以作为点 或作为逗号 而且我无法控制应用程序在哪个设备上使用 如果区域格式使用逗号 计算就会出错 放入 5 6 与有时只放入 5 和同一时间放入 56 是相同的 即使我以编程方
  • 如何存储 bash 脚本连续两次运行之间的状态

    我有 bash 脚本 它使用cron每分钟都有工作 我想保存脚本的状态以便在下次运行时重用 保存状态的最佳方法是什么 在本例中是分配了数字的变量 因此 在下一次运行中 该数字可以与之前运行的值进行比较 从文件保存和重新加载变量值的示例 us
  • 从 Rails ActiveRecord 的结果中排除一些 id

    我对某些部分的查询文章有以下声明 Article all joins gt sections conditions gt sections gt id gt 3 4 6 7 8 9 id not in gt some ids limit g
  • 将 javascript 客户端协调到单个后端游戏的最佳方法是什么?

    用于通知 javascript 客户端异步游戏中发生的更改 即其他客户端所做的移动 的最佳方法是什么 作为一个例子 假设一个回合制棋盘游戏 我应该让客户端每隔一秒左右轮询一次 PHP 后端以获取新的动作 还是有更好的方法向同一游戏中的其他客
  • 自定义 Android 通知磁贴的背景

    我注意到我的一个 Android 应用程序为其通知磁贴设置了自定义背景 如下面的屏幕截图所示 该应用程序如何为其通知设置自定义背景 我如何在自己的应用程序中实现同样的目标 NotificationCompat Builder this ch
  • JCO.destination 中未到达合作伙伴错误

    我在 java 程序中建立与 SAP 的连接时遇到问题 我按照 JCO 下载中的示例进行操作 但总是收到此错误 com sap conn jco JCoException 102 RFC ERROR COMMUNICATION Connec
  • Objective C:向 UIButton 调用的方法发送参数

    我有一个在单击 UIButton 时被调用的方法 当我创建按钮时 我希望它存储 NSTimer 作为参数 这是计时器和 UIButton 的创建 我如何添加要发送到方法的计时器 我试过了withObject timer但它给了我一个警告并在
  • 如何编写 KSP 以连接到 KERB_CERTIFICATE_LOGON

    大家好 我编写了一个自定义凭据提供程序 在使用用户名 密码作为凭据时工作正常 密码通过蓝牙传输 毕竟这并不困难 因为文档告诉您要实现哪些接口 现在我想更改凭据以使用证书 我发现我应该为此使用 KERB CERTIFICATE LOGON 结
  • 如何在 swiftUI 的末尾文本字段添加 % 符号

    我想制作一个自定义文本字段 它将显示金额和 符号 谁能告诉我如何实现这一目标 如果我输入 12 它应该自动插入 12 在 UIKit 中 它就像 textField text text struct UiTextFieldRepresent
  • 使用 React Native iOS Release Build 不会加载新代码,但版本会加载

    我的React Native应用程序不响应我在iOS发布模式下对代码的更改 我不知道为什么 但我无法上传包含更改的新版本 但是 当我在代码中应用更改时 版本更改是唯一更改的内容 我能做什么来修复它 无论我是从 XCode 还是使用代码片段构
  • 为seaborn 热图指定特定颜色

    我正在尝试使用 seaborn 制作热图 但无法更改特定值的颜色 假设值 0 应为白色 值 1 应为灰色 然后使用 cmap 提供的调色板 尝试使用面膜 但感到困惑 import matplotlib pyplot as plt impor