在 python 中插入的颜色条

Colorbar for inset in python

我正在尝试为插入轴添加一个额外的小颜色条。没有那个,当前代码是

 import numpy as np
 import matplotlib.pyplot as plt
 from matplotlib import cm
 import matplotlib.colors as colors
 from mpl_toolkits.axes_grid1.inset_locator import mark_inset
 A = np.linspace(1,20,20)
 B = A
 X,Y = np.meshgrid(A,B)
 Z = X**2 + Y**2    
 fig, ax = plt.subplots()
 im = ax.pcolor(X, Y, Z, cmap='hot_r') 
 ax.set_xlabel('x',fontsize=labelsize)
 ax.set_ylabel('y',fontsize=labelsize)
 ca = fig.colorbar(im)#, shrink=0.5, aspect=5)
 axins = ax.inset_axes([0.1, 0.5, 0.25, 0.25])
 axins.pcolor(A[0:4], B[0:4], Z[0:4,0:4], cmap='hot_r')
 axins.tick_params(axis='both', which='major', labelsize=11)
 for axis in ['top','bottom','left','right']:
     axins.spines[axis].set_linewidth(1)
     axins.spines[axis].set_color('gray')
 mark_inset(ax, axins, loc1=2, loc2=4, fc="none", ec='gray', lw=1)
 plt.tight_layout()

您可以为颜色条创建一个额外的插入轴。例如。位于插图的右侧。然后创建一个颜色条来证明这个轴(cax=...)。

请注意,pcolor 在给定的 x 和 y 位置之间创建人脸(大像素)。因此,您需要多一行和一列的位置然后是颜色的数量。当前版本的 matplotlib 在给出太多颜色(或没有足够的 x 和 y 位置)的情况下给出警告。

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1.inset_locator import mark_inset

A = np.linspace(1, 20, 20)
B = A
X, Y = np.meshgrid(A, B)
Z = X ** 2 + Y ** 2
fig, ax = plt.subplots()
im = ax.pcolor(X, Y, Z[:-1, :-1], cmap='hot_r')
ax.set_xlabel('x', fontsize=12)
ax.set_ylabel('y', fontsize=12)
ca = fig.colorbar(im)  # , shrink=0.5, aspect=5)
axins = ax.inset_axes([0.1, 0.5, 0.25, 0.25])
axins_cbar = ax.inset_axes([0.37, 0.5, 0.02, 0.25])
img_in = axins.pcolor(A[0:5], B[0:5], Z[0:4, 0:4], cmap='hot_r')
axins.tick_params(axis='both', which='major', labelsize=11)
for axis in ['top', 'bottom', 'left', 'right']:
    axins.spines[axis].set_linewidth(1)
    axins.spines[axis].set_color('gray')
mark_inset(ax, axins, loc1=2, loc2=4, fc="none", ec='gray', lw=1)
fig.colorbar(img_in, cax=axins_cbar)
plt.tight_layout()

plt.show()