Matplotlib.pyplot:一张图片中的2x4和1图

时间:2014-08-07 16:08:36

标签: python matplotlib

这是我的问题:我有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()

enter image description here

1 个答案:

答案 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))

此代码创建

enter image description here

您当然希望更改位置和比例,也许可以对轴做一些事情等。通过使用GridSpec的关键字参数或使用{{1},调整子图位置应该很容易}}