如何减少matplotlib中的colorbar WIDTH?

时间:2015-10-30 19:13:19

标签: 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()

enter image description here

2 个答案:

答案 0 :(得分:5)

寻找相同的答案我认为我发现更容易使用与当前版本的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)

enter image description here

答案 1 :(得分:3)

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

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

enter image description here