Skip to main content

pyfug — High-Definition Time Series Analysis Graphics

Version Python License

pyfug es la migración a Python del programa FUG 1.12 (C/gnuplot), diseñado por Arthur B. Treadway y David E. Guerrero. Produce gráficos de series temporales de alta definición con las proporciones precisas del diseño Jenkins-Treadway, ahora usando matplotlib como motor gráfico.

¿Qué aporta sobre el FUG original?

Original (C + gnuplot) pyfug (Python + matplotlib)
Solo entrada .inp .inp, CSV, Excel, pandas, numpy
Solo salida EPS PDF vectorial, SVG, PNG, interactivo (Jupyter)
Solo CLI CLI + API Python + Jupyter notebooks
Gnuplot externo matplotlib integrado (sin dependencias externas)
Compilación C pip install
Sin integración Conectable con statsmodels, scipy, pandas

Instalación

cd pyfug
pip install -e .

# Opcional: soporte Jupyter
pip install -e ".[jupyter]"

Uso rápido

Desde línea de comandos

# Gráfico combinado (serie + ACF/PACF) — igual que FUG original
pyfug PU.inp one -c

# Set de identificación con hasta 2 diferencias regulares y 1 estacional
pyfug PU.inp set 2 1 -c

# Solo ACF/PACF con 24 lags
pyfug PU.inp one -b -l 24

# Histograma + mean-deviation chart
pyfug PU.inp one -d -e

Desde Python

from pyfug import read_inp, diffgraph

# Leer datos
ser = read_inp("PU.inp")

# Gráfico combinado con log y 1 diferencia regular
result = diffgraph(ser,
    boxlam=0.0,    # log
    nrdiff=1,      # 1 diferencia regular
    case_c=True,   # combinado
    return_figs=True)

fig = result['figures'][0]
fig.savefig("output.pdf")

Desde pandas/CSV

import pandas as pd
from pyfug import read_pandas, diffgraph

# Desde DataFrame
df = pd.read_csv("mis_datos.csv")
ser = read_pandas(df["precios"], name="IPC", freq=12, begyear=2020)

# Generar gráficos
result = diffgraph(ser, boxlam=0.0, nrdiff=1, case_c=True)

En Jupyter

from pyfug import read_inp
from pyfug.jupyter import display_diffgraph

ser = read_inp("PU.inp")

# Muestra todos los gráficos inline
transformed = display_diffgraph(ser,
    boxlam=0.0, nrdiff=1, nadiff=0,
    case_c=True, case_d=True, case_e=True)

Con modelos de estimación (statsmodels)

from statsmodels.tsa.arima.model import ARIMA
from pyfug.jupyter import from_statsmodels_result, diagnostic_plots

# Ajustar modelo
model = ARIMA(ser.data, order=(1, 1, 1))
result = model.fit()

# Extraer residuos como Tseries
resid_ser = from_statsmodels_result(result, name="Residuos ARIMA(1,1,1)")

# Gráficos de diagnóstico completos
diagnostic_plots(resid_ser, model_name="ARIMA111")

Tipos de gráficos

Flag Gráfico Descripción
-a Serie temporal Línea con etiquetas de año precisas
-b ACF/PACF Correlograma con bandas ±2/√n y Q de Ljung-Box
-c Combinado Serie + ACF/PACF en layout multi-panel
-d Histograma Histograma estandarizado + curva normal
-e Mean-Deviation Medias vs desviaciones típicas estandarizadas

Estructura del proyecto

pyfug/
├── pyfug/
│   ├── __init__.py          # API pública
│   ├── core.py               # Tseries dataclass
│   ├── io.py                 # Lectura .inp, CSV, Excel, pandas
│   ├── transform.py          # Box-Cox, diferencias
│   ├── statistics.py         # ACF, PACF, Ljung-Box, estadísticos
│   ├── graphics/
│   │   ├── __init__.py
│   │   ├── base.py           # Constantes y tema Jenkins-Treadway
│   │   ├── series.py         # Gráfico de serie
│   │   ├── acf_pacf.py       # Correlograma ACF/PACF
│   │   ├── combined.py       # Serie + ACF/PACF combinado
│   │   ├── histogram.py      # Histograma + normal
│   │   ├── mean_deviation.py # Mean-Deviation chart
│   │   └── engine.py         # Motor principal (diffgraph)
│   ├── latex.py              # Salida LaTeX
│   ├── cli.py                # Interfaz línea de comandos
│   └── jupyter.py            # Integración Jupyter
├── tests/
├── examples/
├── pyproject.toml
└── README.md

Diseño Jenkins-Treadway

El valor distintivo de FUG/pyfug está en las proporciones precisas de los gráficos:

  • ACF/PACF: Sin ticks en el eje X — usa líneas verticales y etiquetas manuales en los lags; bandas de confianza ±2/√n en rojo; estadístico Ljung-Box como etiqueta del eje X.
  • Serie temporal: Etiquetas de año en lugar de ticks; borde solo en izquierda e inferior; grid horizontal; grosor de línea calibrado.
  • Layout combinado: Serie grande a la izquierda, ACF y PACF a la derecha en dos paneles con proporciones exactas según número de lags y frecuencia de los datos.
  • Histograma: Estructura cuadrada con curva normal superpuesta; asimetría, curtosis y Jarque-Bera como etiqueta del eje X.

Licencia

GNU General Public License v2.0 — mismo régimen que el FUG original.

Autores

  • Arthur B. Treadway — diseño original Jenkins-Treadway, FUG 1.x (C)
  • David E. Guerrero — FUG 1.x (C), migración a Python 2.0

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyfug-2.0.0.tar.gz (42.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pyfug-2.0.0-py3-none-any.whl (44.1 kB view details)

Uploaded Python 3

File details

Details for the file pyfug-2.0.0.tar.gz.

File metadata

  • Download URL: pyfug-2.0.0.tar.gz
  • Upload date:
  • Size: 42.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for pyfug-2.0.0.tar.gz
Algorithm Hash digest
SHA256 1516988a69f9f7f77c560db0b70a693459cb2b54f334772676975d213697246f
MD5 bb0f69e8997a72731e44943b81d7412b
BLAKE2b-256 8de9a49f28bb96a5448926120a98c85e8ec384fb6f0767cdc8b0165e97d5f450

See more details on using hashes here.

File details

Details for the file pyfug-2.0.0-py3-none-any.whl.

File metadata

  • Download URL: pyfug-2.0.0-py3-none-any.whl
  • Upload date:
  • Size: 44.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for pyfug-2.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 24a62b13f9584e36837b7f75385c3c24232b4d6e132221a1d66b02da577aa2f0
MD5 efe96bf949b6fb8524fe422c86dfaffc
BLAKE2b-256 5207cb548cce4768b8d6da0c8969af65dae4c175cb2dbc3ed6151fd94eb5f925

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

2.0.0 This release

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page