我为每个子图获得多个colobar,我想要一个。
for i in range(6):
plot.subplot(2,3,i)
im=plot.contourf(xlon[:],xlat[:],rain[i,:,:])
plot.colorbar(im)
plot.show()
答案 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)
来实现。这可以通过手动创建附加轴并使用colorbar
和subplots_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()
。这将产生类似
要删除图形间的轴标签,刻度线等,需要对上述方法进行一些不平凡的修改,其中[left, bottom, width, height]
用于填充子图形对象的plt.subplots()
数组,然后重复。例如
2x3