Нарисуйте границу вокруг сюжетов в matplotlib - PullRequest
13 голосов
/ 08 января 2010

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

например:

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

.. но у объектов Axes нет 'edgecolor', и я не могу найти способ очертить график излибо на уровне фигуры.

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

1 Ответ

12 голосов
/ 08 января 2010

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...