在 Seaborn 热图上绘制离散 X/Y 值
Plotting discrete X/Y values over Seaborn heatmap
我正在尝试在 Seaborn 热图上标记特定的 X/Y 坐标。输出绘制了正确的 X 坐标,但将 Y 绘制为最小值 zero/axis。代码及其热图输出如下所示。
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 轴上的黄色星号
Y 轴值绘制不正确是怎么回事?
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)
我正在尝试在 Seaborn 热图上标记特定的 X/Y 坐标。输出绘制了正确的 X 坐标,但将 Y 绘制为最小值 zero/axis。代码及其热图输出如下所示。
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 轴上的黄色星号
Y 轴值绘制不正确是怎么回事?
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)