Is there an order in which Igor creates graphs?
Irvine_audit
Since I found it rather difficult to get any short example code that makes sense I am just trying to describe the problem:
I have a do-while-loop running that screens all subfolders in a folder for the wave matching a certain numver. When the wave is found it should be appended to a subgraph within a window.
Then the loop ends and I modify the first subgraph. I am using "GetAxis" to get the axis scaling of the y-axis. Then I create two more subgraphs containing the average and standard deviation of the traces in the first graph. For the second subgraph I set the left axis to V_min and V_max created by "GetAxis" but it does not work since the values are wrong.
It seems that although all traces of the first graph should already be appended to the graph before I am modifying it, the actual appendage is done only shortly before the second subgraph is created. So what is clearly happening in the above case is that not the axis scaling of the final graph is taken but only the axis scaling when the graph is created with the very first trace!
Could somebody please explain this behaviour to me? I am looking forward to your answers.
Best regards,
Martin
PS: A very short code version that does not run would look like that:
do // I have a certain break-statement before that works, so don't worry about that
all_ap = WaveList(waveident, ";", "") // a string list created individually for every folder I am screening
count = ItemsInList(all_ap)
the_ap = StringFromList(ap_ident[define_offset], all_ap) //identifying the right wave
if (index==0) // first run creates an empty window...
Display/W=(10,10,600,600) as graphname
DoWindow/C $graphname
Display/W=(0.05,0.01,0.95,0.33)/Host=# $the_ap //... and the first subwindow
else
AppendToGraph/W=$graphname#G0 $the_ap //afterwards traces are apended
endif
reftrace = dref+objname+":"+the_ap //this is a work-around to get the full path of each wave so that fwaveaverage.ipf works!
t2a[index]=reftrace
SetDataFolder dfr
index+=1
while(1)
// So the loop should done here, right?! As I understand it, all traces should be in the graph by now
ModifyGraph/W=$graphname#G0 rgb=(0,0,0)
GetAxis/Q left
TextBox/C/N=text0/F=0/A=LT/E=2 "\\f01 Plotted traces "+ap_ident_name[define_offset]
String list=""
Variable il, n= numpnts(t2a)
for(il=0; il<n; il+=1 )
list += t2a[il]+";"
endfor
fwaveaverage(list,"",1,1,ap_ident_name[define_offset]+"_average_w", ap_ident_name[define_offset]+"_sd")
Display/W=(0.05,0.33,0.95,0.66)/Host=## $(ap_ident_name[define_offset]+"_average_w")
ModifyGraph/W=$graphname#G1 rgb=(0,0,0)
SetAxis left V_min, V_max //This does not work!
all_ap = WaveList(waveident, ";", "") // a string list created individually for every folder I am screening
count = ItemsInList(all_ap)
the_ap = StringFromList(ap_ident[define_offset], all_ap) //identifying the right wave
if (index==0) // first run creates an empty window...
Display/W=(10,10,600,600) as graphname
DoWindow/C $graphname
Display/W=(0.05,0.01,0.95,0.33)/Host=# $the_ap //... and the first subwindow
else
AppendToGraph/W=$graphname#G0 $the_ap //afterwards traces are apended
endif
reftrace = dref+objname+":"+the_ap //this is a work-around to get the full path of each wave so that fwaveaverage.ipf works!
t2a[index]=reftrace
SetDataFolder dfr
index+=1
while(1)
// So the loop should done here, right?! As I understand it, all traces should be in the graph by now
ModifyGraph/W=$graphname#G0 rgb=(0,0,0)
GetAxis/Q left
TextBox/C/N=text0/F=0/A=LT/E=2 "\\f01 Plotted traces "+ap_ident_name[define_offset]
String list=""
Variable il, n= numpnts(t2a)
for(il=0; il<n; il+=1 )
list += t2a[il]+";"
endfor
fwaveaverage(list,"",1,1,ap_ident_name[define_offset]+"_average_w", ap_ident_name[define_offset]+"_sd")
Display/W=(0.05,0.33,0.95,0.66)/Host=## $(ap_ident_name[define_offset]+"_average_w")
ModifyGraph/W=$graphname#G1 rgb=(0,0,0)
SetAxis left V_min, V_max //This does not work!
You are missing an explicit
DoUpdate
after the loop as graphs are only updated after all functions are done.October 13, 2014 at 09:33 am - Permalink
October 14, 2014 at 02:58 am - Permalink