我正在try 将一些数据可视化为表格,其中每个表格元素的框根据它们的值进行着色,还显示了数值,并显示了每个元素的不确定性.我可以使用pandas.pivot_tablesns.heatmap实现这3种情况中的2种,但似乎不能将每个表元素上的不确定性作为注释的一部分.在示例代码片段中:

import pandas as pd
import seaborn as sns
import numpy as np

df = pd.DataFrame({"A": ["foo", "foo", "foo", "foo", "foo",
                         "bar", "bar", "bar", "bar"],
                   "B": ["one", "one", "one", "two", "two",
                         "one", "one", "two", "two"],
                   "C": ["small", "large", "large", "small",
                         "small", "large", "small", "small",
                         "large"],
                   "D": [1, 2, 2, 3, 3, 4, 5, 6, 7],
                   "E": [2, 4, 5, 5, 6, 6, 8, 9, 9]})

table = pd.pivot_table(df, values='D', index=['A', 'B'],
                       columns=['C'], aggfunc=np.sum, fill_value=0)

sns.heatmap(table,annot=True)

我们生成一个这样的表:

seaborn heatmap of a pandas pivot_table

然而,假设条目"E"表示元素"D"上的不确定性.有没有办法把它们显示在桌子上,就像"E"[i]+/-"D"[i]一样?我try 使用自定义注释网格,但这需要numpy数组,因此对每个元素进行字符串格式化不起作用.

推荐答案

您可以将带有格式化字符串的DataFrame传递给sns.heatmap:

table = pd.pivot_table(df, values=['D', 'E'], index=['A', 'B'],
                       columns=['C'], aggfunc=np.sum, fill_value=0)

sns.heatmap(table['D'],
            annot=table['D'].astype(str)+'±'+table['E'].astype(str),
            fmt='')

enter image description here

Python相关问答推荐

使用scipy. optimate.least_squares()用可变数量的参数匹配两条曲线

我从带有langchain的mongoDB中的vector serch获得一个空数组

Pytest两个具有无限循环和await命令的Deliverc函数

从numpy数组和参数创建收件箱

Python中绕y轴曲线的旋转

如何使用Python以编程方式判断和检索Angular网站的动态内容?

优化器的运行顺序影响PyTorch中的预测

如何从数据库上传数据到html?

Pandas GroupBy可以分成两个盒子吗?

如何合并两个列表,并获得每个索引值最高的列表名称?

GPT python SDK引入了大量开销/错误超时

Pandas 数据帧中的枚举,不能在枚举列上执行GROUP BY吗?

在我融化极点数据帧之后,我如何在不添加索引的情况下将其旋转回其原始形式?

504未连接IB API TWS错误—即使API连接显示已接受''

Python如何导入类的实例

极点替换值大于组内另一个极点数据帧的最大值

Seaborn散点图使用多个不同的标记而不是点

Polars时间戳同步延迟计算

将字节序列解码为Unicode字符串

大型稀疏CSR二进制矩阵乘法结果中的错误