Ich heiße Markus und schreibe im Moment meine Bachelorarbeit. Hierfür benötige ich ein Python-Skript, das eine Datei ausließt und gewisse Werte speichert. Diese Werte möchte ich anschließend in einem Liniendiagramm plotten und als Bild abspeichern.
Meine beiden Programmteile, also das Auslesen der Datei und Abspeichern der Werte, sowie das Plotten eines Diagramms funktionieren bisher unabhängig voneinander.
Nun habe ich das Problem, dass ich beim Zusammenfügen der beiden Programmteile keinen Plot erhalte.
Klingt vllt etwas verwirrend aber hier ist ein Minimalbeispiel dazu:
Dazu möchte ich noch erwähnen, dass ich den ersten Teil, also das Auslesen der Datei mittels PyCharm kontrolliert habe.
Die Ausgabe von PyCharm werde ich einfach im Programmbeispiel einfügen und kennzeichnen.
Das Plotten hat in PyCharm nicht funktioniert da ich keine Möglichkeit habe die Packages zu integrieren.
Es hat aber in einem anderen Programm, in welchem das Skript letztendlich auch laufen soll, funktioniert. Dort habe ich separate
Variablen übergeben.
--------------------------------------------------------------------------------------
Code: Alles auswählen
import matplotlib as mlp
import matplotlib.pyplot as plt
import numpy as np
from math import *
import csv
import pprint
# function must be named 'func'
def func(): # Das Skript wird später von einem anderen Programm verwendet, dazu gehört das "def func():"
.
.
.
.
. # hier wird die Datei ausgelesen und die Werte in die untenstehenden Variablen geschrieben
.
.
.
.
#ruhestrom = [] # Array mit den Ruhestromwerten
#zeit = [] # Array mit den Ruhestromzeiten
#max_t = max(zeit) # Gesamtmessdauer
#max_I = max(ruhestrom) # maximaler Ruhestrom
#t_maxI = zeit[index] # Zeitpunkt des maximalen Ruhestroms
# PyCharm gibt mir nach einem Print der Variablen, die Werte folgendermaßen aus (in Reihenfolge der oberen Variablennamen):
# [72.601, 72.493, ...] # hier stehen noch mehrere Werte drin
# [0.075613215591812, 0.2689515619894, ...]
# 350.970061064
# 75.155
# 122.464918764
# ---------------------------------------------------------------------------------------------------------
# ############ Diagramm erstellen ####################
# ----------------------------------------------------------------------------------------------------------
# Achsengroesse des Diagramms angeben
plt.axis([0, max_t*1.3, 0, max_I*1.3]) # x_min, x_max, y_min, y_max
plt.grid(True) # Raster im Diagramm hinterlegen
# Label fuer die x-,y-Achse vergeben:
plt.title('Ruhestrommessung', fontsize=25, color='gray')
plt.xlabel('Messdauer [t/s]')
plt.ylabel('Ruhestrom [I/mA]')
# x-y-Plot erstellen:
plt.plot(zeit, ruhestrom, color='red', linewidth=1, linestyle='-')
# Vertikale gestrichelte Linie an der Stelle 'MaxRuhestrom' einzeichnen
# (von der x-Achse bis zum maximalen Ruhestrom):
plt.plot([t_maxI, t_maxI], [0, max_I], color='red', linewidth=0.5, linestyle="--")
# Horizontal gestrichelte Linie an der Stelle 'MaxRuhestrom' einzeichnen
# (von der y-Achse bis zum maximalen Ruhestrom):
plt.plot([0, t_maxI], [max_I, max_I], color='red', linewidth=0.5, linestyle="--")
# Maximalen Wert des Ruhestroms mit Marker versehen:
# (Die x- und y-Werte muessen -- wie bei plot() -- als Liste angegeben werden)
# (Mit s=50 wird die Groesse ('size') auf 50 Pixel festgelegt)
plt.scatter([t_maxI], [max_I], s=50, marker='o', color='red')
#Das Achsen-Objekt des Diagramms in einer Variablen ablegen:
ax = plt.gca()
# Die obere und rechte Achse unsichtbar machen:
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
# Speichern als PNG-Datei:
plt.savefig('P:/.../Ruhestrommessung.png')
pass
Führe ich das Skript in meinem Programm aus, erhalte ich keine PNG-Datei im genannten Pfad.
Das Programm verfügt über keinen debugger, somit kann ich den Fehler auch kaum lokalisieren.
Vllt sieht der ein oder andere den Fehler bzw. das Problem und kann mir helfen?
Schöne Grüße
Markus