Pregunta

Tengo una pregunta de seguimiento a esta pregunta .

¿Es posible racionalizar la generación de figuras al tener múltiples scripts de Python que funcionan en diferentes partes de la figura?

Por ejemplo, si tengo las siguientes funciones:

  

Función A: dibujar un histograma de algo
  Función B: Dibuja un cuadro con un texto adentro
  Función C: Dibuja un diagrama de algo C
  FunctionD: Dibuja un diagrama de algo D

¿Cómo hago para reutilizar las funciones anteriores en diferentes scripts? Si quisiera, por ejemplo, crear una figura con un histograma con una gráfica de algo C, de alguna manera llamaría a FunctionA y FunctionC desde mi script. O, si quisiera una figura con las dos parcelas, llamaría a FunctionC y FunctionD.

No estoy seguro si me estoy explicando claramente, pero otra forma de hacer esta pregunta es esta: ¿cómo paso un objeto figura a una función y luego hago que la función dibuje algo al objeto figura pasado y luego ¿devolverlo al guión principal para agregar otras cosas como el título o algo así?

¿Fue útil?

Solución

Aquí desea utilizar los Objetos de artista y pasarlos según sea necesario para las funciones:

import numpy as np
import matplotlib.pyplot as plt

def myhist(ax, color):
    ax.hist(np.log(np.arange(1, 10, .1)), facecolor=color)

def say_something(ax, words):
    t = ax.text(.2, 20., words)
    make_a_dim_yellow_bbox(t)

def make_a_dim_yellow_bbox(txt):
    txt.set_bbox(dict(facecolor='yellow', alpha=.2))

fig = plt.figure()
ax0 = fig.add_subplot(1,2,1)
ax1 = fig.add_subplot(1,2,2)

myhist(ax0, 'blue')
myhist(ax1, 'green')

say_something(ax0, 'this is the blue plot')
say_something(ax1, 'this is the green plot')

plt.show()

 texto alternativo

Otros consejos

Okey, he descubierto cómo hacer esto. Fue mucho más simple de lo que había imaginado. Solo requirió un poco de lectura aquí con el figura y clases .

En su script principal:

import pylab as plt  
import DrawFns  
fig = plt.figure()  
(do something with fig)  
DrawFns.WriteText(fig, 'Testing')  
plt.show()

En su DrawFns.py:

def WriteText(_fig, _text):  
[indent]_fig.text(0, 0, _text)

¡Y eso es todo! Y puedo agregar más funciones en DrawFns.py y llamarlas desde cualquier script siempre que estén incluidas en la llamada import . : D

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top