目的是在主axes中绘制图形时,需要在旁边新建colorbar,因为直接使用 fig.colorbar()
会直接占用主图的一部分区域,所以需要 def 几个解决这一问题的函数。

import matplotlib.pyplot as plt
import matplotlib as mpl
from psutil import cpu_count

首先引入所需包。

def add_box(ax, ls, color, alpha):
    '''用红框标出一个ax的范围.
    ax, ls, color, alpha
    axpos = ax.get_position()
    rect = mpl.patches.Rectangle(
        (axpos.x0, axpos.y0), axpos.width, axpos.height,
        lw=3, ls=ls, ec=color, fc='none', alpha=alpha,
        transform=ax.figure.transFigure
    ax.patches.append(rect)

定义函数为绘图区域添加带颜色边框。

def add_right_cax(ax, pad, width):
    在一个ax右边追加与之等高的cax.
    pad是cax与ax的间距.
    width是cax的宽度.
    axpos = ax.get_position()
    caxpos = mpl.transforms.Bbox.from_extents(
        axpos.x1 + pad,
        axpos.y0,
        axpos.x1 + pad + width,
        axpos.y1
    cax = ax.figure.add_axes(caxpos)
    return cax
def add_up_cax(ax, pad, height):
    在一个ax上边追加与之等宽的cax.
    pad是cax与ax的间距.
    height是cax的宽度.
    axposition = ax.get_position()
    caxposition = mpl.transforms.Bbox.from_extents(
        axposition.x0,
        axposition.y1 + pad,
        axposition.x1,
        axposition.y1 + pad + height
    cax = ax.figure.add_axes(caxposition)
    return cax
def add_down_cax(ax, pad, height):
    在一个ax上边追加与之等宽的cax.
    pad是cax与ax的间距.
    height是cax的宽度.
    axposition = ax.get_position()
    caxposition = mpl.transforms.Bbox.from_extents(
        axposition.x0,
        axposition.y0 - pad - height,
        axposition.x1,
        axposition.y0 - pad 
    cax = ax.figure.add_axes(caxposition)
    return cax

定义三个添加cax的函数,其中pad均为和主ax的间距,
另外,(x0,y0)指的是左下角的边界点(见下文);(x1,y1)指的是右上角的边界点(见下文)。

fig = plt.figure(1)
ax0 = fig.add_subplot(111)
axposition = ax0.get_position()
print(axposition)
ax0.plot(axposition.x0,axposition.y0, '*')
ax0.text(axposition.x0+0.02,axposition.y0, '(x0,y0)')
ax0.plot(axposition.x1,axposition.y1, '*')
ax0.text(axposition.x1-0.05,axposition.y1-0.05, '(x1,y1)')

这里是在图中绘制出三个点的位置。

cax_0 = add_right_cax(ax0, pad=0.05, width=0.05)
cax_1 = add_down_cax(ax0, pad=0.08, height=0.05)
cax_2 = add_up_cax(ax0, pad=0.05, height=0.05)
cax_1.minorticks_off()
cax_0.minorticks_off()
cax_2.minorticks_off()
cax_0.set_yticklabels([])
cax_1.set_xticklabels([])
cax_2.set_xticklabels([])

添加三个cax区域。

add_box(ax=cax_0, ls='-', color='r', alpha=0.5)
add_box(ax=cax_1, ls='-.', color='b', alpha=0.5)
add_box(ax=cax_2, ls='--', color='m', alpha=0.5)
plt.show()

为三个cax添加带颜色的box边框。

结果如图所示

data_origin = read_csv['origin'] data_origin = data_origin.values data_improve = read_csv['improve'] data_improve = data_improve.values print(data_origin) import matplotlib.pyplot as plt import nump
转载于:Matplotlib 系列:colorbar 的设置 该文为我很及时的解决了我的烦恼,再次向作者致意~ 作者一直在持续更新python系列,请支持原作者,文章来源:炸鸡人博客 0. 前言 承接 Matplotlib 系列:colormap 的设置 一文,这次介绍 colorbar。所谓 colorbar 即主图旁一个长条状的小图,能够辅助表示主图中 colormap 的颜色组成和颜色与数值的对应关系。本文将会依次介绍 colorbar 的基本用法、如何设置刻度,以及怎么为组图添加 colorbar