每个子图中的matplotlib颜色条

Cok*_*kes 26 python matplotlib colorbar

我想在2x2图中为每个子图添加一个单独的颜色条.

fig , ( (ax1,ax2) , (ax3,ax4)) = plt.subplots(2, 2,sharex = True,sharey=True)
z1_plot = ax1.scatter(x,y,c = z1,vmin=0.0,vmax=0.4)
plt.colorbar(z1_plot,cax=ax1)
z2_plot = ax2.scatter(x,y,c = z2,vmin=0.0,vmax=40)
plt.colorbar(z1_plot,cax=ax2)
z3_plot = ax3.scatter(x,y,c = z3,vmin=0.0,vmax=894)
plt.colorbar(z1_plot,cax=ax3)
z4_plot = ax4.scatter(x,y,c = z4,vmin=0.0,vmax=234324)
plt.colorbar(z1_plot,cax=ax4)
plt.show()
Run Code Online (Sandbox Code Playgroud)

我认为你就是这样做的,但结果情节真的搞砸了; 它只有一个全灰色背景,忽略了我有的set_xlim,set_ylim命令(为简单起见,这里没有显示).+它显示没有颜色条.这是正确的方法吗?

我也尝试摆脱"cax = ...",但是然后颜色条全部出现在右下方的情节而不是每个单独的情节!

Ram*_*nez 19

这可以通过实用程序轻松解决make_axes_locatable.我提供了一个最小的例子,展示了它是如何工作的,应该很容易适应:

每个图像的条形图

import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1 import make_axes_locatable

import numpy as np

m1 = np.random.rand(3, 3)
m2 = np.arange(0, 3*3, 1).reshape((3, 3))

fig = plt.figure(figsize=(16, 12))
ax1 = fig.add_subplot(121)
im1 = ax1.imshow(m1, interpolation='None')

divider = make_axes_locatable(ax1)
cax = divider.append_axes('right', size='5%', pad=0.05)
fig.colorbar(im1, cax=cax, orientation='vertical')

ax2 = fig.add_subplot(122)
im2 = ax2.imshow(m2, interpolation='None')

divider = make_axes_locatable(ax2)
cax = divider.append_axes('right', size='5%', pad=0.05)
fig.colorbar(im2, cax=cax, orientation='vertical');
Run Code Online (Sandbox Code Playgroud)


小智 17

请看一下这个matplotlib示例页面.在那里展示了如何使用每个子图的四个单独颜色条得到以下图:在此输入图像描述

我希望这有帮助.
您可以在这里进一步了解,在那里您可以找到许多可以做的事情matplotlib.


小智 16

plt.colorbar(z1_plot,cax=ax1),使用ax=而不是cax=,即plt.colorbar(z1_plot,ax=ax1)


Pat*_*nan 5

ax参数指定为matplotlib.pyplot.colorbar(),例如

import numpy as np
import matplotlib.pyplot as plt

fig,ax = plt.subplots(2,2)
for i in range(2) :
    for j in range(2) :
         data = np.array([[i,j],[i+0.5,j+0.5]])
         im = ax[i,j].imshow(data)
         plt.colorbar(im,ax=ax[i,j])

plt.show()
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明