gpt4 book ai didi

python - 子图中的 Seaborn 热图 - 对齐 x 轴

转载 作者:行者123 更新时间:2023-12-04 15:12:05 25 4
gpt4 key购买 nike

我试图绘制一个包含两个 的图形子图 , seaborn 热图 和简单 matplotlib 行 .但是,当共享两个图的 x 轴时,它们不会对齐,如下图所示:
figure
看起来问题类似于this post , 但在显示 ax[0].get_xticks() 时和 ax[1].get_xticks()我得到了相同的职位,所以我不知道该改变什么。在我的图片中,偏差似乎超过 0.5 次。
我究竟做错了什么?
我用来绘制图形的代码如下:

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

M_1=np.random.random((15,15))
M_2=np.random.random((15,15))

L_1=np.random.random(15)
L_2=np.random.random(15)

x=range(15)

cmap = sns.color_palette("hot", 100)
sns.set(style="white")

fig, ax = plt.subplots(2, 1, sharex='col', figsize=(10, 12))

ax[0].plot(x,L_1,'-', marker='o',color='tab:orange')
sns.heatmap(M_1, cmap=cmap, vmax=np.max(M_1), center=np.max(M_1)/2., square=False, ax=ax[1])

最佳答案

@Mr-T 的评论是正确的。最简单的方法是预先创建轴而不是让 heatmap()缩小轴以便为颜色条腾出空间。
增加的复杂性是热图的标签实际上并未放置在 [0,1,...] 处,而是位于 [0.5, 1.5, ...] 处每个单元格的中间。因此,如果您希望您的上图与底部的标签(以及每个单元格的中心)对齐,您可能需要将您的图向右移动 0.5 个单位:

M_1=np.random.random((15,15))
M_2=np.random.random((15,15))
L_1=np.random.random(15)
L_2=np.random.random(15)
x=np.arange(15)

cmap = sns.color_palette("hot", 100)
sns.set(style="white")

fig, ax = plt.subplots(2, 2, sharex='col', gridspec_kw={'width_ratios':[100,5]})
ax[0,1].remove() # remove unused upper right axes
ax[0,0].plot(x+0.5,L_1,'-', marker='o',color='tab:orange')
sns.heatmap(M_1, cmap=cmap, vmax=np.max(M_1), center=np.max(M_1)/2., square=False, ax=ax[1,0], cbar_ax=ax[1,1])
enter image description here

关于python - 子图中的 Seaborn 热图 - 对齐 x 轴,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65037113/

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