我想绘制一些数据,但颜色条高于绘图。我该如何解决这个问题?
import numpy as np
import matplotlib.pyplot as plt
import scipy.interpolate
fig, ax = plt.subplots()
# Generate data:
x = np.linspace(1, 1, 10)
y = np.linspace(1,100, 10)
for i in range(10, 100, 10):
x = append(x, np.linspace(i, i, 10))
y = append(y, np.linspace(1, 100, 10))
z = numpy.random.uniform(-5, 5, size=100)
# Set up a regular grid of interpolation points
xi, yi = np.linspace(x.min(), x.max(), 100), np.linspace(y.min(), y.max(), 100)
xi, yi = np.meshgrid(xi, yi)
# Interpolate
rbf = scipy.interpolate.Rbf(x, y, z, function='linear')
zi = rbf(xi, yi)
s = ax.imshow(zi, vmin=z.min(), vmax=z.max(), origin='lower',
extent=[x.min(), x.max(), y.min(), y.max()])
plt.xlim([0,200])
#s = ax.scatter(x, y, c=z, marker = 's')
plt.colorbar(mappable=s, ax=ax)
plt.show()
答案 0 :(得分:1)
最简单的解决方案(对于您的示例)是删除行
plt.xlim([0,200])
但是既然你把它放在那里,我认为你真的想要/需要它。那么,你必须手动调整颜色条的高度:
cb = plt.colorbar(mappable=s, ax=ax)
plt.draw()
posax = ax.get_position()
poscb = cb.ax.get_position()
cb.ax.set_position([poscb.x0, posax.y0, poscb.width, posax.height])
使用shrink
的{{1}}参数作为@MaxNoe建议也可能会有所帮助。但是你必须摆弄它才能获得正确的价值。