在matplotlib热图中重新标记x轴

时间:2014-07-17 20:41:11

标签: python numpy matplotlib plot scipy

我正在关注this example以生成热图。是否可以在X轴上重新标记值,并为其添加常量。

而不是x轴上的0,1,2,3,4,我希望有,例如,5,6,7,8,9。

3 个答案:

答案 0 :(得分:1)

您可以在extent的调用中使用关键字参数imshow来标记x和y轴。这是一些文档,

extent : scalars (left, right, bottom, top), optional, default: None
Data limits for the axes.  The default assigns zero-based row,
column indices to the `x`, `y` centers of the pixels.

使用您链接的示例,您可以执行以下操作,

from pylab import *
A = rand(5,5)
figure(1)
imshow(A, interpolation='nearest')
grid(True)

left = 4.5
right = 9.5
bottom = 4.5
top = -0.5
extent = [left, right, bottom, top]

figure(2)
imshow(A, interpolation='nearest', extent=extent)
grid(True)

show()

这将仅更改x轴标签。请注意,您必须考虑以下事实:默认标记像素,而extent标记整个轴(因此因子为0.5)。另请注意,imshow中y轴的默认标注从顶部到底部(从顶部的0到底部的4)增加,这意味着我们的bottom将大于我们的top {1}}变量。

答案 1 :(得分:0)

您可以通过for-loop或list comprehension简单地添加常量,并将其用作新的轴标签,例如:

import matplotlib.pyplot as plt

CONST = 10

x = range(10)
y = range(10)
labels = [i+CONST for i in x]

fig, ax = plt.subplots()

plt.plot(x, y)
plt.xlabel('x-value + 10')

# set custom tick labels
ax.set_xticklabels(labels)

plt.show()

enter image description here

我将其添加到matplotlib gallery in IPython notebooks这里,并附上其他示例,如果有用的话:

答案 2 :(得分:0)

如果你只想重新标记当前的情节(点击它以选择它),你可以使用xticks()功能(注意arange()上限需要比所需的最大值多一个) - 例如来自iPython / Python:

xticks(arange(0,5),arange(5,10))

如果你想修改python脚本文件,那么你可以使用:

plt.xticks(arange(0,5),arange(5,10))