如何在刻度标签的中心绘制 sns.heatmap 的线图

How to plot a line plot over sns.heatmap over the center of tick labels

目前,我正在尝试绘制所有状态概率的维特比路径。基本上,它是 Seaborn 热图上的线图我正在使用以下代码

fig = plt.figure(figsize=(10, 10))
ax = sns.heatmap(plot.T, cmap="viridis")
ax.set_title("State probabilities")
ax.set_xlabel("Time step")
ax.set_ylabel("Hidden states")
plt.plot(viterbi_path, color='red')
plt.show()

我得到这样的信息:

虽然这条线从中心开始,没有过渡,而是像这张图片中的实际值

我怎样才能做到这一点?

感谢您的帮助:)

用于实验的基本可复制玩具代码

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

uniform_data = np.random.rand(10, 15)
ax = sns.heatmap(uniform_data)
t = np.arange(10)
t = [0, 0, 1, 1, 2, 3, 4,4,4,4,5,6,7,8,9]
plt.plot(t)
plt.show()

Seaborn 在半位置绘制刻度线 (0.5, 1.5, ...)。您可以添加一半以使线位于 y 方向的中心。

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

uniform_data = np.random.rand(10, 15)
ax = sns.heatmap(uniform_data)
t = [0, 0, 1, 1, 2, 3, 4, 4, 4, 4, 5, 6, 7, 8, 9]
plt.plot(np.array(t) + 0.5, color='lime', lw=3)
plt.show()

您也可以在 x 方向居中:

plt.plot(np.arange(len(t)) + 0.5, np.array(t) + 0.5, color='lime', lw=3)