Matplotlib:给子图添加colorbar(颜色条或渐变色
2018-08-24 本文已影响1047人
ACphart
描述
- 当我们给图配渐变色时,常常需要在图旁边把colorbar显示出来,这里记一下当有多个子图时如何显示colorbar
操作
- 以下操作均在Jupyter notebook中完成,且首段均有以下代码
In [1]: %matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
import mpl_toolkits.mplot3d as p3d
- 最近变懒了,下面就直接粘贴图片了 ~~
先看常规的给单个图配colorbar
- 这种没有子图的操作特别简单,一句
plt.colorbar()
就搞定,
再看给子图配colorbar
下面解释这段代码:
- 首先解释一下
fig.colorbar()
函数,我们看它的原型:
plt.Figure.colorbar(self, mappable, cax=None, ax=None, use_gridspec=True, **kw)
- 它一般有以下用法:
colorbar(**kwargs)
colorbar(mappable, **kwargs)
colorbar(mappable, cax=cax, **kwargs)
colorbar(mappable, ax=ax, **kwargs)
- 其中第一种用在没有子图的时候,也就是
plt.colorbar()
可以不用输入参数 - 后面三个一般用在有子图的时候,其中上面的例子中第8行就是用的这里第4种用法,这里有一个必须的参数
mappable
- 参数
mappable
理解起来就是我们需要提供一个可以映射颜色的对象,这个对象就是我们作的图 - 所以例子中6、7行我们需要获取这两个子图对象,然后将其传给
colorbar()
,colorbar
则会获取这个图所用的渐变颜色种类,之后的一个参数ax
用来指示colorbar()
获取到的渐变色条在哪里显示,我们设置ax=ax[0]
那它就在ax[0]
的区域显示,我们也可以改变渐变色条出现的位置,请对比下面和上面的区别:
- 我们还可以给
ax
参数设置成多个Axes
对象,这样一个色条就可以包括多个子图: