def annotate_ellipsoid(params, axs=None, crop_radius=1.2, **kwargs):
"""Annotates an ellipse on an image
Parameters
----------
params : tuple or dict
either (zr, yr, xr, zc, yc, xc) tuple
or dict with names ['zr', 'yr', 'xr', 'zc', 'yc', 'xc']
"""
from matplotlib.patches import Ellipse
ellipse_style = dict(ec='yellow', fill=False)
ellipse_style.update(kwargs)
ax_xy, ax_zy, ax_zx, ax_extra = axs
if isinstance(params, tuple):
zr, yr, xr, zc, yc, xc = params
else:
zr = params['zr']
yr = params['yr']
xr = params['xr']
zc = params['zc']
yc = params['yc']
xc = params['xc']
ax_xy.add_artist(Ellipse(xy=(xc, yc), width=xr*2, height=yr*2,
**ellipse_style))
ax_zy.add_artist(Ellipse(xy=(zc, yc), width=zr*2, height=yr*2,
**ellipse_style))
ax_zx.add_artist(Ellipse(xy=(xc, zc), width=xr*2, height=zr*2,
**ellipse_style))
# crop image around ellipse
ax_xy.set_xlim(xc - crop_radius * xr, xc + crop_radius * xr)
ax_xy.set_ylim(yc - crop_radius * yr, yc + crop_radius * yr)
ax_zy.set_xlim(zc - crop_radius * zr, zc + crop_radius * zr)
return axs
评论列表
文章目录