08-02-2023 06:38 AM
Hallo Leute,
ich bräuchte dringend Hilfe.
Ich möchte in einem Balkendiagramm bei Reports einzelne Werte (z.B. Maximum eines Kanals) miteinander vergleichen. Das ganze sollte dann automatisiert mit einem Python-Skript laufen. Hat da jemand eine Idee? Ich kann immer nur ein Signal über die Zeit oder andere Kanäle darstellen. Dabei sollte in der X-Achse einfach Messung 1,2,3,... stehen, und in der y-Achse der jeweilige Maximalwert eines Kanals.
Bin dankbar über jede Hilfe!
LG Paul
Solved! Go to Solution.
08-03-2023 03:33 AM
Hallo Paul,
was ist genau die Aufgabe und was soll per Script automatisiert werden? Soll das Script lediglich die Kanäle anlegen, die später als Kurve bzw. Balken dargestellt werden sollen, oder soll es auch die Achsensysteme in REPORT anlegen und mit Kurven füllen? Beides ist in DIAdem möglich. Die Daten und das Layout können komplett per Script angelegt und parametriert werden.
Wenn es ein vorbereitetes Layout gibt, das bereits eine Kurve enthält, die die Balken darstellt, können mit folgendem Python-Script die Maxima von mehreren Kanälen als Balken angezeigt werden. Dazu läuft das Script über eine bestimmte Auswahl an Kanälen, die ich beispielhaft mit
dd.Data.GetChannels("[5]/Test_*")
bestimme, so dass alle Kanäle, die mit Test_ beginnen, verwendet werden. Anschließend wird der neue Kanal mit dem Namen "Maxima" angelegt und mit den Maximum-Werten der Kanäle gefüllt. Diesen Kanal habe ich bereits im REPORT-Layout als Balken-Kurve eingetragen. Das könnte aber auch per Script erfolgen.
def CreateMaximaChannel():
maxima = []
input_channels = dd.Data.GetChannels("[5]/Test_*")
for chn in input_channels:
maxima.append(chn.Maximum)
maxima_chn_name = "Maxima"
group_channels = dd.Data.Root.ActiveChannelGroup.Channels
if group_channels.Exists(maxima_chn_name):
chn_maxima = group_channels(maxima_chn_name)
else:
chn_maxima = group_channels.Add(maxima_chn_name, dd.DataTypeChnFloat64)
chn_maxima.SetValuesBlock(maxima)
# Load data and REPORT layout
dd.Data.Root.Clear()
dd.DataFileLoad("EXAMPLE.TDM", "", "Load|ChnXYRelation")
dd.Report.LoadLayout(dd.CurrentScriptPath + "Maxima_Bar.TDR")
# Create channel with maxima values
CreateMaximaChannel()
Wenn keine neuen Kanäle angelegt werden sollen, können Sie auch mit der Kuventransformation arbeiten, die einen temporären Kanal zum Zeichnen anlegt, der nicht im Datenportal sichtbar ist. Weitere Informationen finden Sie in der Hilfe.
Viele Grüße
AnJalpaka
08-04-2023 02:34 AM - edited 08-04-2023 03:12 AM
..