gpt4 book ai didi

python - 如何在 Seaborn 热图单元格中显示多个注释

转载 作者:行者123 更新时间:2023-12-02 07:06:52 65 4
gpt4 key购买 nike

我希望seaborn 热图在热图的每个单元格中显示多个值。为了清楚起见,这是我想要看到的手动示例:

data = np.array([[0.000000,0.000000],[-0.231049,0.000000],[-0.231049,0.000000]])
labels = np.array([['A\nExtra Stuff','B'],['C','D'],['E','F']])
fig, ax = plt.subplots()
ax = sns.heatmap(data, annot = labels, fmt = '')

enter image description here

这里是让seaborn.heat在单元格中显示flightsRou​​ndUp值的示例。

import matplotlib.pyplot as plt
import seaborn as sns
sns.set()

def RoundUp(x):
return int(np.ceil(x/10)*10)

# Load the example flights dataset and conver to long-form
flights_long = sns.load_dataset("flights")
flights = flights_long.pivot("month", "year", "passengers")
flightsRoundUp = flights.applymap(RoundUp)

# Draw a heatmap with the numeric values in each cell
f, ax = plt.subplots(figsize=(9, 6))
sns.heatmap(flights, annot=flightsRoundUp, fmt="", linewidths=.5, ax=ax)

在所有单元格中同时显示 flightsRou​​ndUpflights 的最佳方式是什么?类似于上面的第一个手动示例,但是对于所有单元格以类似矢量化的方式......

最佳答案

Rotail 的答案对我不起作用,我在应用该 lambda 函数时遇到错误。

但是,我找到了一个解决方案,该解决方案利用了seaborn将连续数字绘制在彼此之上的事实。您所要做的就是使用一次对热图的调用来建立图形,然后对每个注释进行后续调用。使用 annot_kws arg 确保文本不会互相覆盖。

X = pd.DataFrame({'a':[1, 2, 3], 'b':[4, 5, 6]})
Y = pd.DataFrame({'A':['A', 'B', 'C'], 'B':['E', 'F', 'G']})
Z = pd.DataFrame({'A':['(Extra Stuff)', '(Extra Stuff)', '(Extra Stuff)'], 'B':['(Extra Stuff)', '(Extra Stuff)', '(Extra Stuff)']})

sns.heatmap(X, annot=False)
sns.heatmap(X, annot=Y, annot_kws={'va':'bottom'}, fmt="", cbar=False)
sns.heatmap(X, annot=Z, annot_kws={'va':'top'}, fmt="", cbar=False)

Code above produces the following figure

关于python - 如何在 Seaborn 热图单元格中显示多个注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55107957/

65 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com