Mehrere Plots in einer Figure

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
somo
User
Beiträge: 1
Registriert: Sonntag 10. Mai 2015, 18:04

Hallo liebe Forumsgemeinde,

als blutiger Anfänger habe ich versucht folgendes kurzes Matlabscript,

Code: Alles auswählen

x=(0:0.1:5);
w = 2;
s = 20;
zet = linspace(0.2,10,6);

figure(1)
for s=zet
n = 2-erf(x/(2*(w*s)^(1/2)));
plot(x,n)
hold on
xlabel('x');
ylabel('y')
end
in Pythoncode umzuwandeln.

Code: Alles auswählen

# -*- coding: utf-8 -*-

import numpy as np
import pylab as pl
from math import erf

x = np.arange(0,5,0.1)
zet = np.linspace(0.2,10,6)
w = 2
s = 20

for s in zet:
    np_erf = np.vectorize(erf)
    e = 2-np_erf(x/(2*(w*s)**(1/2)))
    
    pl.figure()
    pl.hold(True)
    pl.plot(x,e)
    pl.xlabel('x')
    pl.ylabel('y')
    pl.show()
Sicher strotzt der Versuch nur so vor Unzulänglichkeiten. Am gravierendsten für mich ist allerdings, dass die einzelnen Plots nicht wie im Matlabbeispiel in einer "figure" dargestellt werden bzw. auch mit der errorfunction anscheinend etwas nicht stimmt. Für Hilfe zu diesem Problem und auch bzgl. anderer problematischer Dinge wäre ich sehr dankbar.
Benutzeravatar
MagBen
User
Beiträge: 799
Registriert: Freitag 6. Juni 2014, 05:56
Wohnort: Bremen
Kontaktdaten:

Im Matlab Script ist das figure() Kommando außerhalb der Schleife und wird nur 1 Mal aufgerufen, im Python Script ist es innerhalb der Schleife und wird für jede Kurve aufgerufen. Deshalb hast Du in Matlab 1 "figure" und in Python 6 "figure". Den show() Befehl solltest Du auch aus der Schleife rausziehen und erst nach der Schleife aufrufen. Den Befehl hold() brauchst Du bei Matplotlib eigentlich nie. Die Funktion erf() gibt's zwar nicht in Numpy aber in Scipy: scipy.special.erf. Wenn Du Numpy benutzt, dann solltest Du das Modul math vermeiden. Die Funktion vectorize() ist nur eine Notlösung.
(w*s)**(1/2) ist ganz schlecht, bei Python 2 kommt da immer 1 raus und auch bei Python 3 ist np.sqrt(w*s) viel besser.
a fool with a tool is still a fool, www.magben.de, YouTube
Antworten