figure_builder.ipf en Igor Pro
Una figura de publicación construida por código: la siguiente saldrá igual sin que nadie recuerde cómo.
#pragma TextEncoding = "UTF-8"
#pragma rtGlobals = 3
Static Function ApplyHouseStyle(String win)
ModifyGraph/W=$win font="Helvetica", fSize=9, axThick=0.8
ModifyGraph/W=$win tick=2, mirror=1, standoff=0, lsize=1.2
ModifyGraph/W=$win margin(left)=44, margin(bottom)=34
End
Function/S TracePanel(WAVE y)
String win = "PanelTrace"
DoWindow/K $win
Display/N=$win/W=(20, 20, 380, 240) y
ModifyGraph/W=$win rgb=(0, 0, 45000)
Label/W=$win left, "Signal (V)"
Label/W=$win bottom, "Time (s)"
ApplyHouseStyle(win)
TextBox/W=$win/C/N=tag/A=LT/F=0 "A"
return win
End
Function/S HistogramPanel(WAVE y)
String win = "PanelHist"
DoWindow/K $win
WaveStats/Q y
Make/O/N=40/D hist
Histogram/B={V_min, (V_max - V_min) / 40, 40}/Dest=hist y
Display/N=$win/W=(20, 260, 380, 480) hist
ModifyGraph/W=$win mode=5, hbFill=2, rgb=(30000, 30000, 30000)
Label/W=$win left, "Count"
Label/W=$win bottom, "Signal (V)"
ApplyHouseStyle(win)
TextBox/W=$win/C/N=tag/A=LT/F=0 "B"
return win
End
Function BuildFigure(WAVE y)
String trace = TracePanel(y)
String hist = HistogramPanel(y)
DoWindow/K Figure1
NewLayout/N=Figure1
AppendLayoutObject/F=0/R=(60, 60, 380, 260) graph $trace
AppendLayoutObject/F=0/R=(60, 280, 380, 480) graph $hist
ModifyLayout mag=1, units=0
SavePICT/O/WIN=Figure1/E=-2/B=300 as "figure1.png"
Print "wrote figure1.png"
return 0
End
Cómo funciona
- Una función por panel, y cada una devuelve el nombre de la ventana que hizo.
- El estilo se aplica en un solo lugar, así todos los paneles concuerdan.
- El layout los ensambla y la exportación escribe el archivo.
Palabras clave y builtins usados aquí
EndFunctionStaticStringWAVEreturn
El intento, en números
- Líneas
- 55
- Caracteres a escribir
- 1330
- Tokens
- 350
- Ritmo de tres estrellas
- 90 tpm
Al ritmo de tres estrellas de 90 tokens por minuto, este intento toma unos 233 segundos.
Paso 1 de 1 en Bis; paso 19 de 19 en Gráficos y presentación.