2015-07-10 13 views
5

eksen yerine, Şekil koordinat sistemi ya da bu mümkün değilse, en azından bazı mutlak bir koordinat sistemi içinde etiketlemek).ayarlayın eksenler I (eksenleri etiketin koordinatlarını belirlemek için oldukça ekseninden Şekil koordinat sistemi kullanmak isteyen

Diğer bir deyişle bu iki örnekte aynı pozisyonda etikete istiyorum:

import matplotlib.pyplot as plt 
from pylab import axes 

plt.figure().show() 
ax = axes([.2, .1, .7, .8]) 
ax.plot([1, 2], [1, 2]) 
ax.set_ylabel('BlaBla') 
ax.yaxis.set_label_coords(-.1, .5) 
plt.draw() 

plt.figure().show() 
ax = axes([.2, .1, .4, .8]) 
ax.plot([1, 2], [1, 2]) 
ax.set_ylabel('BlaBla') 
ax.yaxis.set_label_coords(-.1, .5) 

plt.draw() 
plt.show() 

matplotlib bu mümkün mü?

Illustrate difference

cevap

2

Evet. Bir koordinat sisteminden diğerine çeviri yapmak için dönüşümler kullanabilirsiniz. Burada ayrıntılı bir açıklama var: http://matplotlib.org/users/transforms_tutorial.html

Şekil koordinatlarını kullanmak istiyorsanız, önce koordinatlarını görüntülemek için şekil koordinatlarından dönüştürmeniz gerekir. Bunu fig.transFigure ile yapabilirsiniz. Daha sonra, ekseni çizmeye hazır olduğunuzda, ax.transAxes.inverted() öğesini kullanarak göstergeden eksenlere dönüştürebilirsiniz. Ben arıyordu Tam olarak ne

import matplotlib.pyplot as plt 
from pylab import axes 

fig = plt.figure() 
coords = fig.transFigure.transform((.1, .5)) 
ax = axes([.2, .1, .7, .8]) 
ax.plot([1, 2], [1, 2]) 
axcoords = ax.transAxes.inverted().transform(coords) 
ax.set_ylabel('BlaBla') 
ax.yaxis.set_label_coords(*axcoords) 
plt.draw() 

plt.figure().show() 
coords = fig.transFigure.transform((.1, .5)) 
ax = axes([.2, .1, .4, .8]) 
ax.plot([1, 2], [1, 2]) 
ax.set_ylabel('BlaBla') 
axcoords = ax.transAxes.inverted().transform(coords) 
ax.yaxis.set_label_coords(*axcoords) 

plt.draw() 
plt.show() 
+0

. Teşekkür ederim. –

İlgili konular