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