def draw_group(data, panel_params, coord, ax, **params):
data = coord.transform(data, panel_params)
data['size'] *= SIZE_FACTOR
color = to_rgba(data['color'], data['alpha'])
# start point -> end point, sequence of xy points
# from which line segments are created
x = interleave(data['x'], data['xend'])
y = interleave(data['y'], data['yend'])
segments = make_line_segments(x, y, ispath=False)
coll = mcoll.LineCollection(segments,
edgecolor=color,
linewidth=data['size'],
linestyle=data['linetype'][0],
zorder=params['zorder'])
ax.add_collection(coll)
if 'arrow' in params and params['arrow']:
adata = pd.DataFrame(index=range(len(data)*2))
idx = np.arange(1, len(data)+1)
adata['group'] = np.hstack([idx, idx])
adata['x'] = np.hstack([data['x'], data['xend']])
adata['y'] = np.hstack([data['y'], data['yend']])
other = ['color', 'alpha', 'size', 'linetype']
for param in other:
adata[param] = np.hstack([data[param], data[param]])
params['arrow'].draw(
adata, panel_params, coord, ax,
params['zorder'], constant=False)
评论列表
文章目录