Skip to main content
 首页 » 编程设计

python之使用热图将线图与双轴图上的 xticks 对齐

2025年05月04日21xing901022

我正在尝试在双轴图上绘制折线图和热图。这就是我得到的:

如您所见,由于存在以 xtick 为中心的热图,折线图未与 xtick 对齐。如何将折线图向右移动 0.5,以便折线图上的数据点正确对应于 xticks?

下面是我的代码:

import matplotlib.pyplot as plt 
import seaborn as sns 
import numpy as np 
 
data1 = np.random.random((10, 10)) 
data2 = np.random.random((10)) 
 
f, ax = plt.subplots(figsize=(11, 9)) 
plt.tick_params(bottom='on') 
ax = sns.heatmap(data1, cmap=sns.color_palette("Greens", 5)) 
ax2 = plt.twinx() 
sns.lineplot(data=data2, linewidth=5, ax=ax2) 
ax.axis('tight') 
 
plt.show() 

请您参考如下方法:

下面是一种方法。

说明:双轴实例ax2 只有一条线使用sns.lineplot 绘制。您首先提取该 line 对象。然后,您只需根据需要将该行的 x 数据向右更新(移动)0.5。 line.get_xdata() 返回一个 x 值数组,您只需以矢量化方式添加 0.5,然后使用 line.set_xdata< 应用更改。在 sns.lineplot() 命令后添加以下行。

line = ax2.lines[0] # get the line 
line.set_xdata(line.get_xdata() + 0.5)