python中的热图表示给定矩形区域中的(x,y)坐标

时间:2017-12-20 23:49:43

标签: python pandas matplotlib heatmap seaborn

假设我们将x,y坐标作为输入,其中x在范围(0,300)& y在范围内(0,400) 我想将所有这些坐标绘制为宽度在(0,300)和...之间的矩形网格中的热图。高度(0,400)。

使用seaborn或matplotlib,我可以绘制散点图,但很难将这些点绘制成热图。

x = numpy.random.randint(0, high=50, size=5000, dtype='l')
y = numpy.random.randint(0, high=50, size=5000, dtype='l')

因此,如果我的样本量是5000点&所有几乎都在x的范围内为(0,50)& y作为(0,50)在300x400的矩形空间中表示它们应该在50x50空间中显示最高的坐标密度。

有人可以指导我如何表示这些数据吗?

用于测试&在散点图上绘图,我使用了seaborn的lmplot函数。

df = pd.DataFrame()

df['x'] = pd.Series(numpy.random.randint(0, high=320, size=5000, dtype='l'))
df['y'] = pd.Series(numpy.random.randint(0, high=480, size=5000, dtype='l'))
sns.set_style('whitegrid')
sns.lmplot('x','y',data=df,
       palette='coolwarm',size=10,fit_reg=False)
plt.show()

1 个答案:

答案 0 :(得分:2)

这里似乎需要的是二维直方图。这可以使用plt.hist2d绘制。

示例:

import numpy as np
import matplotlib.pyplot as plt

x = np.random.rayleigh(50, size=5000)
y = np.random.rayleigh(50, size=5000)


plt.hist2d(x,y, bins=[np.arange(0,400,5),np.arange(0,300,5)])

plt.show()

enter image description here