我正在手动改变一个imshow情节的刻度,但是新的刻度不完整,并且没有经历它所具有的所有范围。是什么原因?
以下是我的代码的简单版本:
from matplotlib import pyplot as plt
import numpy as np
a = np.random.randn(30,50)
fig, ax = plt.subplots(1, 1)
x_range = np.around((np.arange(50)/10.) / np.sqrt(5.5), decimals=2)
y_range = np.around((np.arange(30)/10.) / np.sqrt(2.5), decimals=2)
plt.imshow(a)
ax.set_xticklabels(x_range)
ax.set_yticklabels(y_range)
plt.show()
答案 0 :(得分:1)
您想要替换
plt.imshow(a)
ax.set_xticklabels(x_range)
ax.set_yticklabels(y_range)
通过
plt.imshow(a,extent=[min(x_range),max(x_range),min(y_range),max(y_range)])
plt.xticks(x_range)
plt.yticks(y_range)
答案 1 :(得分:1)
请在您的问题中更准确,并提供完整描述您的问题的代码。当然你可以解决单个图,但是你需要通过绘图索引!
fig, ax = plt.subplots(nrows=1, ncols=2)
x_range = np.around((np.arange(50)/15.) / np.sqrt(5.5), decimals=2)
y_range = np.around((np.arange(30)/15.) / np.sqrt(2.5), decimals=2)
x_range2 = np.around((np.arange(5)/15.) / np.sqrt(5.5), decimals=2)
y_range2 = np.around((np.arange(3)/15.) / np.sqrt(5.5), decimals=2)
ax[0].imshow(a,extent=[min(x_range),max(x_range),min(y_range),max(y_range)])
ax[1].imshow(a,extent=[min(x_range2),max(x_range2),min(y_range2),max(y_range2)])
ax[0].set_xticks(x_range)
ax[1].set_xticks(x_range2)
ax[0].set_yticks(y_range)
ax[1].set_yticks(y_range2)
另请注意,set_xticklabels()
仅更改标签的实际命名,其中set_xticks()
也指示图中的实际位置。