2010-01-08 36 views
10

Bất cứ ai cũng biết cách vẽ một đường viền xung quanh một subplot riêng lẻ trong một hình trong matplotlib? Tôi đang sử dụng pyplot.vẽ một đường viền xung quanh các ô con trong matplotlib

ví dụ:

import matplotlib.pyplot as plt 
f = plt.figure() 
ax1 = f.add_subplot(211) 
ax2 = f.add_subplot(212) 
# ax1.set_edgecolor('black') 

..nhưng trục đối tượng không có 'edgecolor', và tôi dường như không thể tìm thấy một cách để vạch ra những âm mưu từ cấp con số một trong hai.

Tôi đang thực sự gói mã mpl và thêm giao diện người dùng wx với các điều khiển mà tôi muốn có ngữ cảnh tùy thuộc vào phụ đề được chọn. tức là người dùng nhấp vào subplot trong canvas con - subplot là 'selected' (có phác thảo được vẽ xung quanh nó, ideal sawtooth) - GUI cập nhật để trình bày các điều khiển để sửa đổi subplot cụ thể đó.

Trả lời

8

Bạn về cơ bản muốn vẽ bên ngoài các trục, phải không?

Tôi đã điều chỉnh điều này từ here. Nó sẽ cần dọn dẹp khi tôi sử dụng một số "yếu tố fudge" cứng trong đó.

#!/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') 

Tạo:

enter image description here

Các vấn đề liên quan