Poincare-Plot/Abtastrate

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
louneu
User
Beiträge: 2
Registriert: Donnerstag 3. November 2022, 14:43

Hallo Zusammen,
ich habe relativ frisch mit Python begonnen.
Die Idee ist, einen Poincare-Plot zu erstellen. Bedeutet, ich möchte meinen Graphen mit einer bestimmen Samplinrate abtasten und den vorhandenen Wert als Punkt in meinem Plot darstellen lassen.
Über Hilfe wäre ich sehr dankbar!
Im Anhang befindet sich mein aktuelles Skript.
Viele Grüße


import numpy as np
from nptdms import TdmsFile, TdmsWriter, ChannelObject
import numpy as np
from glob import glob
import os
import matplotlib.pyplot as plt
from scipy import signal
import pandas as pd
#Locale settings
import locale
# Set to German locale to get comma decimal separater
locale.setlocale(locale.LC_NUMERIC, "de_DE")
plt.rcParams['axes.formatter.use_locale'] = True


def explore_tdms(pathname):
"""
Explore data from TDMS file

Args:
pathname: name of the tdms file, which will be read
"""
tdms_file = TdmsFile.read(pathname)
print("Groups:")
for index, group in enumerate(tdms_file.groups()):
print("\tGroup {}: {}".format(index, group.name))
for idx, channel in enumerate(group.channels()):
print("\t\tChannel {}: {}".format(idx,channel.name))
print("Properties:")
for name, value in tdms_file.properties.items():
print("{0}: {1}".format(name, value))

def read_tdms(pathname, keys = [], groupname="", verbose=False):
"""
Read data from TDMS file

Args:
pathname: name of the tdms file, which will be read
keys: list of channel names for each column
groupname: name of group, under which the channels are placed (default is first group)
Returns:
numpy array containing a column for each channel
"""
tdms_file = TdmsFile.read(pathname)
group = tdms_file[groupname] if groupname != "" else tdms_file.groups()[0] # defaults to first group found, if none explicitly given
keys = keys if len(keys) != 0 else [channel.name for channel in group.channels()] # use all channels if none given
if verbose:
print(keys)
return [group[key][:] for key in keys]

files = glob('./34pcutFFT.tdms')
for file in files:
filename = os.path.basename(file)
output = filename[:-4] + 'npz'
if os.path.exists(output) and os.path.getmtime(filename) < os.path.getmtime(output):
print('Skipping {}...'.format(filename), flush=True)
continue
ata = np.transpose(read_tdms(filename,["CopyXt","CopyYdy","CopyYdx"]))
data =pd.DataFrame(data, columns=["CopyXt","CopyYdy","CopyYdx"])

plt.figure(figsize=(3.1,2))
plt.plot(data["CopyYdx"], data["CopyYdy"],c='midnightblue')
plt.xlabel('Auslenkung dx ',fontname='Arial',fontsize=11)
plt.ylabel('Auslenkung dy ',fontname='Arial',fontsize=11)
#plt.xlim(0,150)
plt.xticks([-0.08,-0.06,-0.04, -0.02,0,0.02,0.04],('-80','-60','-40','-20','0','mm','40'),fontname='Arial',fontsize=11)
plt.yticks([-0.08,-0.06,-0.04, -0.02,0,0.02,0.04],('-80','-60','-40','-20','0','mm','40'),fontname='Arial',fontsize=11)

plt.grid()
plt.legend()
plt.show()
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Bitte code-tags benutzen, das ist der </>-Knopf im vollstaendigen Editor. Und was genau ist jetzt die Frage? Gibt es Fehlermeldungen? Wenn ja, wie sehen die aus? Oder was tut nicht wie es soll?
louneu
User
Beiträge: 2
Registriert: Donnerstag 3. November 2022, 14:43

Vielen Dank für die Schnelle Rückmeldung. Ich weiß nicht so recht, welchen Befehl ich eingeben muss, damit meine Daten alle 0.025 sekunden abgetastet wird und als Punkt im Plot erscheint. In anderen Foren habe ich folgenden Befehl gefunden, führt bei mir aber zu Fehlermeldungen. Vielleicht kennt jemand eine andere Möglichkeit um sich den Wert zu einem bestimmten Zeitpunkt ausgeben zu lassen. Das Plotten ist dann vermutlich danach einfach


pyhrv.nonlinear.poincare(nni=None, rpeaks=None, show=True, figsize=None, ellipse=True, vectors=True, legend=True, marker='o')
Benutzeravatar
sparrow
User
Beiträge: 4540
Registriert: Freitag 17. April 2009, 10:28

Code bitte in Code Tags.
Das wurde dir bereits gesagt.
Code Tags erscheinen, wenn du den </> Button im vollständigen Editor drückst. Dazwischen gehört dein Code.

Und wenn schon Fehlermeldungen auftreten, wäre es auch sinnvoll die zu zeigen. Die Information reist nicht auf magische Weise mit.
Antworten