我正在開發一些代碼來產生一個圖上的任意數量的二維圖(地圖和簡單的輪廓圖)。 matplotlib子圖例程對此非常有用。在下面的簡化示例中,一切都按照它應該的方式工作。然而,在我真正的應用程序中 - 它使用了與subplots,contourf和colorbar完全相同的命令,只有這些命令分散在幾個例程中 - 顏色條上的標籤沒有顯示出來(儘管顏色補丁看起來沒問題)。即使經過幾個小時的閱讀文檔和搜索網頁,我甚至都沒有線索可以開始尋找問題所在。如果我有我的colorbar實例(cbar),我應該能夠找出tick標籤的位置是否有意義,如果tick標籤設置爲可見,如果我的字體設置有意義等等......但是我怎麼實際檢查這些屬性?有沒有人遇到過類似的問題? (甚至更好:找到了一個解決方案?)哦是的:如果我在實際的繪圖程序(在發出contourf命令的地方)手動創建一個新圖形和座標軸,那麼它將再次工作。但是這意味着失去對圖形佈局的所有控制等等。難道我沒有正確傳遞我的座標軸實例嗎?這是我做的:matplotlib colorbar在subplots:標籤正在消失
fig, ax = plt.subplots(nrows, ncols)
row, col = getCurrent(...)
plotMap(x, y, data, ax=ax[row,col], ...)
然後,裏面plotMap:
c = ax.contourf(x, y, data, ...)
ax.figure.colorbar(c, ax=ax, orientation="horizontal", shrink=0.8)
正如上面所說的,下面簡單的情節和人工數據的例子正常工作:
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(0.,360.,5.)*np.pi/180.
y = np.arange(0.,360.,5.)*np.pi/180.
data = np.zeros((y.size, x.size))
for i in range(x.size):
data[:,i] = np.sin(x[i]**2*y**2)
fig, ax = plt.subplots(2,1)
contour = ax[0].contourf(x, y, data)
cbar = ax[0].figure.colorbar(contour, ax=ax[0], orientation='horizontal', shrink=0.8)
contour = ax[1].contourf(x, y, data, levels=[0.01,0.05,0.1,0.05])
cbar = ax[1].figure.colorbar(contour, ax=ax[1], orientation='horizontal', shrink=0.8)
plt.show()
感謝任何幫助!
加入後一些進一步的打探:
for t in cbar.ax.get_xticklabels():
print t.get_position(), t.get_text(), t.get_visible()
顯示我正確的文本和可見=真,但是所有位置(0,0)。這可能是一個問題嗎?
順便說一句:軸標籤也有時會丟失......我在windows上使用matplotlib version 1.1.1和python 2.7.3。
你可以發佈你的解決方案作爲答案,所以這被關閉?稍後您可以接受您自己的答案。 –
供將來參考'plt.tight_layout()'(也是'figure'對象的一種方法)經常可以創造奇蹟。 –