python⾃定义函数画图_pythonmatplotlib⾃定义colorbar颜⾊
条-。。。
⾃定义colorbar(draw colorbar without any mapple/plot)
参考:Customized Colorbars Tutorial
api example code: colorbar_only.py
⾃定义colorbar可以画出任何⾃⼰想要的colorbar,⾃由⾃在、不受约束,不依赖于任何已有的图(plot/mappable)。这⾥使⽤的是lorbar.ColorbarBase类,⽽colorbar类必须依赖于已有的图。
关于该类的参数如下 (该类参数描述没到,部分参数的取值可参考colorbar中的描述):
lorbar.ColorbarBase(ax, cmap=None, norm=None, alpha=None, values=None, boundaries=None, orientation=‘vertical’, ticklocation=‘auto’, extend=‘neither’, spacing=‘uniform’, ticks=None, format=None, drawedges=False, filled=True, extendfrac=None, extendrect=False, label=’’)[source]
参数简单描述
ax :可⽤于设置colorbar的位置、长、宽
norm :⽤于规范化–设置颜⾊条最⼤最⼩值
cmap:颜⾊(可参考本篇博⽂的最后部分——推荐⾊带与⾃定义⾊带)
boundaries:要想使⽤extend,在norm之外,必须要有两个额外的boundaries
orientation:colorbar⽅向,躺平or垂直
extend:延伸⽅向(在norm之外colorbar可延伸)
ticks:⾃定义各段的tick(记号)
下⾯是⼀个例⼦,可以⾃⼰试试调整各项参数:
import numpy as np
import pylab as plt
import matplotlib as mpl
if __name__ == '__main__':
fig = plt.figure(figsize=(3, 8))
cmap = Spectral_r
ax3 = fig.add_axes([0.3, 0.2, 0.2, 0.5]) # 四个参数分别是左、下、宽、长
norm = lors.Normalize(vmin=1.3, vmax=2.5)
bounds = [ round(elem, 2) for elem in np.linspace(1.3, 2.5, 14)] #
cb3 = lorbar.ColorbarBase(ax3, cmap=cmap,
norm=norm,
# to use 'extend', you must
# specify two extra boundaries:
boundaries= [1.2] + bounds + [2.6],
extend='both',
ticks=bounds, # optional
spacing='proportional',
orientation='vertical')
plt.show()1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17linspace函数python
18
19
20
contourf函数
contour和contourf分别绘制轮廓线和填充轮廓线。两个版本的函数签名和返回值是相同的。关于两者画图的⼀些实例可以参阅python matplotlib contour画等⾼线图,以及matplotlib中⽂⽂档
contourf([X, Y,] Z, [levels], **kwargs) # [ ]表⽰该参数是可选的——可以给定也可以不给定1
contourf中的基本参数:
X, Y : array-like, optional
contourf参数中X和Y都必须是⼆维的,形状与Z相同(例如,通过shgrid创建);或者都必须是⼀维的,这样len(X) == M是Z中的列数,len(Y) == N是Z中的⾏数。
如果没有给定,则假设它们是整数索引,即X = range(M), Y = range(N)。
Z : array-like(N, M)
绘制轮廓线的⾼度值。
levels : int or array-like, optional
确定等⾼线/区域的数量和位置。
如果是int n,则使⽤n个数据间隔;即画n+1条等⾼线。⽔平⾼度是⾃动选择的。
如果类似数组,则在指定的级别上绘制等⾼线。这些值必须是递增的。
为所有⼦图添加⼀个⾊带
import numpy as np
import matplotlib.pyplot as plt
fig, axes = plt.subplots(nrows=2, ncols=2)
for ax in axes.flat:
im = ax.imshow(np.random.random((10,10)), vmin=0, vmax=1)
fig.subplots_adjust(right=0.8)
cbar_ax = fig.add_axes([0.85, 0.15, 0.05, 0.7])
plt.show()1
2
3
4
5
6
7
8
9
10
11
12
推荐⾊带与⾃定义⾊带
在画图的时候,可以⽤推荐⾊带。在Contourf 与记录颜⾊刻度中,发现contourf中有cmap参数,cmap即是⾊带。cmap的值可以参考Colormap reference。
下⾯这段代码来⾃Contourf 与记录颜⾊刻度
cs = ax.contourf(X, Y, z, locator=ticker.LogLocator(), cmap=cm.PuBu_r) # PuBu_r是PuBu⾊带的倒转
cbar = lorbar(cs)1
2
其中cmap就是使⽤matplotlib提供的⾊带,如果要⾃⼰制定⾊带可以⽤参数colors如下:
# Colors是⼀些⾃选颜⾊列表
Colors=
('#DDDDFF','#7D7DFF','#0000C6','#000079','#CEFFCE','#28FF28','#007500','#FFFF93','#8C8C00','#FFB5B5','#FF0000','#CE0000
urf(xi, yi, z, colors=Colors, levels=levels, extend='both') # 这⾥m是⼀个basemap实例1
2
3
在cmap中提供了⼀些默认⾊带: