改变海生热图的轴

2024-04-29 19:14:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一组笛卡尔坐标对,每个坐标对都有一个二进制变量。我在绘制一张热图,在每个格子里,我计算落在这个格子里的坐标分数,其中二进制变量是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


Tags: importdfsizeasnp二进制resrandom
1条回答
网友
1楼 · 发布于 2024-04-29 19:14:19

下面通过使用直方图库作为图像的范围来创建比例。在

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

相关问题 更多 >