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

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

【问题讨论】:

  • 不确定是否有内置函数,但您是否查看过 Kernel Density Estimators?

标签: python-3.x matplotlib seaborn visualization heatmap


【解决方案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() 感兴趣。
      猜你喜欢
      • 2017-05-09
      • 2018-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-26
      • 2016-09-10
      • 2021-02-20
      • 2016-12-14
      相关资源
      最近更新 更多