【发布时间】:2019-02-22 07:52:31
【问题描述】:
我想使用axes_grid1 在我的一个子图旁边绘制一个颜色条。
问题是,make_axes_locatable 的调用会操纵我的子图,使其不再具有与其他图相同的大小。
这是我的问题的一个最小工作示例。
from mpl_toolkits.axes_grid1 import make_axes_locatable
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
fig, ax = plt.subplots(nrows=2, ncols=2, figsize=(15,5))
_ax = ax[0,:].flatten('C')
values_x = np.linspace(0, 2 * np.pi, 100)
values_y = np.sin(values_x)
vmax = np.amax(values_x)
vmin = np.amin(values_x)
s = 1
ticks_rotation = 10
ticks_num = 5
_ax = ax[0,:].flatten('C')
plot_w = _ax[0].scatter(values_x, values_y, c=values_x, cmap='rainbow', vmin=vmin, vmax=vmax, s=s)
plot_v = _ax[1].scatter(values_x, values_y, c=values_x, cmap='rainbow', vmin=vmin, vmax=vmax, s=s)
_ax = ax[1,:].flatten('C')
plot_w = _ax[0].scatter(values_x, values_y, c=values_x, cmap='rainbow', vmin=vmin, vmax=vmax, s=s)
plot_v = _ax[1].scatter(values_x, values_y, c=values_x, cmap='rainbow', vmin=vmin, vmax=vmax, s=s)
divider = make_axes_locatable(_ax[1])
cax = divider.append_axes('right', size='5%', pad=0.05)
v_delta = (vmax - vmin)*0.1
ticks = np.linspace(vmin+v_delta,vmax-v_delta,ticks_num)
cbar = fig.colorbar(plot_v, cax=cax, orientation='vertical', ticks=ticks)
cbar.ax.set_yticklabels(np.around(ticks,decimals=1), rotation=ticks_rotation,rotation_mode='default')
plt.show()
我想要的实际上是所有大小相同的子图,旁边有漂亮的颜色。 有什么建议吗?
编辑: 我真的只想在右下角的子图之外有颜色条,而不是像this。
【问题讨论】:
-
看看this?特别是函数
demo_grid_with_single_cbar(fig) -
是的,我已经看过这个但没有任何令人满意的结果(或者可能是我)。顺便提一句。我这边没有找到
demo_grid_with_single_cbar的解释。
标签: python python-3.x matplotlib subplot