绘制多个子图需要一个colobar

时间:2019-01-10 07:16:22

标签: python matplotlib

我为每个子图获得多个colobar,我想要一个。

for i in range(6):
     plot.subplot(2,3,i)
     im=plot.contourf(xlon[:],xlat[:],rain[i,:,:])
     plot.colorbar(im)
plot.show()

1 个答案:

答案 0 :(得分:0)

您可以通过在其自己的轴上添加list1 = [[390, 2645, 760, 2736], [395, 2848, 703, 2950], [399, 2747, 767, 2843], [1083, 2641, 1743, 2732], [1083, 2641, 1743, 2732], [1085, 2845, 1697, 2932], [1085, 2845, 1697, 2932], [1087, 2737, 1741, 2833], [1087, 2737, 1741, 2833], [2055, 2728, 2348, 2831], [2059, 2638, 2351, 2725], [2062, 2840, 2360, 2927], [2065, 2933, 2203, 3033]] list2 = [[]] counter = 0 list2[counter].append(list1[0]) length1 = len(list1) for i in range(1, length1): if (list1[i][0] - list1[i-1][0]) < 200: list2[counter].append(list1[i]) else: list2.append([]) counter += 1 list2[counter].append(list1[i]) print(list2) 来实现。这可以通过手动创建附加轴并使用colorbarsubplots_adjust()例如根据需要移动现有图来完成。

add_axes()

在这种情况下,import matplotlib.pyplot as plt import numpy as np import random fig, ax = plt.subplots(figsize=(10, 6), dpi=300) for i in range(1,7): # This simply creates some random data to populate with a = np.arange(10) x, y = np.meshgrid(a, a) z = np.random.randint(0, 7, (10, 10)) plt.subplot(2,3,i) im=plt.contourf(x, y, z) # Tight layout is optional fig.tight_layout() fig.subplots_adjust(right=0.825) cax = fig.add_axes([0.85, 0.06, 0.035, 0.91]) fig.colorbar(im, cax=cax) plt.show() 的参数为add_axes()。这将产生类似

Sample figure with 6 subplots sharing one colorbar

修改

要删除图形间的轴标签,刻度线等,需要对上述方法进行一些不平凡的修改,其中[left, bottom, width, height]用于填充子图形对象的plt.subplots()数组,然后重复。例如

2x3

Modified figure