def get_plot_axes(self, figure=None, ax_xy=None):
import matplotlib.pyplot as plt
from mpl_toolkits.axes_grid1 import make_axes_locatable
xmin, xmax, ymin, ymax, zmin, zmax = self.get_extent()
if figure is None and ax_xy is None:
figure = plt.figure()
if figure is None and ax_xy is not None:
figure = ax_xy.get_figure()
if ax_xy is None:
ax_xy = figure.add_subplot(111)
ratio = float(xmax - xmin) / (ymax - ymin)
plot_xz_size = ((zmax - zmin)/(xmax - xmin))*100
plot_yz_size = plot_xz_size / ratio
plot_cbar_size = 5 # percent
xz_size = '%f %%' % plot_xz_size
yz_size = '%f %%' % plot_yz_size
cb_size = '%f %%' % plot_cbar_size
# ax_xy
divider = make_axes_locatable(ax_xy)
plt.setp(ax_xy.get_xticklabels(), visible=False)
ax_xy.set_xlim(xmin, xmax)
ax_xy.set_ylim(ymin, ymax)
ax_xy.set_aspect('equal', 'datalim')
plt.setp(ax_xy.get_yticklabels(), rotation=90, fontsize=12)
# ax_yz
ax_yz = divider.append_axes('right', size=yz_size, pad=0.05,
sharey=ax_xy)
plt.setp(ax_yz.get_yticklabels(), visible=False)
ax_yz.set_xlim(zmin, zmax)
ax_yz.set_ylim(ymin, ymax)
plt.setp(ax_yz.get_xticklabels(), rotation=90, fontsize=12)
plt.setp(ax_yz.get_yticklabels(), rotation=90, fontsize=12)
# ax_xz
ax_xz = divider.append_axes('bottom', size=xz_size, pad=0.05,
sharex=ax_xy)
ax_xz.set_xlim(xmin, xmax)
ax_xz.set_ylim(zmax, zmin)
# color-bar
ax_cb = divider.append_axes('bottom', size=cb_size, pad=0.5)
return ax_xy, ax_xz, ax_yz, ax_cb
评论列表
文章目录