2016-01-23 97 views
0

我正在手动更改imshow图的滴答,但是新滴答不完整,并且没有经过它的所有范围。是什么原因?matplotlib中的不完整滴答

这里是我的代码一个简单的版本:

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

回答

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()也指在你的阴谋的实际位置的实际命名。

+0

我以为我用'plt.subplots(1,1)'足够精确。 – Cupitor

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) 
+0

这适用于情节,但不适用于子情节。当我有不止一个情节,那么当我使用xticks时它只会影响一个! – Cupitor