我正在尝试在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')
Y轴值未正确绘制的原因是什么?
答案 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)