这是我的问题:我有8套测量数据。在图片的一半我想用plt.imshow将我的数据显示为地图,另一半我希望有1张图片,我显示平均值。我每个数据集有几个帧。这是我想要的图片和我的代码到目前为止(为了简单起见,我只拿了三个数据集):
import matplotlib.pyplot as plt
import numpy as np
NrMax = [473,490,140]
for frame in range(0,200): #Nr of temporal frames
for _ in range(0,3): #Loop over data set. Distinguish, because not all experiments have the same length.
if(_ == 0):
if(frame > NrMax[_]):
data_temp = data10ug[NrMax[_]]
else:
data_temp = data10ug[frame]
elif(_ == 1):
if(frame > NrMax[_]):
data_temp = data25ug[NrMax[_]]
else:
data_temp = data25ug[frame]
elif(_ == 2):
if(frame > NrMax[_]):
data_temp = data1000ug[NrMax[_]]
else:
data_temp = data1000ug[frame]
data_temp = data_temp**2
# Opt out
#---------------------
plt.subplot(2,4,_+1)
var_map = plt.imshow(data_temp, vmin = 0, vmax = 0.025, origin = 'lower')
var_map.set_cmap('bwr')
plt.title(titles[_])
if(colorbar == False):
plt.colorbar()
答案 0 :(得分:0)
我不完全理解不同帧的意义。您是否计划创建200个反映200个时间点的不同图像?
无论如何,为了创建可能接近您想要的布局,您可能希望将GridSpec
用于子图
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
import numpy as np
# create some random data
dat = [ np.random.random((10,10)) for _ in range(8) ]
# create the figure
fig = plt.figure(figsize=[12,4])
# create two gridspecs adjacent to each other (left and right)
gs1 = matplotlib.gridspec.GridSpec(2, 4, left=.1, right=.55)
gs2 = matplotlib.gridspec.GridSpec(1, 1, left=.65, right=.9)
# define the plot axes and add the images
imgaxes = []
for i in range(8):
imgaxes.append(plt.subplot(gs1[i / 4, i % 4]))
imgaxes[i].imshow(dat[i])
# add the graph axis
grax = plt.subplot(gs2[0,0])
grax.plot(np.random.random(100))
此代码创建
您当然希望更改位置和比例,也许可以对轴做一些事情等。通过使用GridSpec
的关键字参数或使用{{1},调整子图位置应该很容易}}