【问题标题】:Plotting discrete X/Y values over Seaborn heatmap在 Seaborn 热图中绘制离散 X/Y 值
【发布时间】:2018-10-31 19:24:00
【问题描述】:

我正在尝试在 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 轴上看到黄色星

Y 轴值绘制不正确是怎么回事?

【问题讨论】:

  • y 轴的值介于 382 和 453 之间,但您的标记被告知在 y=0.24 处绘制。我想知道它甚至是可见的,还是我在这里错过了什么?
  • 我最初将它设置为 ax.scatter(0.24, 414) 并且没有星号。当我切换到上面的代码时,似乎 0.24 现在正在正确绘制。我知道 x 轴标签目前是一团糟,但它们在 0 到 1 的范围内是连续的,所以看起来 x/y 切换到 y/x 显示了进展。
  • @SpghttCd 说的是真的。您的热图切换了 x 和 y 坐标,或者您的散点图切换了 x 和 y 坐标。这行得通吗:ax.scatter(0.244444444, 414, marker='*', s=100, color='yellow')
  • 当我尝试这样做时,任何地方都看不到星星。

标签: python pandas heatmap seaborn


【解决方案1】:

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)

【讨论】:

  • 似乎它所做的只是将 y 轴值更改为索引值,因为我得到了完全相同的图,y 值从 71 到 0。星在同一个地方。
  • 并澄清一下:我试图绘制的点是基于数据帧的索引和列的 X/Y 值。
  • 好的,我尝试了一些示例数据并发现,热图没有标签和/或相对于数据的轴范围。它们只是被索引。我将朝这个方向编辑我的答案...
  • 是的,做到了。非常感谢您花时间帮助解决这个问题。关于热图/索引轴的有趣启示。我永远不会去那里。您的解决方案完美解决了这个问题。
  • 跟进...当我在清理/美化图形时,我有点恍惚...因为我的散点值必须来自组成 x 的一组值/y 轴作为热图,我使用 speedspiv.columns.get_loc 获取 x 轴索引,使用 speedspiv.index.get_loc 获取 y 轴索引以代替上面定义的 x_idx 和 y_idx。稍微简单一点,因为我的值必须是来自枢轴的列/索引值之一,这意味着我不需要插值。再次感谢您,因为如果没有您的帮助,我是不可能做到这一点的。
猜你喜欢
  • 1970-01-01
  • 2022-01-21
  • 2016-12-14
  • 2020-01-13
  • 2020-10-10
  • 2018-08-06
  • 2016-03-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多