gpt4 book ai didi

python - 更改seaborn热图的轴

转载 作者:行者123 更新时间:2023-12-01 03:09:42 27 4
gpt4 key购买 nike

我有一组笛卡尔坐标对,以及每个坐标对的二进制变量。我正在绘制一个热图,在每个箱中,我计算落入该箱中的坐标分数,其中二进制变量为 1。

我的问题出在轴上。如下图所示,生成的轴是字符串,代表 bin 边界。我希望轴是笛卡尔坐标。有没有简单的方法来改变这个?

import numpy as np
import pandas as pd
import seaborn as sb
np.random.seed(0)
x = np.random.uniform(0,100, size=200)
y = np.random.uniform(0,100, size=200)
z = np.random.choice([True, False], size=200, p=[0.3, 0.7])
df = pd.DataFrame({"x" : x, "y" : y, "z":z})
binsx = 8
binsy = 5
res = df.groupby([pd.cut(df.y, binsy),pd.cut(df.x,binsx)])['z'].mean().unstack()
ax = sb.heatmap(res)
ax.axis('equal')
ax.invert_yaxis()

enter image description here

最佳答案

以下内容通过使用直方图的箱作为图像的范围来创建比例。

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

np.random.seed(0)
x = np.random.uniform(0,100, size=200)
y = np.random.uniform(0,100, size=200)
z = np.random.choice([True, False], size=200, p=[0.3, 0.7])
df = pd.DataFrame({"x" : x, "y" : y, "z":z})
binsx = np.arange(0,112.5,12.5)
binsy = np.arange(0,120,20)
res = df.groupby([pd.cut(df.y, binsy),pd.cut(df.x,binsx)])['z'].mean().unstack()

plt.imshow(res, cmap=plt.cm.Reds,
extent=[binsx.min(), binsx.max(),binsy.min(),binsy.max()])
plt.xticks(binsx)
plt.yticks(binsy)
plt.colorbar()
plt.grid(False)


plt.show()

enter image description here

关于python - 更改seaborn热图的轴,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42989079/

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