【发布时间】:2019-06-26 17:29:45
【问题描述】:
我正在尝试为 x 和 y 设置轴,但每次尝试时,热图都会缩小到绘图的一角。我试试
plt.xlim(0, 60)
plt.ylim(0, 30)
我也试过了:
ax.set_ylim(0, 30)
ax.set_xlim(0, 60)
但这做同样的事情。
这就是我到目前为止所称的热图:
pivot = df.pivot_table(index = 'Test X', columns = 'Test Y', values = 'Data')
ax = sns.heatmap(pivot, annot = True, fmt = .2g, cmap = 'Blues_r')
我希望 X 轴从 0 到 60 并显示范围,无论数据是否达到 60,并且与 y 到 30 相同。 但这不起作用。
【问题讨论】:
-
设置限制是没有用的,因为数据本身就在 0 和 N 之间,其中 N 是数组的行数/列数。您可以决定是否要更改刻度标签,或者是否要使用一些 matplotlib 函数,如
imshow或pcolormesh,它们会服从一些实际的数据坐标。 -
@ImportanceOfBeingErnest 我正在使用 seaborn,所以我不确定如何使用不同的调用将其合并到其中。我做了另一个编辑并添加了更多代码来提供帮助。
-
如果要使用seaborn,可以自定义坐标轴的刻度位置和刻度标签。但是您不必使用 seaborn,对吗?因此,您可以使用 pcolormesh,而不是
sns.heatmap(z, ...),您可以使用plt.pcolormesh(x,y,z),其中 x 和 y 是您希望像素定位的坐标向量。 -
@ImportanceOfBeingErnest 如果我使用 seaborn,更改标签就足够了吗?或者它只是改变刻度的名称。我认为它实际上不会对轴产生影响。
-
是的,它不会改变轴;这才是重点。如果要使用 seaborn,则不能更改轴,因为第 N 个像素的坐标为 N-1。所以剩下的就是保持轴原样,但伪造标签以读取您希望它们读取的内容。
标签: python seaborn heatmap axis