我希望有一个包含四个子图的图形,其中两个是常规的线图,另外两个是imshow图像。
我可以将imshow图像格式化为适当的图形本身,因为每个图像都需要自己的colorbar、修改后的轴和其他轴被删除。
然而,这似乎对subplot毫无用处。有人能帮我解决这个问题吗?
我使用以下代码将“常规”图形的数据显示为颜色映射(通过将输入数组缩放到[i,i,i,i,i,i]并调用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()
cla
命令。此外,在发布示例时,最好绘制随机数据(除非问题取决于数据的确切值)。 - tacaswell