2010-08-31 24 views
15

İstediğim şey çok basit. Parsellerimin sol üst köşesinde görüntülemek istediğim "logo.png" adında küçük bir görüntü dosyası var. Ama matplotlibmatplotlib ile arsa köşesine küçük bir resim nasıl eklenir?

Im kullanarak Django, örnekleri galeride hiçbirini örnek bulamıyorum ve benim kod bu

def get_bars(request) 
    ... 
    fig = Figure(facecolor='#F0F0F0',figsize=(4.6,4)) 
    ... 
    ax1 = fig.add_subplot(111,ylabel="Valeur",xlabel="Code",autoscale_on=True) 
    ax1.bar(ind,values,width=width, color='#FFCC00',edgecolor='#B33600',linewidth=1) 
    ... 
    canvas = FigureCanvas(fig) 
    response = HttpResponse(content_type='image/png') 
    canvas.print_png(response) 
    return response 

herhangi bir fikir gibi bir şey ?? önceden thxs

cevap

25

Görüntünün gerçek rakamınızın köşesinde olmasını istiyorsanız (ekseninizin köşesinden değil), figimage'a bakın.

Belki de böyle bir şey? (PIL kullanarak görüntüyü okumak için):

import matplotlib.pyplot as plt 
import Image 
import numpy as np 

im = Image.open('/home/jofer/logo.png') 
height = im.size[1] 

# We need a float array between 0-1, rather than 
# a uint8 array between 0-255 
im = np.array(im).astype(np.float)/255 

fig = plt.figure() 

plt.plot(np.arange(10), 4 * np.arange(10)) 

# With newer (1.0) versions of matplotlib, you can 
# use the "zorder" kwarg to make the image overlay 
# the plot, rather than hide behind it... (e.g. zorder=10) 
fig.figimage(im, 0, fig.bbox.ymax - height) 

# (Saving with the same dpi as the screen default to 
# avoid displacing the logo image) 
fig.savefig('/home/jofer/temp.png', dpi=80) 

plt.show() 

alt text

başka seçenek, resim Heykelcigin genişlik/yükseklik sabit kesir olmak zorunda isterseniz bir "kukla" oluşturmak için eksenleri ve görüntüyü imshow ile yerleştirin. Bu şekilde resmin boyutunu ve konumunu DPI bağımsızdır ve Heykelcigin mutlak boyutu:

import matplotlib.pyplot as plt 
from matplotlib.cbook import get_sample_data 

im = plt.imread(get_sample_data('grace_hopper.jpg')) 

fig, ax = plt.subplots() 
ax.plot(range(10)) 

# Place the image in the upper-right corner of the figure 
#-------------------------------------------------------- 
# We're specifying the position and size in _figure_ coordinates, so the image 
# will shrink/grow as the figure is resized. Remove "zorder=-1" to place the 
# image in front of the axes. 
newax = fig.add_axes([0.8, 0.8, 0.2, 0.2], anchor='NE', zorder=-1) 
newax.imshow(im) 
newax.axis('off') 

plt.show() 
işe yaradı

enter image description here

+0

... çok Thxs! – pleasedontbelong

+0

Bu logoyu sağ alt köşeye göre yerleştirmenin bir yolu var mı? – Jared

+0

@Jared - Çizgiler boyunca bir şey deneyin: 'fig.figimage (im, fig.bbox.xmax - genişlik, yükseklik)' –

İlgili konular