typestar

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

  1. Una función por panel, y cada una devuelve el nombre de la ventana que hizo.
  2. El estilo se aplica en un solo lugar, así todos los paneles concuerdan.
  3. El layout los ensambla y la exportación escribe el archivo.

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

Paso 1 de 1 en Bis; paso 19 de 19 en Gráficos y presentación.

← Anterior