2010-01-08 19 views
10

किसी को भी पता है कि matplotlib में एक आंकड़ा के भीतर एक व्यक्ति subplot के चारों ओर एक सीमा आकर्षित करने के लिए आकर्षित? मैं pyplot उपयोग कर रहा हूँ।matplotlib में subplots के चारों ओर एक सीमा

जैसे:

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

..लेकिन अक्ष वस्तुओं नहीं 'edgecolor' है, और मुझे या तो आंकड़ा स्तर से साजिश की रूपरेखा तैयार करने के लिए एक रास्ता खोजने के लिए प्रतीत नहीं कर सकते हैं।

मैं वास्तव में एमपीएल कोड लपेट रहा हूं और नियंत्रण के साथ एक डब्ल्यूएक्स यूआई जोड़ रहा हूं जिसे मैं संदर्भ देना चाहता हूं कि किस सबप्लॉट का चयन किया गया है। अर्थात उपयोगकर्ता आंकड़ा कैनवास के भीतर subplot पर क्लिक करता है - subplot 'चुना' किया जाता है (एक रूपरेखा, जिसके चारों ओर आदर्श sawtooth है) - जीयूआई अद्यतन है कि विशिष्ट subplot संशोधित करने के लिए नियंत्रण पेश करने के लिए।

उत्तर

8

आप अनिवार्य रूप से कुल्हाड़ियों के बाहर आकर्षित करने के लिए, है ना?

मैं here से अनुकूलित। यह साफ की जरूरत के रूप में मैं कुछ हार्ड-कोडेड "फ़ज-कारकों" वहाँ में इस्तेमाल किया जाएगा।

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

का उत्पादन:

enter image description here

संबंधित मुद्दे