2010-01-08 39 views
10

'daki alt piksellerin etrafına bir kenarlık çizme Matplotlib'deki bir şekil içindeki tek bir altpipin etrafına kenarlık çizmeyi bilen var mı? Ben pyplot kullanıyorum.matplotlib

örn:

nesneler hayır 'edgecolor' var ve ben de şekil seviyesinden arsa ana hatlarıyla için bir yol bulmak gibi olamaz Eksenleri ..fakat
import matplotlib.pyplot as plt 
f = plt.figure() 
ax1 = f.add_subplot(211) 
ax2 = f.add_subplot(212) 
# ax1.set_edgecolor('black') 

.

Aslında mpl kodunu ve hangi altpip seçili olduğuna bağlı olarak bağlamım olmasını istediğiniz denetimleri içeren bir wx UI ekliyorum. Kullanıcı Şekil tuvalinde altpip'i tıklatır - altpip 'seçilidir' (etrafında çizilen bir anahat vardır, ideal olarak testere dişi vardır) - GUI, belirli altpipleri değiştirmek için mevcut kontrollere günceller.

cevap

8

Esas olarak eksenlerin dışına çizmek istersiniz, değil mi?

Bunu here'dan uyarladım. Orada bazı sabit kodlu "fudge faktörleri" kullandığım kadar temizlemeniz gerekir.

#!/usr/bin/env python 
from pylab import * 

def f(t): 
    s1 = cos(2*pi*t) 
    e1 = exp(-t) 
    return multiply(s1,e1) 

t1 = arange(0.0, 5.0, 0.1) 
t2 = arange(0.0, 5.0, 0.02) 
t3 = arange(0.0, 2.0, 0.01) 

figure(figsize=(4, 4)) 
sub1 = subplot(211) 
l = plot(t1, f(t1), 'bo', t2, f(t2), 'k--', markerfacecolor='green') 
grid(True) 
title('A tale of 2 subplots') 
ylabel('Damped oscillation') 

## I ADDED THIS 
autoAxis = sub1.axis() 
rec = Rectangle((autoAxis[0]-0.7,autoAxis[2]-0.2),(autoAxis[1]-autoAxis[0])+1,(autoAxis[3]-autoAxis[2])+0.4,fill=False,lw=2) 
rec = sub1.add_patch(rec) 
rec.set_clip_on(False) 

subplot(212) 
plot(t3, cos(2*pi*t3), 'r.') 
grid(True) 
xlabel('time (s)') 
ylabel('Undamped') 

savefig('test.png') 

üretir:

enter image description here