2016-04-29 3 views
-1

Sei f eine Funktion, die von einer unabhängigen Variablen x und einem (oder mehreren) Parameter b abhängt. Mein Ziel ist es, f für mehrere Werte von b in das gleiche Bild zu zeichnen. Und ich möchte, dass b ein globaler Wert ist (damit ich es schnell ändern kann). Betrachten Sie den CodePython: Mehrfachplotten in einem Teilplot2grid-image

import numpy as np 
import pylab as pl 

b=0.5 
def f(x,b): 
    return np.sin(x*b)*b 

X = np.linspace(0,10,1000) 
F = f(X,b) 
pl.figure(figsize=(12, 16), num="My sine") 
pl.plot(X, F, label='b = %f' %b) 
pl.legend(loc="best") 

Dieser Code mehrfach ausgewertet werden kann, nur mit einem anderen Wert für b. Dann werden alle Kurven in die gleiche Figur gezeichnet.

Jetzt das Problem: Wenn in dem obigen Code I

setzte
pl.subplot2grid((4, 1), (0, 0), rowspan=3) 

zwischen pl.plot und pl.legend wird jede neue Auswertung des Codes in eine neue leere Figur gezeichnet.

Also, wie kann ich erkennen, dass mit der Verwendung pl.subplot2grid jede Auswertung in die gleiche Zahl gezeichnet wird?

Antwort

1

suchen Sie vielleicht für so etwas wie dieses

import numpy as np 
import pylab as pl 

def f(x,b): 
    return np.sin(x*b)*b 

def draw(b): 
    X = np.linspace(0,10,1000) 
    F = f(X,b) 
    ax1.plot(X, F, label='b = %f' %b) 


# Main program 
fig = pl.figure(figsize=(12, 16), num="My sine") 
ax1 = pl.subplot2grid((4,3), (0,0), colspan=2) 

for b in [0.4, 0.5, 0.6]: 
    draw(b) 

pl.legend(loc="best") 
pl.show() 

enter image description here

+0

Die gute Sache über Ihren Vorschlag ist, dass es tatsächlich alle Kurven in die gleiche Zahl zeichnet. Wenn möglich, möchte ich aber einen globalen Wert behalten. – Chris

+0

Und die schlechte Sache? – tfv

+0

Ich möchte gerne ein globales b behalten, das nirgendwo sonst wie in der Schleife spezifiziert ist. – Chris

0

ich habe es jetzt mit einer for-Schleife in der LookAtf Funktion ?:, wie Sie, tfv, empfohlen. Hier ist mein Ergebnis My result

Allerdings tut die Legende immer noch nicht so, wie ich will. Aber trotzdem danke für die Hinweise!

@ Arthur Havlicek: Eigentlich ist mein Code bereits in 3 Teile unterteilt. Wenn der 3. Teil ausgewertet wird, importiert er automatisch den 2. Teil, der wiederum den 1. Teil automatisch importiert. Eigentlich ist es in meinem Fall nicht möglich, die Konstanten nach der Definition der Funktionen zu definieren. Der Grund dafür ist, dass die Art und Weise, wie die Funktionen definiert sind, von der Auswahl der Konstanten abhängt. Also muss ich zuerst die Konstanten definieren, damit Python weiß, wie es die Funktionen definieren soll.

Verwandte Themen