matplotlib中的不完整蜱

时间:2016-01-23 07:17:34

标签: python matplotlib

我正在手动改变一个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()

结果如下: enter image description here

2 个答案:

答案 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()也指示图中的实际位置。