如何减少matplotlib中的colorbar WIDTH?

Chr*_*neB 5 python matplotlib ipython

我有一个我在ipython笔记本中使用两个导入的数据集和我为x轴制作的数组制作的情节,但颜色条有点厚,我喜欢.有没有办法让它更苗条?

#import packages
import numpy as np              #for importing u array
import matplotlib.pyplot as plt #for plotting
%matplotlib inline

th = np.loadtxt("MT3_th.dat") #imports data file- theta pert.
pi = np.loadtxt("MT3_pi.dat") #imports data file- pressure pert.
k  = np.loadtxt("MT3_z.dat")  #imports data file- height
i = np.linspace(-16.,16.,81)  #x-axis array
x, z = np.meshgrid(i, k)

th[th == 0.0] = np.nan #makes zero values for th white
clevels = [0.5, 1, 1.5, 2, 2.5, 3.]

fig = plt.figure(figsize=(12,12))
thplot = plt.contourf(x, z, th, clevels, cmap=plt.cm.Reds, vmin=0., vmax=3.)

ax2 = fig.add_subplot(111)
piplot = ax2.contour(x, z, pi, 6, colors='k')

plt.axis([-16.,16, 0, 16.])
plt.xticks(np.arange(-16,16.001,4))
plt.yticks(np.arange(0,16.001,2))
plt.colorbar(pad=0.05, orientation="horizontal")
plt.xlabel("x (km)", size=15)
plt.ylabel("z (km)", size=15)
plt.title("Initial temp. & pres. perturbations (K, Pa)", size=20)
plt.grid()
plt.show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

Nic*_*tin 8

寻找相同的答案我认为我发现更容易使用兼容当前版本的Matplotlib来减少颜色条的宽度.可以使用matplolib.figure函数的"ratio"选项(请参阅http://matplotlib.org/api/figure_api.html).这是一个例子:

import numpy as np
from matplotlib import pyplot as plt


# generate data 

x = np.random.normal(0.5, 0.1, 1000)
y = np.random.normal(0.1, 0.5, 1000)


hist = plt.hist2d(x,y, bins=100)

plt.colorbar(aspect=20)
plt.colorbar(aspect=50)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


Chr*_*neB 5

我能够使用 add_axes 手动修复它。(谢天谢地的同事们!)

cbar_ax = fig.add_axes([0.09, 0.06, 0.84, 0.02])
fig.colorbar(thplot, cax=cbar_ax, orientation="horizontal")
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明