根据 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
也可以做到这一点(向下滚动示例,它谈到了在指定x
和y
参数时制作二元直方图)
【讨论】:
【参考方案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函数使用多子图可视化不同分组的散点图最优拟合线性回归曲线