目的是在主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。