我想要一個包含四個子圖的圖。其中兩個是通常的線圖,其中兩個是imshow圖像。多個imshow子圖,每個子圖都帶有colorbar
我可以將imshow-images格式化爲適當的圖表,因爲它們中的每一個都需要自己的顏色條,修改後的軸和另一個軸被移除。 然而,這似乎是絕對無用的subplotting。任何人都可以幫助我嗎?
我用它來顯示上面的「常規」圖的數據作爲色彩映射(通過將輸入數組i
縮放爲[ i, i, i, i, i, i ]
用於2D並使用它調用imshow()
)。
下面的代碼首先顯示我需要作爲一個子圖,第二個顯示我可以做的所有事情,這是不夠的。
#!/usr/bin/env python
import matplotlib.pyplot as plt
from matplotlib.colors import LogNorm
s = { 't':1, 'x':[1,2,3,4,5,6,7,8], 'D':[0.3,0.5,0.2,0.3,0.5,0.5,0.3,0.4] }
width = 40
# how I do it in just one plot
tot = []
for i in range(width):
tot.append(s['D'])
plt.imshow(tot, norm=LogNorm(vmin=0.001, vmax=1))
plt.colorbar()
plt.axes().axes.get_xaxis().set_visible(False)
plt.yticks([0, 2, 4, 6], [s['x'][0], s['x'][2], s['x'][4], s['x'][6]])
plt.show()
f = plt.figure(figsize=(20,20))
plt.subplot(211)
plt.plot(s['x'], s['D'])
plt.ylim([0, 1])
#colorplot
sp = f.add_subplot(212)
#reshape (just necessary to see something)
tot = []
for i in range(width):
tot.append(s['D'])
sp.imshow(tot, norm=LogNorm(vmin=0.001, vmax=1))
#what I can't do now but needs to be done:
#sp.colorbar()
#sp.axes().axes.get_xaxis().set_visible(False)
#sp.yticks([0, 200, 400, 600, 800, 1000], [s['x'][0], s['x'][200], s['x'][400], s['x'][600], s['x'][800], s['x'][1000]])
plt.show()
__您的示例不運行!__您可以爲s和tot添加一些示例數據,以便我們可以看到您正在查看的內容嗎?爲了完整性,如果每個示例都以show命令結束,那也是很好的。 –
對不起,我添加了可運行代碼。 – michael
你不需要所有'cla'命令。此外,發佈示例時,最容易繪製隨機數據(除非問題取決於數據的確切值)。 – tacaswell