gpt4 book ai didi

python - 带数值轴的 Seaborn 热图

转载 作者:行者123 更新时间:2023-11-30 22:19:46 25 4
gpt4 key购买 nike

我想用第二个图表(KDEplot,但在本例中我将使用散点图,因为它显示了相同的问题)覆盖热图。

Seaborn 热图具有分类轴,因此将图表与数值轴重叠不会使两个图表正确对齐。

示例:

df = pd.DataFrame({2:[1,2,3],4:[1,3,5],6:[2,4,6]}, index=[3,6,9])
df

2 4 6
3 1 1 2
6 2 3 4
9 3 5 6

fig, ax1 = plt.subplots(1,1)
sb.heatmap(df, ax=ax1, alpha=0.1)

enter image description here

用散点图覆盖它:

fig, ax1 = plt.subplots(1,1)
sb.heatmap(df, ax=ax1, alpha=0.1)
ax1.scatter(x=5,y=5, s=100)
ax1.set_xlim(0,10)
ax1.set_ylim(0,10)

有没有办法说服热图使用列和索引值作为数值?

enter image description here

最佳答案

您无法“说服”热图不生成分类图。最好使用另一个使用数值轴的图像图。例如,使用 pcolormesh 图。当然,假设是列和行均匀分布。那么,

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

df = pd.DataFrame({2:[1,2,3],4:[1,3,5],6:[2,4,6]}, index=[3,6,9])

c = np.array(df.columns)
x = np.concatenate((c,[c[-1]+np.diff(c)[-1]]))-np.diff(c)[-1]/2.
r = np.array(df.index)
y = np.concatenate((r,[r[-1]+np.diff(r)[-1]]))-np.diff(r)[-1]/2.
X,Y = np.meshgrid(x,y)


fig, ax = plt.subplots(1,1)
pc = ax.pcolormesh(X,Y,df.values, alpha=0.5, cmap="magma")
fig.colorbar(pc)
ax.scatter(x=5,y=5, s=100)
ax.set_xlim(0,10)
ax.set_ylim(0,10)

plt.show()

产生

enter image description here

关于python - 带数值轴的 Seaborn 热图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49020709/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com