From: shuwj <shu...@16...> - 2010-07-13 08:22:41
|
Hi, I wanna know how to clip text outside a polygon path. In the attached a.png file, the polygon with red facecolor and green edgecolor is a Path. I want to get rid of the text 'aaaaaaaaunicode: Institut' outside the polygon and keep the part inside the polygon ('aaaaaaa') left. my code as follows. It can work out a 'right' result as i wanted. ------------------ # -*- coding: utf-8 -*- import matplotlib.pyplot as plt import matplotlib.path as mpath import matplotlib.patches as mpatches import matplotlib.pyplot as plt from matplotlib.transforms import * Path=mpath.Path lines = [ [1,1.5],[1,6],[6,3],[3,1.5],[1,1.5] ] codes=[Path.LINETO]*len(lines) codes[0]=Path.MOVETO codes[-1]=Path.CLOSEPOLY path=mpath.Path(lines,codes) patch=mpatches.PathPatch(path,facecolor='red',edgecolor='green',lw=2)#,alpha=1) fig = plt.figure() fig.suptitle('bold figure suptitle', fontsize=14, fontweight='bold') ax = fig.add_subplot(111) fig.subplots_adjust(top=0.85) ax.set_title('axes title') ax.set_xlabel('xlabel') ax.set_ylabel('ylabel') ax.text(3, 8, 'boxed italics text in data coords', style='italic', bbox={'facecolor':'red', 'alpha':0.5, 'pad':10}) ax.text(2, 6, r'an equation: $E=mc^2$', fontsize=15) t=ax.text(3, 2, unicode('aaaaaaaaunicode: Institut f\374r Festk\366rperphysik', 'latin-1')) t.set_clip_path(patch) ax.text(0.95, 0.01, 'colored text in axes coords', verticalalignment='bottom', horizontalalignment='right', transform=ax.transAxes, color='green', fontsize=15) ax.plot([2], [1], 'o') ax.annotate('annotate', xy=(2, 1), xytext=(3, 4), arrowprops=dict(facecolor='black', shrink=0.05)) ax.axis([0, 10, 0, 10]) ax.add_patch(patch) ax.set_clip_path(patch) plt.show() ------------------- Can anybody give me a example? thanks. david.shu 2010.7.13 |