2012-01-04 12 views

cevap

23

Onay etiketlerini kaldırır ve metni patches ile değiştiririm. Bu, aşağıdaki şekilde sonuçlanır

import matplotlib.pyplot as plt 
import matplotlib.patches as patches 


# define where to put symbols vertically 
TICKYPOS = -.6 

fig = plt.figure() 
ax = fig.add_subplot(111) 
ax.plot(range(10)) 

# set ticks where your images will be 
ax.get_xaxis().set_ticks([2,4,6,8]) 
# remove tick labels 
ax.get_xaxis().set_ticklabels([]) 


# add a series of patches to serve as tick labels 
ax.add_patch(patches.Circle((2,TICKYPOS),radius=.2, 
          fill=True,clip_on=False)) 
ax.add_patch(patches.Circle((4,TICKYPOS),radius=.2, 
          fill=False,clip_on=False)) 
ax.add_patch(patches.Rectangle((6-.1,TICKYPOS-.05),.2,.2, 
           fill=True,clip_on=False)) 
ax.add_patch(patches.Rectangle((8-.1,TICKYPOS-.05),.2,.2, 
           fill=False,clip_on=False)) 

:

enter image description here

O clip_onFalse ayarlı anahtarıdır aksi patches eksen dışında olmayacak İşte bu işi yapmak için kısa bir örnek gösterilen. Yamaların koordinatları ve boyutları (yarıçap, genişlik, yükseklik vb.) Eksenlerinizin nerede olduğuna bağlı olacaktır. Örneğin, bunu alt yazılar ile yapmayı düşünüyorsanız, diğer herhangi bir eksenle çakışmayacak şekilde yamaları yerleştirmeye duyarlı olmanız gerekir. Transformations'u araştırmak ve başka bir birimde (Eksen, Şekil veya Gösterge) konum ve boyutları tanımlamak için zaman ayırmaya değer olabilir.

Semboller için kullanmak istediğiniz belirli görüntü dosyalarınız varsa, yamalara eksenlere eklenecek sanatçılar oluşturmak için BboxImage sınıfını kullanabilirsiniz.

import matplotlib.pyplot as plt 

fig = plt.figure(figsize=(1,1),dpi=400) 
ax = fig.add_axes([0,0,1,1],frameon=False) 
ax.set_axis_off() 

ax.plot(range(10),linewidth=32) 
ax.plot(range(9,-1,-1),linewidth=32) 

fig.savefig('thumb.png') 

bu resim üreten:

enter image description here

O zaman kene etiketi ve boyut I istediğiniz konumda bir BboxImage yarattı Örneğin aşağıdaki komut ile basit simge yapılan istiyorum:

lowerCorner = ax.transData.transform((.8,TICKYPOS-.2)) 
upperCorner = ax.transData.transform((1.2,TICKYPOS+.2)) 

bbox_image = BboxImage(Bbox([lowerCorner[0], 
          lowerCorner[1], 
          upperCorner[0], 
          upperCorner[1], 
          ]), 
         norm = None, 
         origin=None, 
         clip_on=False, 
         ) 

Ben, yüklenebileceğini birimleri görüntülemek için veri birimlerini dönüştürmek için transData dönüşümü nasıl kullandığını fark h, Bbox tanımında gereklidir.

Şimdi imread rutin kullanarak görüntüdeki okuyun ve bbox_image verilerine yapıp sonuçlarını (bir numpy dizi) ayarlamak ve eksenlerine sanatçı ekleyin:

bbox_image.set_data(imread('thumb.png')) 
ax.add_artist(bbox_image) 

Bu güncelleştirilmiş ortaya çıkan rakam :

from matplotlib.image import BboxImage,imread 
from matplotlib.transforms import Bbox 
: enter image description here

doğrudan emin gereken sınıfları ve yöntemleri aktarmak yapmak, resimleri kullanabilirsiniz yoksa

İlgili konular