我正在尝试在双轴图上绘制折线图和热图。这就是我得到的:
如您所见,由于存在以 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)
