根据 Seaborn 中的散点图绘制热图

Posted

技术标签:

【中文标题】根据 Seaborn 中的散点图绘制热图【英文标题】:Plotting a heatmap based on a scatterplot in Seaborn 【发布时间】:2022-01-21 18:02:50 【问题描述】:

有什么方法可以根据散点图在 seaborn 中绘制热图?例如,我有以下散点图,并希望以这样的方式绘制相应的热图,使热图中的较暗点在散点图中显示更拥挤的区域。

【问题讨论】:

不确定是否有内置函数,但您是否查看过 Kernel Density Estimators? 【参考方案1】:

您可以再使用一个变量来跟踪其附近的点数。然后在散点图中使用该可变广告颜色。

【讨论】:

【参考方案2】:

matplotlib.pyplot.hist2d 将在“常规”matplotlib 中完成此操作。看起来seaborn.histplot 也可以做到这一点(向下滚动示例,它谈到了在指定xy 参数时制作二元直方图)

【讨论】:

【参考方案3】:

sns.histplot(x=x_data, y=y_data) 将创建给定数据的二维直方图。 sns.kdeplot(x=x_data, y=y_data) 会对这些值进行平均,从而创建一个二维概率密度函数的近似值。

这是使用 iris 数据集的 3 个图之间的比较。

import matplotlib.pyplot as plt
import seaborn as sns

fig, (ax1, ax2, ax3) = plt.subplots(ncols=3, figsize=(15, 4), sharex=True, sharey=True)

iris = sns.load_dataset('iris')
sns.set_style('darkgrid')
sns.scatterplot(x=iris['sepal_length'], y=iris['sepal_width'], ax=ax1)
sns.histplot(x=iris['sepal_length'], y=iris['sepal_width'], ax=ax2)
sns.kdeplot(x=iris['sepal_length'], y=iris['sepal_width'], fill=True, ax=ax3)

ax1.set_title('scatterplot')
ax2.set_title('histplot')
ax3.set_title('kdeplot')
plt.tight_layout()
plt.show()

【讨论】:

您可能还对在 x 和 y 方向添加直方图(或 kde 图)的sns.jointplot() 感兴趣。

以上是关于根据 Seaborn 中的散点图绘制热图的主要内容,如果未能解决你的问题,请参考以下文章

Python使用matplotlib可视化散点图使用seaborn中的lmplot函数使用多子图可视化不同分组的散点图最优拟合线性回归曲线

Seaborn 散点图 X 和 Y 的颜色

如何将时间用作带有seaborn的散点图的x轴?

Seaborn 散点图

Pandas / Pyplot中的散点图:如何按类别绘制[重复]

R绘制散点图以及带圈定的散点图(Scatterplot With Encircling)