2016-01-23 68 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