2010-01-08 7 views
10

Кто-нибудь знает, как нарисовать границу вокруг отдельного подзаголовка внутри фигуры в matplotlib? Я использую pyplot.нарисовать границу вокруг подзаголовков в matplotlib

например:

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

..но Топоры объекты не имеют «edgecolor», и я не могу найти способ, чтобы очертить сюжет от уровня фигуры либо.

Я на самом деле обертываю код mpl и добавляю wx-интерфейс с элементами управления, которые бы хотели иметь контекст, в зависимости от выбранного подзадачи. то есть пользователь нажимает на подзадачу в холсте фигуры - подзаголовок «выбран» (имеет контур, нарисованный вокруг него, в идеале пилообразный). Обновления GUI для представления элементов управления для изменения этого конкретного подзадачи.

ответ

8

Вы по существу хотите нарисовать вне осей, не так ли?

Я адаптировал это значение от here. Это нужно было бы очистить, поскольку я использовал некоторые жестко закодированные «fudge-factors» там.

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

Смежные вопросы