在Seaborn热图上绘制离散的X / Y值

时间:2018-05-22 05:51:25

标签: python pandas heatmap seaborn

我正在尝试在Seaborn热图上标记特定的X / Y坐标。输出正在绘制正确的X坐标,但是将Y绘制为零/轴最小值。代码及其热图输出如下所示。

speeds = pd.read_csv('pytest20140730.csv') 
speedspiv = pd.pivot_table(speeds, values = 'speed', index = 'road_order',
                           columns = 'tod_value', aggfunc = np.mean)
speedspiv = speedspiv.sort_index(axis=0, ascending = False)
plt.subplots(figsize=(20,15))
ax = sns.heatmap(speedspiv)
ax.scatter(414, 0.244444444, marker='*', s=100, color='yellow') 

请参见下图中x轴的黄色星形 enter image description here

Y轴值未正确绘制的原因是什么?

1 个答案:

答案 0 :(得分:0)

seaborn热图生成带有x轴和y轴的图,这些图是基于索引的,而不是基于数据的。这意味着,即使标有382 ... 453,y轴也会从0变为71。 要对此进行测试,只需打印ax.get_xlim()ax.get_ylim()的结果。

为了您的问题将标记放在热图中的有意义的位置,这意味着您必须计算标记的x值和y值的正确(分数)索引并使用这些在散点图中:

x_vals = np.linspace(0, 1, 1500)    #  I don't know the real range of you x-data
x_idx = np.interp(.24, x_vals, range(len(x_vals)))
y_vals = np.arange(382, 453)
y_idx = np.interp(414, y_vals, range(len(y_vals)))

In: x_idx, y_idx
Out: (359.76, 32.0)