2015-12-20 1 views
0

Как разместить текстового исполнителя относительно, например, другого текстового исполнителя или художника-легенды. Предположим, я хочу, чтобы какой-то текст был помещен под легендой, но в легенде будет переменное количество записей. Поэтому легенда охватывает неизвестное расстояние по размеру y. Независимо от того, насколько велика или мала легенда, я хочу разместить текст сразу под ней.Как привязать текстового исполнителя к художнику-легенде?

import matplotlib as mpl 
import matplotlib.pyplot as plt 
import matplotlib.lines as lines 

plt.figure(figsize=(11., 8.5)) 
plt.gcf().add_axes([0.05,0.05,0.6,0.6]) 
bar=lines.Line2D([],[], color="0.1", linewidth=2,ls=":", marker="1") 
plt.gca().legend([bar],["foo"],bbox_to_anchor=[1.,1.], loc="upper left") 
s=r"$\alpha$" 
s+=r"$\alpha_i \beta_j \gamma^k$" 
plt.text(1.02,0.8,s,transform=plt.gca().transData, wrap =True, fontsize ="xx-small") 
plt.show() 

В этом скрипте я хочу привязать текстового исполнителя к нижней части легендарного художника.

ответ

0

Я уверен, что если вы будете искать, вы сможете найти несколько примеров того, как это сделать.

Вот один из способов сделать это:

fig = plt.figure(figsize=(11., 8.5)) 
ax = fig.add_axes([0.05,0.05,0.6,0.6]) 
bar=lines.Line2D([],[], color="0.1", linewidth=2,ls=":", marker="1") 
leg = ax.legend([bar],["foo"],bbox_to_anchor=[1.,1.], loc="upper left") 
s=r"$\alpha$" 
s+=r"$\alpha_i \beta_j \gamma^k$" 

# You need to draw the artists before you can get its coordinates: 
plt.draw() 

# Now get coordinates of the legend 
p = leg.get_window_extent().inverse_transformed(ax.transAxes) 

# Set offset of the text in 'axes fraction' units 
# (if it is 0 text will be placed within the legend box, set 'zorder=9' as parameter to ax.annotate to see it) 
offset = 0.03 

# Now place the text on the plot 
ax.annotate('Annotation', (p.p0[0], p.p0[1] - offset), xycoords='axes fraction') 

plt.show() 

enter image description here

+0

Это Потрясающе! – EricVonB

Смежные вопросы