← Documentación de Paper Studio

Manual de Noctiks

Comandos, parámetros y ejemplos ilustrados para crear gráficas científicas y diagramas en Paper Studio.

Esta es la referencia de uso de Noctiks: valores predeterminados, unidades, restricciones y 65 ejemplos con su resultado. Crea y compila el documento en una versión de Paper Studio que incluya las funciones utilizadas.

Ver todos los comandos

El texto del manual está traducido. Los ejemplos conservan su código LaTeX original y el texto de sus figuras para que fuente e imagen coincidan.

Cómo utilizar los ejemplos

Un bloque que empieza con \documentclass es un documento completo. Los demás bloques tex son fragmentos para insertar dentro de document, en una figura nueva, con \usepackage{noctiplots} en el preámbulo. Este paquete incluye también noctiks, por lo que sirve para todos los ejemplos. Las firmas con nombres descriptivos aparecen en bloques text y no se copian literalmente.

Para los fragmentos puede utilizarse este documento base en tamaño Letter, con márgenes de 15 mm y lienzos de hasta 520 bp de ancho. Al cambiar la página hay que comprobar tanto el área de texto como el tamaño real del PDF para evitar recortes.

LaTeX · ejemplo 1
\documentclass{article}
\usepackage[letterpaper,margin=15mm]{geometry}
\usepackage{noctiplots}
\setlength{\parindent}{0pt}
\begin{document}
\begin{center}
\begin{noctiaxis}[width=400,height=240][axes=box]
  \NoctiFunction[domain=-2:2]{x^2}
\end{noctiaxis}
\end{center}
\end{document}
Resultado del ejemplo 1: Cómo utilizar los ejemplos.
Ejemplo 1 · Cómo utilizar los ejemplos

Los ejemplos de tablas muestran filecontents* junto con el contenido de cada CSV. Para trabajar en Paper Studio, guardar ese contenido en un archivo de datos del proyecto con el nombre indicado y conservar la llamada a \NoctiTable o \NoctiScalarTable.

Las alternativas de una opción se prueban sustituyendo el valor indicado; no es necesario superponer todos los casos en una figura. Los errores deliberados se explican en prosa y no forman parte de los bloques compilables.

Convenciones de escritura y unidades

Noctiks crea gráficas y diagramas 2D con texto LaTeX editable. Carga noctiks para diagramas o noctiplots para disponer también de gráficas científicas. Compila el documento en Paper Studio para actualizar el PDF.

LaTeX · ejemplo 2
\documentclass{article}
\usepackage[letterpaper,margin=15mm]{geometry}
\usepackage{noctiplots}
\setlength{\parindent}{0pt}
\begin{document}
\begin{figure}[htbp]
\centering
\begin{noctiaxis}[width=360,height=220]
  [axes=origin-box,xmin=0,xmax=6.3,ymin=-1.2,ymax=1.2]
  \NoctiFunction[domain=0:6.3,stroke=blue,width=1.4]{sin(x)}
  \NoctiXLabel{$x$}
  \NoctiYLabel{$\sin(x)$}
\end{noctiaxis}
\caption{Una función evaluada por Noctiks y texto compuesto por LaTeX.}
\end{figure}
\end{document}
Resultado del ejemplo 2: Convenciones de escritura y unidades.
Ejemplo 2 · Convenciones de escritura y unidades

Las opciones se escriben como clave=valor y se separan con comas. Una clave desconocida, duplicada o sin = produce error. Los nombres distinguen mayúsculas y minúsculas. No se añade una clave a otro comando por analogía: cada familia tiene una lista admitida. En noctiaxis, el primer argumento opcional configura el lienzo; el segundo configura los ejes. En noctipanels, el primero configura el lienzo y el segundo la cuadrícula.

Notación Significado Ejemplo
x,y Par de coordenadas o componentes 2,3
x1,y1;x2,y2;... Lista de puntos 0,0;1,2;2,1
a:b Intervalo creciente cuando lo exige el comando 0:2*pi
r:g:b Color RGB con componentes entre 0 y 1 0.2:0.4:0.8
d1:d2:... Secuencia de trazo y espacio 5:3
a -> b -> c Lista de nodos en los comandos semánticos que la aceptan input -> G -> output
bp Punto PDF: 1/72 de pulgada width=360 equivale a 5 pulgadas de lienzo
Unidad de datos Unidad de los valores representados barwidth=0.5 es anchura en X, no 0.5 bp

Las coordenadas de diagramas se miden en bp desde la esquina inferior izquierda, con Y creciente hacia arriba. Las coordenadas de una gráfica son datos transformados por sus escalas. Grosor, símbolos, separación y medidas tipográficas emplean bp, salvo que una tabla indique otra unidad. Las cantidades usan punto decimal; se admite notación científica, como 1.2e-4. No escribas unidades dentro de valores numéricos: width=360, no width=360bp.

Las coordenadas y opciones numéricas deben ser finitas y tener valor absoluto no mayor que 1e12; cada parámetro puede imponer límites más estrechos. Las dimensiones del lienzo están en (0,2000] bp. Las constantes científicas pueden superar 1e12, pero su uso en una coordenada vuelve a someterse al límite gráfico.

El texto entre llaves de etiquetas admite LaTeX y matemáticas. Las fórmulas que evalúa Noctiks emplean su propia gramática numérica. Por ejemplo, una etiqueta puede ser $\sin(x)$, mientras que la fórmula de una curva es sin(x).

Noctiks reserva la caja del tamaño declarado. LaTeX decide su posición en la página; figure y \centering permiten centrarla. Aumentar el dominio de una función no cambia automáticamente un rango explícito de eje, y cambiar el rango visible no modifica el dominio de evaluación.

Expresiones matemáticas

El evaluador acepta números Double, las constantes incorporadas pi y e, constantes declaradas por el usuario y las operaciones de esta tabla. Las funciones reciben un argumento; los ángulos están en radianes.

Operador o función Significado y dominio real Ejemplo válido
+, - Suma, resta y signos unarios x+2, -x
*, / Multiplicación y división explícitas; divisor distinto de cero para un resultado finito 2*x, x/3
^ Potencia; debe dar un resultado real finito en cada evaluación útil x^2, 2^(-x)
(...) Agrupación (x+1)/(x+2)
sin(...) Seno sin(x)
cos(...) Coseno cos(2*x)
tan(...) Tangente; tiene singularidades tan(x)
asin(...) Arcoseno, argumento en [-1,1] asin(x/2)
acos(...) Arcocoseno, argumento en [-1,1] acos(x/2)
atan(...) Arcotangente atan(x)
exp(...) Exponencial de base e exp(-x)
ln(...), log(...) Logaritmo natural, argumento positivo; son equivalentes ln(x), log(x)
log10(...) Logaritmo decimal, argumento positivo log10(x)
sqrt(...) Raíz cuadrada, argumento no negativo sqrt(x)
abs(...) Valor absoluto abs(x)
pi, e Constantes matemáticas incorporadas sin(pi/2), ln(e)

Primero se resuelven agrupación y funciones, después potencias, signos unarios, multiplicación/división y suma/resta. La potencia asocia a la derecha: 2^3^2 significa 2^(3^2). -2^2 vale -4; (-2)^2 vale 4. Los signos pueden aparecer en exponentes: 2^-2 vale 0.25.

Familia Variables admitidas Caso de uso
Función cartesiana, tramos, banda, relleno e integral x sin(x)
Curva paramétrica o polar t cos(t), 1+0.2*sin(3*t)
Campo vectorial o escalar y ecuaciones de trayectoria x, y -y, x, x^2+y^2
Definición de constante y configuración escalar Ninguna variable libre 2*pi, masa/gravedad

Se requiere multiplicación explícita: 2*x, a*b y sin(x) son válidos; 2x, ab como producto implícito y \sin(x) como fórmula numérica no lo son. ab se interpreta como un nombre de constante completo. No hay condicionales, comparaciones, funciones de varios argumentos, factoriales, matrices, números complejos, unidades automáticas ni funciones definidas por el usuario. Para definir una función por intervalos se utiliza \NoctiFunctionPiece.

LaTeX · ejemplo 3
\documentclass{article}
\usepackage[letterpaper,margin=15mm]{geometry}
\usepackage{noctiplots}
\setlength{\parindent}{0pt}
\begin{document}
\begin{noctiaxis}[width=420,height=250]
  [xmin=0.1,xmax=3,ymin=-3,ymax=4,palette=scientific]
  \NoctiFunction[domain=0.1:3]{ln(x)}
  \NoctiFunction[domain=0.1:3]{sqrt(x)}
  \NoctiFunction[domain=0.1:3]{exp(-x)*sin(2*pi*x)}
  \NoctiLegend{$\ln x$}
  \NoctiLegend{$\sqrt{x}$}
  \NoctiLegend{$e^{-x}\sin(2\pi x)$}
\end{noctiaxis}
\end{document}
Resultado del ejemplo 3: Expresiones matemáticas.
Ejemplo 3 · Expresiones matemáticas

Una fórmula sintácticamente válida puede dejar de estar definida en algunos puntos. En curvas, las muestras no finitas o fuera del límite gráfico se separan mediante huecos y diagnósticos. Esto no constituye una prueba matemática de continuidad; conviene revisar singularidades y elegir dominio y muestreo apropiados. En constantes, cualquier resultado no finito o dominio matemático inválido provoca error, aunque otra operación pudiera ocultarlo después.

Los límites predeterminados son 2048 bytes y 256 nodos de gramática por expresión, con profundidad 64. La profundidad cuenta niveles del parser, no exclusivamente paréntesis.

Constantes con nombre y alcance

Firma:

Referencia
\NoctiConstant{nombre}{expresión escalar}
Elemento Regla Ejemplo
nombre Letra ASCII inicial, seguida de letras ASCII, dígitos o _; 1–64 bytes; distingue mayúsculas masa_base, NA
expresión escalar Número finito o expresión sin x, y, t; admite otras constantes 68.1, masa/rozamiento
Nombres reservados x, y, t, pi, e y los 12 nombres de función anteriores Usa tiempo_final, no t
Definiciones por alcance 256 nombres efectivos por defecto, incluidos heredados Un panel puede sustituir masa
Dependencias Referencias adelantadas admitidas; ciclos prohibidos; hasta 64 niveles tau=masa/rozamiento

Las constantes declaradas antes de la primera figura pertenecen al documento y se heredan. Después de la primera figura, una declaración fuera de una figura es un error. Dentro de una figura, la declaración es local a esa figura; dentro de noctipanel, es local al panel. En noctipanels, una declaración fuera de sus paneles pertenece a la figura completa.

Una definición local sustituye una heredada y recalcula las dependencias heredadas en ese contexto. No modifica los otros paneles ni la siguiente figura. Dos definiciones del mismo nombre en un mismo alcance son un error; no se trata de asignaciones sucesivas. Las declaraciones se recogen antes de evaluar el contenido, de modo que una constante local puede configurar las opciones del eje que la contiene.

Ejemplo completo con parámetros físicos, dependencias y constante científica grande:

LaTeX · ejemplo 4
\documentclass{article}
\usepackage[letterpaper,margin=15mm]{geometry}
\usepackage{noctiplots}
\NoctiConstant{g}{9.8}
\NoctiConstant{masa}{68.1}
\NoctiConstant{rozamiento}{12.5}
\NoctiConstant{tau}{masa/rozamiento}
\NoctiConstant{velocidad_terminal}{g*masa/rozamiento}
\NoctiConstant{tiempo_final}{10*tau}
\NoctiConstant{NA}{6.02214076e23}
\NoctiConstant{cantidad}{1e-23}
\setlength{\parindent}{0pt}
\begin{document}
\begin{noctiaxis}[width=400,height=240]
  [xmin=0,xmax=tiempo_final,ymin=0,ymax=1.1*velocidad_terminal]
  \NoctiFunction[domain=0:tiempo_final,samples=301,stroke=blue]
    {velocidad_terminal*(1-exp(-x/tau))}
  \NoctiXLabel{$t$ (s)}
  \NoctiYLabel{$v(t)$ (m/s)}
\end{noctiaxis}
\par\medskip
\begin{noctiaxis}[width=360,height=220]
  [xmin=0,xmax=1,ymin=0,ymax=8]
  \NoctiFunction[domain=0:1]{NA*cantidad*x}
\end{noctiaxis}
\end{document}
Resultado del ejemplo 4: Constantes con nombre y alcance.
Ejemplo 4 · Constantes con nombre y alcance

Ejemplo de sustitución por panel y referencia adelantada local:

LaTeX · ejemplo 5
\documentclass{article}
\usepackage[letterpaper,margin=15mm]{geometry}
\usepackage{noctiplots}
\NoctiConstant{amplitud}{1}
\NoctiConstant{doble}{2*amplitud}
\setlength{\parindent}{0pt}
\begin{document}
\begin{noctipanels}[width=520,height=250]
  [rows=1,columns=2,share=both,xmin=0,xmax=6.3,ymin=-4.5,ymax=4.5]
  \begin{noctipanel}
    \NoctiFunction[domain=0:6.3]{doble*sin(x)}
    \NoctiTitle{Amplitud heredada}
  \end{noctipanel}
  \begin{noctipanel}
    \NoctiConstant{amplitud}{amplitud_local}
    \NoctiConstant{amplitud_local}{2}
    \NoctiFunction[domain=0:6.3]{doble*sin(x)}
    \NoctiTitle{Amplitud local}
  \end{noctipanel}
\end{noctipanels}
\end{document}
Resultado del ejemplo 5: Constantes con nombre y alcance.
Ejemplo 5 · Constantes con nombre y alcance

Los límites compartidos se evalúan con las constantes de la figura. Los límites propios de un panel se evalúan con las de ese panel; si un límite ya está compartido, el panel debe conservar el mismo valor. Cada alcance debe ser válido por sí mismo: una sustitución local no rescata una definición inválida del documento.

Estas entradas admiten constantes y expresiones escalares, conservando las restricciones particulares de cada comando:

Entrada Campos normalizados Ejemplo
Ejes, paneles y límites compartidos xmin, xmax, ymin, ymax, xtickstep, ytickstep, ylabeldx, cuando la familia admite la clave xmax=2*pi
Funciones y curvas domain, samples, maxsamples, rangesamples, barwidth, cuando corresponden samples=100+101
Función por tramos Extremos del intervalo y fórmula \NoctiFunctionPiece{0:pi}{sin(x)}
Relleno e integral domain, baseline, samples, n, según el comando baseline=-amplitud
Bandas domain, samples domain=0:tiempo_final
Campo escalar xdomain, ydomain, nx, ny, levels, levelcount, zmin, zmax levels=0:amplitud:doble
Campo vectorial xdomain, ydomain, nx, ny, scale scale=1/2
Trayectoria y línea de corriente Semilla, step, steps y fórmulas steps=10*50
Datos explícitos Coordenadas y distancias de error de NoctiPlot 0,amplitud;pi,doble
Anotaciones Coordenadas de Point, Segment, Vector y Region; posición de XLine/YLine y XTick/YTick; componentes de operaciones vectoriales \NoctiXLine{pi}

Un parámetro entero sigue exigiendo resultado entero: samples=2.5 es inválido. No se expanden macros TeX dentro de fórmulas. Las etiquetas no sustituyen nombres por sus valores; escribe su contenido tipográfico explícitamente.

Colores, grosor, opacidad, dimensiones del lienzo, márgenes, tolerancia adaptativa, identificadores, nombres de columnas, valores de CSV/TSV y geometría de diagramas mantienen su sintaxis propia. Una constante no convierte cualquier campo de texto en una expresión. ylabeldx es una excepción explícita de desplazamiento que sí se normaliza.

Ejemplos de errores de constantes y su corrección:

Caso rechazado Motivo Corrección
a=b+1, b=a+1 Dependencia circular Expresar una de ellas mediante un valor independiente
masa=2*masa en el mismo contexto Autorreferencia; no significa multiplicar un valor anterior Declarar masa_base y usar masa=2*masa_base
a=sqrt(-1) Resultado fuera del dominio real Corregir la expresión o su supuesto físico
Dos declaraciones locales de a Duplicado en el mismo alcance Conservar una declaración o separar escenarios en paneles
2masa Multiplicación implícita no admitida 2*masa
mi_constante no declarada Nombre desconocido Añadir su declaración en un alcance visible

Estilos comunes, colores y paletas

Las opciones de estilo siguientes forman la base compartida. Cada comando indica cuáles acepta; por ejemplo, los grupos semánticos rechazan arrow. Los rellenos científicos pueden definir valores por defecto diferentes de los de esta tabla.

Parámetro Valor base Valores y unidad Ejemplo
stroke black Nombre admitido o RGB; color del contorno stroke=blue
fill Ausente: sin relleno geométrico Nombre, RGB o none; algunos símbolos usan el color del trazo si no se fija fill=0.9:0.95:1
width 0.8 (0,100] bp width=1.4
dash Ausente: trazo continuo Hasta 8 longitudes en (0,1000] bp, separadas con : dash=5:3, dash=1:3:5:3
arrow none en el estilo base none, end, both; un comando puede establecer end como su valor propio arrow=end
opacity 1 [0,1]; afecta al dibujo nativo, no al texto LaTeX superpuesto opacity=0.25

stroke=none no es un color válido. Para desactivar un relleno se usa fill=none. Los trazos usan extremos y uniones redondeados. Un símbolo, un área o un conector puede tener semántica adicional descrita en su sección.

Color RGB exacto
black 0:0:0
white 1:1:1
blue 0.08:0.3:0.7
red 0.8:0.16:0.12
green 0.08:0.5:0.35
gray 0.6:0.6:0.6
cyan 0:0.65:0.75
orange 0.95:0.45:0.1
purple 0.5:0.2:0.65

No se interpretan colores hexadecimales, expresiones de xcolor ni nombres definidos con \definecolor en las opciones de Noctiks. Para un color propio, escribe tres componentes RGB entre 0 y 1.

LaTeX · ejemplo 6
\documentclass{article}
\usepackage{noctiks}
\setlength{\parindent}{0pt}
\begin{document}
\begin{noctikspicture}[width=320,height=160]
  \NoctiksRect[stroke=blue,fill=0.9:0.95:1,width=1.4]{20,30}{100,80}
  \NoctiksLine[stroke=red,width=2,dash=5:3,arrow=both]{145,40}{285,110}
  \NoctiksCircle[stroke=purple,fill=cyan,opacity=0.35]{220,75}{30}
  \NoctiksLabel{70,70}{Relleno RGB}
\end{noctikspicture}
\end{document}
Resultado del ejemplo 6: Estilos comunes, colores y paletas.
Ejemplo 6 · Estilos comunes, colores y paletas

Estilos de serie reutilizables

Firma:

Referencia
\NoctiStyle{nombre}{opciones de estilo}
\NoctiPlot[style=nombre,...]{...}

NoctiStyle se declara dentro de una figura. Acepta las seis claves de estilo base más marker y markersize. No acepta kind, dominios, muestreo ni límites de eje. El nombre debe ser único en la figura, no vacío y de hasta 32 caracteres ASCII entre letras, números y _. Se recopilan todas las definiciones de la figura antes de aplicarlas; pueden aparecer antes o después de su uso. Los nombres de estilos no son constantes numéricas.

Parámetro Predeterminado Valores y unidad Ejemplo
style en una serie Ausente Nombre de estilo declarado en la figura style=medida
marker auto auto, none, circle, square, triangle, diamond, cross marker=diamond
markersize 2.5 (0,20] bp markersize=3
palette en eje o panel none none, scientific, gray palette=scientific

Los estilos reutilizables se aplican a Plot, Function, Table, Parametric, Polar y FunctionPiece. No se aplican mediante style= a bandas, rellenos, trayectorias ni comandos de geometría. Un estilo declarado en un panel pertenece a toda la figura; no declares dos veces el mismo nombre en paneles diferentes.

La precedencia es: paleta del eje o panel → estilo nombrado → opciones escritas en la serie. Una clave explícita gana sobre la heredada. Una paleta reinicia su contador al comenzar cada eje o panel. Cada serie de las seis familias anteriores consume una posición, incluidas las que especifican su color explícitamente; las anotaciones y bandas no la consumen.

Paleta Comportamiento
none No asigna estilo automático; se conservan el estilo base, el nombrado y las opciones de la serie
scientific Repite blue, orange, green, purple, cyan, red; en barras también establece el relleno de ese color
gray Trazo negro; alterna continuo, 5:3, 1:3; las barras alternan rellenos RGB 0.25:0.25:0.25, 0.55:0.55:0.55, 0.8:0.8:0.8; scatter/error alternan circle, square, triangle, diamond y cross
LaTeX · ejemplo 7
\documentclass{article}
\usepackage[letterpaper,margin=15mm]{geometry}
\usepackage{noctiplots}
\setlength{\parindent}{0pt}
\begin{document}
\begin{noctiaxis}[width=420,height=250]
  [xmin=0,xmax=3,ymin=0,ymax=5,palette=scientific]
  \NoctiStyle{medida}{width=1.1,marker=diamond,markersize=3}
  \NoctiPlot[kind=scatter,style=medida]{0,1;1,2;2,2.5;3,4}
  \NoctiFunction[domain=0:3,width=1.5]{1+x}
  \NoctiFunction[domain=0:3,style=medida,stroke=purple,marker=none]{0.4+x}
  \NoctiLegend{Medidas}
  \NoctiLegend{Modelo}
  \NoctiLegend{Color explícito}
\end{noctiaxis}
\par\medskip
\begin{noctiaxis}[width=380,height=230]
  [xmin=0,xmax=3,ymin=0,ymax=5,palette=gray]
  \NoctiPlot[kind=scatter]{0,1;1,2;2,2.5;3,4}
  \NoctiPlot[kind=scatter]{0,1.5;1,2.5;2,3;3,4.5}
  \NoctiFunction[domain=0:3]{x+1}
\end{noctiaxis}
\end{document}
Resultado del ejemplo 7: Estilos de serie reutilizables.
Ejemplo 7 · Estilos de serie reutilizables

auto utiliza el símbolo que corresponde al tipo de serie: scatter/error muestran símbolos; una línea ordinaria permanece sin símbolos por defecto. Usa un nombre concreto para añadirlos expresamente o none para retirarlos.

Plantilla científica del repositorio

El siguiente ejemplo define un entorno ScientificPlot y un comando \MeasurementStyle reutilizables. Pueden copiarse al proyecto; son una plantilla de autoría y no comandos incorporados de noctiplots.

ScientificPlot usa lienzo 500 × 240 bp y opciones axes=box,palette=scientific,grid=major. Su argumento opcional añade otras opciones del eje. No repitas axes, palette o grid, porque las claves duplicadas fallan. \MeasurementStyle declara dentro de la figura un estilo measurement con marker=diamond,markersize=3,width=1.1.

Ejemplo autocontenido equivalente a cargar la plantilla:

LaTeX · ejemplo 8
\documentclass{article}
\usepackage[letterpaper,margin=15mm]{geometry}
\usepackage{noctiplots}
\newenvironment{ScientificPlot}[1][]{%
  \begin{noctiaxis}[width=500,height=240]
    [axes=box,palette=scientific,grid=major,#1]%
}{\end{noctiaxis}}
\newcommand{\MeasurementStyle}{%
  \NoctiStyle{measurement}{marker=diamond,markersize=3,width=1.1}%
}
\setlength{\parindent}{0pt}
\begin{document}
\begin{ScientificPlot}[xmin=0,xmax=3,ymin=0,ymax=5]
  \MeasurementStyle
  \NoctiPlot[kind=scatter,style=measurement]{0,1;1,2;2,3;3,4}
  \NoctiFunction[domain=0:3]{x+1}
\end{ScientificPlot}
\end{document}
Resultado del ejemplo 8: Plantilla científica del repositorio.
Ejemplo 8 · Plantilla científica del repositorio

Archivos CSV y TSV

Firma:

Referencia
\NoctiTable[opciones de serie y columnas]{ruta relativa}

La primera fila contiene encabezados únicos y no vacíos. Debe existir al menos una fila de datos; todas las filas tienen el mismo número de columnas. El archivo debe ser UTF-8, con BOM opcional. Se admiten finales de línea LF, CRLF y CR, campos entre comillas dobles y comillas escapadas mediante "". Se eliminan espacios exteriores de los campos y se ignoran filas completamente vacías.

Los nombres de columna distinguen mayúsculas y minúsculas. Cada celda utilizada como dato debe contener un número finito de valor absoluto no mayor que 1e12. La notación científica es válida. No se evalúan constantes ni fórmulas dentro del archivo: 2*pi, NA, NaN y Inf no son números de tabla válidos. Las columnas que no se representan pueden contener texto; ese texto no se convierte en LaTeX.

Parámetro de tabla Predeterminado Valores y condición Ejemplo
Ruta, argumento obligatorio Sin valor Ruta relativa al proyecto; sin componentes vacíos, . o .., ni \, :, NUL o / inicial datos/ensayo.csv
x x Encabezado de columna horizontal x=tiempo
y y Encabezado de columna vertical y=altura
delimiter tab si la extensión es .tsv, ignorando mayúsculas; comma en otros casos tab o comma; puede anularse explícitamente delimiter=comma
xerror Ausente: cero Columna de distancia de error simétrico X, no negativa xerror=sigma_t
yerror Ausente: cero Columna de distancia de error simétrico Y, no negativa yerror=sigma_h
xminus, xplus Ausentes: cero Pareja de columnas para distancias asimétricas X, no negativas xminus=tm,xplus=tp
yminus, yplus Ausentes: cero Pareja de columnas para distancias asimétricas Y, no negativas yminus=hm,yplus=hp
missing error error o gap; sólo una celda Y vacía se convierte en interrupción missing=gap
kind line line, scatter, bar, error; significado igual al de Plot kind=error
barwidth 0.8 Positivo, en unidades de datos X barwidth=0.5
id Ausente Identificador de serie para FillBetween; véase su sección id=medicion
Estilo de serie Estilo común stroke, fill, width, dash, arrow, opacity, marker, markersize, style stroke=blue,marker=circle

No combines error simétrico y asimétrico en el mismo eje. Una pareja asimétrica debe contener ambos encabezados, aunque una de las distancias sea cero. Los errores son distancias respecto al dato central, no extremos absolutos. Las columnas X e Y y sus errores deben producir coordenadas compatibles con las escalas del eje.

Una tabla de una sola muestra requiere un tipo distinto de line, por ejemplo kind=scatter. Una línea necesita al menos dos muestras finitas. missing=gap no ordena ni interpola la tabla: mantiene el orden de las filas e interrumpe la polilínea. X sigue siendo obligatorio en una fila con Y vacía; NA no representa una celda vacía.

Ejemplo con columnas propias y errores simétricos. En un proyecto normal, guarda el contenido CSV en datos-simetricos.csv y elimina el entorno filecontents*; aquí se incluye para que el documento sea autocontenido.

LaTeX · ejemplo 9
\documentclass{article}
\usepackage[letterpaper,margin=15mm]{geometry}
\usepackage{noctiplots}
\begin{filecontents*}{datos-simetricos.csv}
tiempo,altura,sigma_t,sigma_h
0,1.0,0.05,0.15
1,2.2,0.05,0.20
2,2.8,0.08,0.18
3,4.1,0.10,0.25
\end{filecontents*}
\setlength{\parindent}{0pt}
\begin{document}
\begin{noctiaxis}[width=400,height=240]
  [xmin=-0.2,xmax=3.3,ymin=0,ymax=5]
  \NoctiTable[x=tiempo,y=altura,xerror=sigma_t,yerror=sigma_h,
    kind=error,marker=diamond,stroke=blue]{datos-simetricos.csv}
  \NoctiXLabel{Tiempo (s)}
  \NoctiYLabel{Altura (m)}
\end{noctiaxis}
\end{document}
Resultado del ejemplo 9: Archivos CSV y TSV.
Ejemplo 9 · Archivos CSV y TSV

Ejemplo con errores asimétricos en ambos ejes:

LaTeX · ejemplo 10
\documentclass{article}
\usepackage[letterpaper,margin=15mm]{geometry}
\usepackage{noctiplots}
\begin{filecontents*}{datos-asimetricos.csv}
x,y,xm,xp,ym,yp
1,2,0.1,0.2,0.2,0.4
2,3,0.2,0.1,0.3,0.5
3,4,0.1,0.3,0.4,0.2
\end{filecontents*}
\setlength{\parindent}{0pt}
\begin{document}
\begin{noctiaxis}[width=400,height=240]
  [xmin=0,xmax=4,ymin=0,ymax=5]
  \NoctiTable[kind=error,xminus=xm,xplus=xp,yminus=ym,yplus=yp,
    marker=square,stroke=purple]{datos-asimetricos.csv}
\end{noctiaxis}
\end{document}
Resultado del ejemplo 10: Archivos CSV y TSV.
Ejemplo 10 · Archivos CSV y TSV

Ejemplo con un hueco explícito. Las filas antes y después de x=2 forman segmentos separados.

LaTeX · ejemplo 11
\documentclass{article}
\usepackage[letterpaper,margin=15mm]{geometry}
\usepackage{noctiplots}
\begin{filecontents*}{datos-hueco.csv}
x,y
0,0
1,1
2,
3,2
4,3
\end{filecontents*}
\setlength{\parindent}{0pt}
\begin{document}
\begin{noctiaxis}[width=400,height=240]
  [xmin=0,xmax=4,ymin=0,ymax=4]
  \NoctiTable[missing=gap,marker=circle,stroke=green]{datos-hueco.csv}
\end{noctiaxis}
\end{document}
Resultado del ejemplo 11: Archivos CSV y TSV.
Ejemplo 11 · Archivos CSV y TSV

Para TSV, crea por ejemplo datos.tsv con un tabulador real entre cada campo y usa \NoctiTable{datos.tsv}. No escribas los dos caracteres \t en lugar del tabulador. Si un archivo tabulado tiene otra extensión, especifica delimiter=tab; si un archivo .tsv contiene comas, especifica delimiter=comma.

Límites predeterminados: 8 000 000 bytes por archivo, 128 columnas, 8192 bytes de contenido por campo y hasta 100 000 filas de datos, además del presupuesto compartido de puntos de la figura. El encabezado no cuenta como fila de datos. Los campos entre comillas pueden contener delimitadores; para representar un número sigue siendo necesario que el campo completo sea numérico.

Ejes y área de dibujo

noctiaxis recibe dos listas opcionales distintas: dimensiones físicas y configuración del eje. Las coordenadas interiores usan unidades de datos; el ancho, alto, grosores y desplazamientos usan bp. Un bp equivale a 1/72 de pulgada.

Referencia
\begin{noctiaxis}[width=420,height=260][opciones del eje]
  comandos de series, anotaciones y etiquetas
\end{noctiaxis}

Si se omite la primera lista, el lienzo mide 320 × 200 bp. Para configurar únicamente el eje, escribir \begin{noctiaxis}[][axes=box]. width en la primera lista mide el lienzo completo, incluidos los márgenes y las leyendas; en una serie mide el grosor del trazo.

Límites y presentación

Parámetro Valores y predeterminado Efecto y ejemplo
xmin, xmax Números finitos dentro de ±1e12; automáticos al omitirlos Límites horizontales. Debe cumplirse mínimo < máximo. xmin=-2,xmax=2.
ymin, ymax Igual contrato; automáticos Límites verticales. ymin=-1,ymax=4.
xscale, yscale linear o log; linear Escala lineal o logaritmo base 10. yscale=log.
axes edge, origin, box, origin-box; edge Ejes inferior/izquierdo; cruce en cero; marco; marco y cruce en cero, respectivamente.
ticks axis o edge edge por defecto con origin-box; axis en los demás. Decide dónde van marcas y números.
axisarrows none, end, both; none Puntas en los dos ejes principales, no en todos los bordes del marco. end apunta hacia X/Y positivos.
aspect auto o equal; auto equal conserva la misma longitud física por unidad X e Y; requiere ejes lineales.
xmargin, ymargin Fracción de 0 a 1; 0 Añade esa fracción del rango a cada extremo automático. ymargin=0.1 añade 10 % por lado.
ylabeldx De −40 a 40 bp; 0 Ajusta la etiqueta Y horizontal. Positivo la acerca al eje. Requiere \NoctiYLabel y espacio sin invadir números.
labelcollision manual o avoid; manual Colocación opcional de etiquetas de puntos; véase Anotaciones y referencias.
bars overlay, grouped, stacked; overlay Disposición de todas las series de barras del eje.
palette none, scientific, gray; none Estilos por orden de serie. Véase Estilos y colores.

El autorango incluye muestras de series, extremos de errores, anchura y altura de barras, límites de bandas directas y extensión de mallas escalares. Puntos anotados, líneas de referencia, vectores explícitos, campos vectoriales, regiones y rellenos bajo curva no lo amplían. Para dibujar solo con estas decoraciones, declarar los cuatro límites. Si existen series pero ninguna aporta muestras finitas ni otros datos de rango, el eje falla aunque se hayan escrito límites; una línea exige además sus dos muestras finitas.

Los límites explícitos tienen prioridad y recortan la geometría; el dominio de evaluación de una función se configura por separado. Un rango automático constante se expande. En origin y origin-box, los extremos automáticos lineales incluyen cero antes de aplicar márgenes. Si cero queda fuera de un rango explícito, el eje cruza en el borde más cercano y emite diagnóstico; en escala log cruza en el límite inferior.

Las escalas log requieren coordenadas y extremos de error positivos, incluso cuando los datos están fuera de la ventana visible. Los márgenes log se calculan en espacio log10. aspect=equal conserva los límites y centra un área reducida dentro del lienzo; no fuerza un marco cuadrado cuando los rangos X/Y son distintos. El área útil debe medir al menos 70 × 60 bp después de reservar textos.

Ejemplo con origen, marco, flechas y proporción geométrica:

LaTeX · ejemplo 12
\begin{noctiaxis}[width=420,height=280]
  [axes=origin-box,ticks=edge,axisarrows=end,aspect=equal,
   xmin=-2,xmax=2,ymin=-1.5,ymax=1.5]
  \NoctiParametric[domain=0:2*pi,samples=301]{cos(t)}{sin(t)}
  \NoctiXLabel{$x$}\NoctiYLabel{$y$}
\end{noctiaxis}
Resultado del ejemplo 12: Límites y presentación.
Ejemplo 12 · Límites y presentación

Ejemplo de escala logarítmica y márgenes automáticos:

LaTeX · ejemplo 13
\begin{noctiaxis}[width=400,height=250]
  [axes=box,yscale=log,xmargin=0.05,ymargin=0.1]
  \NoctiFunction[domain=0:4,samples=101]{exp(x)}
  \NoctiXLabel{$x$}\NoctiYLabel{$e^x$}
\end{noctiaxis}
Resultado del ejemplo 13: Límites y presentación.
Ejemplo 13 · Límites y presentación

Cuadrícula y marcas

Parámetro Valores y predeterminado Efecto y ejemplo
grid true, false, major, minor, both, none; true true equivale a major; false, a none.
gridaxis both, x, y; both Líneas verticales de X, horizontales de Y o ambas.
xtickstep, ytickstep Paso positivo; selección automática si se omiten Solo en escalas lineales. xtickstep=0.5. Máximo 200 marcas mayores por eje.
xminor, yminor Enteros de 1 a 10; 2 Subdivisiones por intervalo mayor. 1 no añade líneas menores.
gridcolor Color; 0.86:0.88:0.9 Color de líneas mayores. gridcolor=gray.
gridwidth Grosor de trazo en (0,100] bp; 0.4 gridwidth=0.6.
griddash Lista positiva con :; continua griddash=3:2; griddash= vuelve a continuo.
gridopacity De 0 a 1; 1 gridopacity=0.5.
minorgridcolor Color; 0.94:0.94:0.94 Color de líneas menores.
minorgridwidth Grosor en (0,100] bp; 0.25 minorgridwidth=0.3.
minorgriddash Lista positiva con :; continua minorgriddash=1:3.
minorgridopacity De 0 a 1; 1 minorgridopacity=0.6.

Cambiar el estilo no activa una cuadrícula apagada. Las subdivisiones menores no añaden números ni pequeñas marcas al eje. En log se espacian geométricamente: con dos subdivisiones entre 1 y 10, la línea intermedia está en √10. El recorrido menor se limita a 2000 candidatos por eje y al presupuesto de figura.

LaTeX · ejemplo 14
\begin{noctiaxis}[width=420,height=260]
  [xmin=-2,xmax=2,ymin=0,ymax=4,axes=box,grid=both,gridaxis=both,
   xtickstep=1,ytickstep=1,xminor=4,yminor=2,
   gridcolor=gray,gridwidth=0.5,griddash=3:2,gridopacity=0.7,
   minorgridcolor=cyan,minorgridwidth=0.25,minorgriddash=1:3,
   minorgridopacity=0.35]
  \NoctiFunction[domain=-2:2,stroke=blue]{x^2}
\end{noctiaxis}
Resultado del ejemplo 14: Cuadrícula y marcas.
Ejemplo 14 · Cuadrícula y marcas

\NoctiXTick{posición}{texto TeX} y \NoctiYTick{posición}{texto TeX} sustituyen todas las marcas automáticas del eje correspondiente. No amplían límites. Se admiten hasta 200 por eje, con posiciones distintas y dentro del rango final. No combinarlas con xtickstep/ytickstep del mismo eje. La cuadrícula mayor sigue las posiciones; la menor subdivide los intervalos entre marcas, sin extrapolar fuera de las personalizadas. Una única marca no genera subdivisiones.

LaTeX · ejemplo 15
\begin{noctiaxis}[width=420,height=250]
  [xmin=-pi,xmax=pi,ymin=-1.2,ymax=1.2,axes=origin-box,grid=both]
  \NoctiFunction[domain=-pi:pi,samples=301]{sin(x)}
  \NoctiXTick{-pi}{$-\pi$}\NoctiXTick{0}{$0$}
  \NoctiXTick{pi/2}{$\pi/2$}\NoctiXTick{pi}{$\pi$}
  \NoctiYTick{-1}{$-1$}\NoctiYTick{1}{$1$}
\end{noctiaxis}
Resultado del ejemplo 15: Cuadrícula y marcas.
Ejemplo 15 · Cuadrícula y marcas

Títulos y leyendas

Comando Argumento y comportamiento
\NoctiTitle{texto} Un título por eje.
\NoctiXLabel{texto} Una etiqueta X, exterior al área de datos.
\NoctiYLabel{texto} Una etiqueta Y horizontal, exterior.
\NoctiLegend{texto} Una entrada por serie, en el orden de series. Puede omitirse la leyenda de las últimas series.

Los textos aceptan TeX y se miden con su tipografía real. Los rellenos, regiones, bandas, referencias y vectores explícitos no consumen entradas de leyenda. Trayectorias y líneas de flujo sí son series. Las leyendas reproducen trazo, marcadores, relleno de barras y errores; su posición no se optimiza para evitar curvas.

Parámetro Valores y predeterminado Ejemplo y efecto
legendpos right, topright, topleft, topcenter, bottomleft, bottomcenter, bottomright, center, custom; right right es exterior; las demás son interiores.
legendsize inherit, tiny, scriptsize, footnotesize, small, normalsize, large; inherit legendsize=small aplica la fuente antes de medir.
legendgap De 0 a 100 bp; automático al omitirlo Sin valor explícito, paso de fila = máximo entre 18 bp y altura mayor + 6 bp. Con valor: altura mayor, mínimo 5 bp, + gap.
legendpadding De 0 a 100 bp Interior: 8 bp horizontales y 6 verticales si se omite; legendpadding=5 usa 5 en ambos.
legenddx, legenddy De −2000 a 2000 bp; 0 Desplazan derecha/arriba con signo positivo.
legendat u:v, ambos de 0 a 1; obligatorio en custom legendat=0.5:0.98: posición relativa al área de datos, independiente de la escala.
legendanchor northwest, north, northeast, center, southwest, south, southeast; northwest Punto del recuadro que se fija en legendat; solo con custom.

legendat y legendanchor requieren legendpos=custom. Una leyenda interior debe caber en el área útil; la exterior, en su espacio disponible. Si se sale, se produce error. El fondo blanco interior tapa geometría; los textos TeX de otras etiquetas se componen encima. Una fuente explícita dentro de una entrada puede prevalecer sobre legendsize.

LaTeX · ejemplo 16
\begin{noctiaxis}[width=440,height=280]
  [xmin=-2,xmax=2,ymin=-2,ymax=6,axes=box,
   legendpos=custom,legendat=0.5:0.98,legendanchor=north,
   legendsize=small,legendgap=2,legendpadding=5,legenddx=0,legenddy=-2,
   ylabeldx=2]
  \NoctiFunction[domain=-2:2,stroke=blue]{x^2}
  \NoctiFunction[domain=-2:2,stroke=red,dash=4:2]{x}
  \NoctiLegend{$x^2$}\NoctiLegend{$x$}
  \NoctiTitle{Dos modelos}\NoctiXLabel{$x$}\NoctiYLabel{$f(x)$}
\end{noctiaxis}
Resultado del ejemplo 16: Títulos y leyendas.
Ejemplo 16 · Títulos y leyendas

Series de datos y barras de error

Referencia
\NoctiPlot[opciones]{x,y;...}
\NoctiTable[opciones]{ruta relativa del CSV o TSV}

Las muestras se conservan en orden; Noctiks no ordena ni agrega datos. Una línea requiere al menos dos muestras finitas; para un punto aislado usar scatter, bar o error. Todas las opciones de trazo comunes se admiten, además de las siguientes:

Parámetro Valores y predeterminado Ejemplo y alcance
kind line, scatter, bar, error; line error conecta muestras y dibuja errores; scatter dibuja puntos desconectados, incluidos sus errores.
barwidth Positivo, hasta el límite numérico general; 0.8 unidades X Anchura de barras; barwidth=0.6.
marker auto, none, circle, square, triangle, diamond, cross; auto auto: círculo en scatter/error; sin marcador en líneas/barras.
markersize Semiextensión en (0,20] bp; 2.5 markersize=3. No es diámetro.
id Nombre único de 1–32 caracteres ASCII alfanuméricos o _; sin ID Disponible en Plot, Table y Function para NoctiFillBetween. id=modelo.
style Nombre de NoctiStyle; sin estilo nombrado Se expande antes de validar la serie. style=medida.
errors symmetric o asymmetric; symmetric Solo NoctiPlot: cambia la interpretación de tuplas.
x, y Encabezados; x, y Solo NoctiTable: x=tiempo,y=senal.
xerror, yerror Encabezados opcionales; sin error Distancias simétricas en cada eje.
xminus, xplus, yminus, yplus Pares de encabezados opcionales Distancias asimétricas. Proporcionar ambos lados del eje elegido.
delimiter comma o tab; según extensión .tsv → tab; cualquier otra extensión → comma.
missing error o gap; error Una celda Y vacía corta la serie en gap; X sigue siendo numérica.

Los símbolos usan fill si se declara; de lo contrario, stroke. cross usa solo trazo. Las barras de error tienen terminales de 6 bp y participan en el autorango. Los errores son distancias no negativas desde la medición, nunca extremos absolutos. Por ejemplo, (y=10, yminus=2, yplus=5) cubre [8,15].

Formato simétrico de NoctiPlot: x,y[,yerror[,xerror]], de dos a cuatro campos. Asimétrico: x,y,yminus,yplus[,xminus,xplus], exactamente cuatro o seis campos. Para tablas no se utiliza errors: los encabezados seleccionados definen el formato. Se puede combinar Y simétrico con X asimétrico; no mezclar yerror con yminus/yplus, ni el equivalente en X.

Ejemplo con errores simétricos y asimétricos, marcadores distintos y línea de modelo:

LaTeX · ejemplo 17
\begin{noctiaxis}[width=460,height=280]
  [xmin=0,xmax=4,ymin=0,ymax=7,legendpos=topleft]
  \NoctiFunction[domain=0:4,stroke=black,dash=4:2]{1+x}
  \NoctiPlot[kind=scatter,stroke=blue,marker=square,markersize=3]
    {1,2,0.3,0.1;2,3,0.4,0.2;3,4,0.3,0.1}
  \NoctiPlot[kind=error,errors=asymmetric,stroke=red,marker=diamond]
    {1,3,0.2,0.5,0.1,0.2;2,4,0.3,0.6,0.1,0.2;3,5,0.2,0.4,0.1,0.3}
  \NoctiLegend{Modelo}\NoctiLegend{Simétricos}\NoctiLegend{Asimétricos}
\end{noctiaxis}
Resultado del ejemplo 17: Series de datos y barras de error.
Ejemplo 17 · Series de datos y barras de error

Ejemplo autocontenido de tabla con errores asimétricos y hueco. El bloque incluye un archivo auxiliar en el propio .tex; debe colocarse completo en el documento, según las reglas de los ejemplos iniciales:

LaTeX · ejemplo 18
\documentclass{article}
\usepackage[letterpaper,margin=15mm]{geometry}
\usepackage{noctiplots}
\begin{filecontents*}[overwrite]{manual-medidas.csv}
t,valor,menos,mas
0,1,0.1,0.2
1,2,0.2,0.4
2,,,
3,3,0.3,0.2
4,4,0.2,0.5
\end{filecontents*}
\setlength{\parindent}{0pt}
\begin{document}
\begin{noctiaxis}[width=400,height=260][axes=box]
  \NoctiTable[x=t,y=valor,yminus=menos,yplus=mas,missing=gap,
    kind=error,stroke=blue,marker=circle]{manual-medidas.csv}
  \NoctiXLabel{Tiempo}\NoctiYLabel{Medición}
\end{noctiaxis}
\end{document}
Resultado del ejemplo 18: Series de datos y barras de error.
Ejemplo 18 · Series de datos y barras de error

missing=gap omite también los errores de esa fila. NaN, NA y texto inválido no se convierten en huecos. Una fila completamente vacía se ignora y no separa segmentos: para crear un hueco hay que conservar X y dejar Y vacía.

Barras superpuestas, agrupadas y apiladas

En Y lineal la base de las barras normales es cero; en Y log es el límite inferior. Una barra no puede cruzar el origen de una escala X log. Para bars=grouped o stacked ambos ejes deben ser lineales y debe existir al menos una serie de barras.

En grouped y stacked, las series de barras deben tener exactamente las mismas categorías X, únicas y en el mismo orden, igual barwidth, sin huecos ni errores no nulos. No se completan categorías faltantes.

Disposición Resultado
overlay Cada serie usa todo su barwidth; se superponen por orden de dibujo.
grouped Divide el ancho total entre las series de barras y desplaza sus centros dentro de cada categoría.
stacked Acumula positivos desde cero hacia arriba y negativos hacia abajo por separado. No normaliza a porcentajes.
LaTeX · ejemplo 19
\begin{noctipanels}[width=510,height=270][rows=1,columns=3,gap=12]
  \begin{noctipanel}[bars=overlay,palette=scientific,legendpos=topright]
    \NoctiPlot[kind=bar]{1,2;2,-3;3,4}
    \NoctiPlot[kind=bar]{1,3;2,-1;3,-2}
    \NoctiTitle{Superpuestas}
  \end{noctipanel}
  \begin{noctipanel}[bars=grouped,palette=scientific]
    \NoctiPlot[kind=bar,barwidth=0.8]{1,2;2,-3;3,4}
    \NoctiPlot[kind=bar,barwidth=0.8]{1,3;2,-1;3,-2}
    \NoctiTitle{Agrupadas}
  \end{noctipanel}
  \begin{noctipanel}[bars=stacked,palette=gray]
    \NoctiPlot[kind=bar]{1,2;2,-3;3,4}
    \NoctiPlot[kind=bar]{1,3;2,-1;3,-2}
    \NoctiTitle{Apiladas}
  \end{noctipanel}
\end{noctipanels}
Resultado del ejemplo 19: Barras superpuestas, agrupadas y apiladas.
Ejemplo 19 · Barras superpuestas, agrupadas y apiladas

Funciones y curvas

Funciones cartesianas

\NoctiFunction[opciones]{f(x)} evalúa una expresión con variable x; solo admite kind=line. Puede repetirse dentro de un eje y mezclarse con datos. Los estilos de trazo, marcadores y estilos nombrados siguen el contrato de series.

Parámetro Valores y predeterminado Ejemplo y significado
domain Intervalo creciente a:b; -5:5 domain=0:2*pi. Independiente de xmin/xmax.
samples Entero de 2 a 10001; 201 Muestras uniformes iniciales, incluidas las dos fronteras.
sampling uniform o adaptive; uniform Refinamiento opcional del dibujo.
tolerance En (0,100] bp; 0.5 Solo adaptive: desviación del punto medio respecto a la cuerda en coordenadas finales.
maxsamples Entero; 10001 Solo adaptive: presupuesto de evaluaciones, al menos 2*samples-1, máximo 100001 y presupuesto de figura.
rangesamples 0 o entero de 2 a 10001; 0 Barrido adicional para autorango, independiente de muestras de dibujo.
id Identificador de serie; sin ID id=superior para relleno entre curvas; no disponible en paramétricas/polares.

El muestreo uniforme comprueba puntos medios y separa valores indefinidos o saltos sospechosos. Puede omitir singularidades estrechas u oscilaciones alineadas con las muestras. El modo adaptativo refina hasta profundidad 16; si agota presupuesto/profundidad o encuentra un punto medio indefinido, corta el segmento y emite diagnóstico. tolerance no es una cota global del error matemático.

El autorango usa las muestras iniciales y, si se solicita, rangesamples; el refinamiento adaptativo no modifica el encuadre. rangesamples consume presupuesto adicional, descarta valores indefinidos con diagnóstico y tampoco garantiza extremos exactos. Cerca de polos, valores finitos grandes pueden ampliar mucho el eje: usar límites explícitos y separar discontinuidades conocidas.

LaTeX · ejemplo 20
\begin{noctiaxis}[width=440,height=260]
  [xmin=-2,xmax=2,ymin=-4,ymax=4,axes=origin-box]
  \NoctiFunction[domain=-2:-0.05,samples=33,sampling=adaptive,
    tolerance=0.4,maxsamples=6001,rangesamples=401,stroke=blue]{1/x}
  \NoctiFunction[domain=0.05:2,samples=33,sampling=adaptive,
    tolerance=0.4,maxsamples=6001,rangesamples=401,stroke=blue]{1/x}
  \NoctiTitle{Dominios separados alrededor del polo}
\end{noctiaxis}
Resultado del ejemplo 20: Funciones cartesianas.
Ejemplo 20 · Funciones cartesianas

Curvas paramétricas y polares

Referencia
\NoctiParametric[opciones]{x(t)}{y(t)}
\NoctiPolar[opciones]{r(t)}

Utilizan t y radianes. Comparten domain, samples, sampling, tolerance, maxsamples, rangesamples, marcadores y estilos de función; el dominio predeterminado es 0:6.283185307179586. Solo kind=line; sin id. La paramétrica conserva orden, bucles y X repetidas. La polar se transforma a (r*cos(t), r*sin(t)); admite radio negativo y no crea una cuadrícula angular/radial.

No se fuerza cierre: las expresiones y el dominio determinan si los extremos coinciden. Valores indefinidos separan segmentos. En log deben ser positivas todas las coordenadas válidas en las dimensiones logarítmicas. Usar aspect=equal para conservar formas y ángulos.

LaTeX · ejemplo 21
\begin{noctiaxis}[width=420,height=280]
  [axes=origin-box,aspect=equal,xmin=-2.3,xmax=2.3,ymin=-1.5,ymax=1.5]
  \NoctiParametric[domain=0:2*pi,samples=301,stroke=blue]
    {2*cos(t)}{sin(t)}
  \NoctiPolar[domain=0:2*pi,samples=501,stroke=red]{cos(3*t)}
  \NoctiLegend{Elipse}\NoctiLegend{Rosa polar}
\end{noctiaxis}
Resultado del ejemplo 21: Curvas paramétricas y polares.
Ejemplo 21 · Curvas paramétricas y polares

Funciones por tramos y extremos

Referencia
\NoctiFunctionPiece[opciones]{a:b}{f(x)}

Cada tramo es una serie independiente; no une sus extremos con otro tramo. El dominio creciente es obligatorio en el argumento; no repetir domain en opciones. Admite el muestreo, estilos de función y las opciones específicas siguientes. Los marcadores de serie (marker, markersize) y id no están admitidos en FunctionPiece, tampoco cuando proceden de un estilo nombrado; los extremos se controlan con estas claves:

Parámetro Valores y predeterminado Efecto y ejemplo
start none, open, closed; none Símbolo del extremo inicial. start=closed.
end none, open, closed; none Símbolo del extremo final. end=open.
endpointradius En (0,20] bp; 3 Radio de los dos símbolos. endpointradius=4.

Los extremos se evalúan numéricamente aunque el símbolo sea abierto. Si son indefinidos, un marcador solicitado falla: no se calculan límites simbólicos. El abierto tiene relleno blanco y el cerrado usa stroke; ambos son opacos, con contorno continuo, independientemente de dash/opacity/fill. Los cerrados se pintan después de todos los abiertos, por lo que prevalecen si coinciden. No cambian autorango ni leyenda.

LaTeX · ejemplo 22
\begin{noctiaxis}[width=420,height=260]
  [xmin=-2.5,xmax=2.5,ymin=-0.5,ymax=5,axes=origin-box]
  \NoctiFunctionPiece[start=closed,end=open,endpointradius=4,
    stroke=blue,samples=101]{-2:0}{x^2}
  \NoctiFunctionPiece[start=closed,end=open,endpointradius=4,
    stroke=red,samples=101]{0:2}{1+x}
  \NoctiLegend{$x^2$ para $-2\le x<0$}
  \NoctiLegend{$1+x$ para $0\le x<2$}
\end{noctiaxis}
Resultado del ejemplo 22: Funciones por tramos y extremos.
Ejemplo 22 · Funciones por tramos y extremos

Regiones y rellenos

Regiones rectangulares

\NoctiRegion[opciones]{esquina}{esquina opuesta} sombrea un rectángulo en unidades de datos. Las esquinas pueden ir en cualquier orden, con ancho y alto no nulos. No modifica autorango ni crea leyenda.

Parámetro Predeterminado y límites Ejemplo
fill blue; color o none fill=green. none requiere border=true.
opacity 0.15; de 0 a 1 opacity=0.2, aplicado a borde y relleno.
border false; booleano border=true dibuja el contorno original.
stroke, width, dash blue, 0.8 bp, continuo Estilo del borde. stroke=orange,width=1,dash=3:2.

No admite flechas. El recorte no inventa bordes en los cortes del viewport. Regiones fuera del área se omiten con diagnóstico. En log ambas esquinas deben ser positivas en las dimensiones log.

LaTeX · ejemplo 23
\begin{noctiaxis}[width=420,height=260]
  [xmin=-2,xmax=2,ymin=-1,ymax=4,axes=box]
  \NoctiRegion[fill=green,opacity=0.18]{-1,-1}{1,4}
  \NoctiRegion[fill=none,border=true,stroke=orange,width=1,dash=3:2]
    {1,0}{2,2}
  \NoctiFunction[domain=-2:2,stroke=blue]{x^2}
\end{noctiaxis}
Resultado del ejemplo 23: Regiones rectangulares.
Ejemplo 23 · Regiones rectangulares

Relleno bajo curva y rectángulos de Riemann

Referencia
\NoctiFillUnder[opciones]{f(x)}
\NoctiRiemann[opciones]{f(x)}

Requieren ejes lineales y un dominio explícito. Son decoraciones: no infieren límites ni crean leyenda. baseline es una ordenada absoluta; una función por debajo extiende el relleno hacia abajo. No se calcula ni imprime un valor de integral o suma.

Parámetro Valores y predeterminado Uso y ejemplo
domain a:b creciente; obligatorio Ambos: domain=0:2.
baseline Número de datos; 0 Ambos: baseline=1.
samples Entero de 2 a 10000; 201 Solo FillUnder; samples=101. El presupuesto puede imponer un máximo menor.
n Entero de 1 a 10000; 10 Solo Riemann, rectángulos iguales; n=8.
method left, right, midpoint; midpoint Solo Riemann, punto de evaluación en cada celda.
fill, stroke blue, blue Color de área y borde. fill=cyan,stroke=blue.
opacity De 0 a 1; 0.2 Afecta área y borde.
border FillUnder: false obligatorio; Riemann: true border=false en Riemann suprime bordes.
width, dash 0.8 bp, continuo; límites de estilo común Borde de Riemann, por ejemplo width=0.5,dash=2:1.

FillUnder une muestras linealmente y comprueba puntos medios; superponer NoctiFunction para el contorno curvo. Cada celda reserva cuatro puntos. Ambos comandos requieren valores finitos en sus evaluaciones y fallan si encuentran indefinidos; dividir o restringir el intervalo. No admiten sampling=adaptive. fill=none requiere borde visible y por ello no sirve para FillUnder.

LaTeX · ejemplo 24
\begin{noctipanels}[width=510,height=280][rows=1,columns=2,gap=18]
  \begin{noctipanel}[xmin=0,xmax=2,ymin=0,ymax=4.5,axes=box]
    \NoctiFillUnder[domain=0:2,samples=101,fill=cyan,opacity=0.3]{x^2}
    \NoctiFunction[domain=0:2,stroke=blue]{x^2}
    \NoctiTitle{Área bajo curva}
  \end{noctipanel}
  \begin{noctipanel}[xmin=0,xmax=2,ymin=0,ymax=4.5,axes=box]
    \NoctiRiemann[domain=0:2,n=8,method=midpoint,baseline=0,
      fill=orange,stroke=red,width=0.5,border=true,opacity=0.3]{x^2}
    \NoctiFunction[domain=0:2,stroke=blue]{x^2}
    \NoctiTitle{Punto medio}
  \end{noctipanel}
\end{noctipanels}
Resultado del ejemplo 24: Relleno bajo curva y rectángulos de Riemann.
Ejemplo 24 · Relleno bajo curva y rectángulos de Riemann

Para comparar reglas, sustituir method=midpoint por left o right. Mantener dominio y n permite comparar las aproximaciones gráficas bajo las mismas particiones.

Bandas directas y relleno entre series

Referencia
\NoctiBand[opciones]{límite inferior f(x)}{límite superior g(x)}
\NoctiFillBetween[opciones]{idA}{idB}

Ambos requieren ejes lineales; dibujan solo el área, sin contornos ni leyenda. Los límites de Band son valores absolutos, no distancias de error. El usuario determina su significado científico; no hay inferencia de intervalos de confianza.

Parámetro Band FillBetween
domain Obligatorio, a:b creciente Opcional: restringe el dominio común, sin extrapolar.
samples Entero de 2 a 10001; 201, uniforme No admitido: usa muestras de las series.
fill Color, blue por defecto; none inválido Igual.
opacity De 0 a 1; 0.2 Igual.

Band contribuye al autorango con ambos límites, incluso si coinciden y el área es cero. Ambos deben estar definidos y ordenados en muestras y puntos medios evaluados; si el inferior supera al superior, hay error. No dibuja la curva central ni sus fronteras automáticamente.

FillBetween admite referencias adelantadas a id de Plot, Function y Table del mismo eje. Sus límites deben ser líneas con X estrictamente creciente; se admiten datos con espaciado irregular y funciones con muestreo uniforme, pero no admite límites paramétricos, polares, adaptativos, barras ni scatter. Interpola linealmente las abscisas comunes sin exigir igual número de muestras. Divide cruces y conserva huecos. El orden A/B no cambia el relleno. Sin solapamiento positivo emite diagnóstico y conserva las series.

Los rellenos se pintan una vez por región compuesta para no oscurecer uniones entre celdas. Los rellenos distintos sí se superponen en orden de declaración. Añadir series explícitas cuando se quieran contornos.

LaTeX · ejemplo 25
\begin{noctiaxis}[width=440,height=270][axes=box,ymargin=0.1]
  \NoctiBand[domain=0:6,samples=121,fill=cyan,opacity=0.3]
    {sin(x)-0.25}{sin(x)+0.25}
  \NoctiFunction[domain=0:6,samples=121,stroke=blue]{sin(x)}
  \NoctiLegend{Modelo}
\end{noctiaxis}
Resultado del ejemplo 25: Bandas directas y relleno entre series.
Ejemplo 25 · Bandas directas y relleno entre series
LaTeX · ejemplo 26
\begin{noctiaxis}[width=420,height=260][axes=origin-box]
  \NoctiFillBetween[domain=-1:1,fill=purple,opacity=0.25]{sube}{baja}
  \NoctiPlot[id=sube,stroke=blue]{-2,-2;-0.5,-0.5;2,2}
  \NoctiPlot[id=baja,stroke=red]{-1.5,1.5;0.5,-0.5;1.5,-1.5}
  \NoctiLegend{Creciente}\NoctiLegend{Decreciente}
\end{noctiaxis}
Resultado del ejemplo 26: Bandas directas y relleno entre series.
Ejemplo 26 · Bandas directas y relleno entre series

Anotaciones y referencias

Referencia
\NoctiPoint[opciones]{x,y}{texto TeX}
\NoctiXLine[estilo]{x}
\NoctiYLine[estilo]{y}

XLine es vertical y YLine horizontal; recorren el área de datos y admiten trazo común, incluidas flechas. No crean leyenda ni cambian límites. Fuera del rango se omiten con diagnóstico. Los puntos se omiten junto con su etiqueta; no se trasladan al borde. En log sus coordenadas deben ser positivas.

Parámetro de Point Valores y predeterminado Efecto y ejemplo
stroke Color; black Color del marcador si falta relleno. stroke=red.
fill Color o none; ausente Color alternativo. fill=white. none reutiliza stroke; no crea círculo hueco.
opacity De 0 a 1; 1 Del marcador, no del texto TeX.
radius En (0,50] bp; 2.5 Radio del marcador circular relleno.
labelpos northeast, northwest, southeast, southwest, above, below, left, right, center, auto; northeast Posición fija o búsqueda automática por punto.
dx, dy De −2000 a 2000 bp; 0 Desplazamiento adicional del texto; positivos derecha/arriba.

El marcador no usa width/dash/arrow; para estilos distintos de un círculo de anotación, usar marcadores de serie. La distancia base al texto es radio + 4 bp, más la semidimensión TeX según dirección. El texto debe caber en el lienzo, aunque puede ocupar márgenes; no se recorta parcialmente.

Con labelcollision=avoid, solo son automáticas las etiquetas sin labelpos, dx ni dy explícitos. Un dx=0 escrito fija la posición. labelpos=auto activa la búsqueda por punto incluso en un eje manual; en ese caso sus desplazamientos se aplican a todos los candidatos.

La búsqueda prueba ocho direcciones y separaciones adicionales de 0, 8, 16, 32 y 48 bp, con margen de 2 bp respecto a obstáculos. Reserva etiquetas fijas primero y luego las automáticas en orden. Considera títulos, marcas, leyendas, etiquetas de contorno y otros puntos anotados, pero no evita las curvas ni todos los marcadores de series. Máximo 256 anotaciones por eje cuando se usa colocación automática. Si no encuentra espacio, conserva texto y avisa; si no cabe ni en el lienzo, falla.

LaTeX · ejemplo 27
\begin{noctiaxis}[width=440,height=270]
  [xmin=0,xmax=10,ymin=0,ymax=10,axes=box,labelcollision=avoid]
  \NoctiXLine[stroke=gray,dash=3:2]{5}
  \NoctiYLine[stroke=gray,dash=3:2]{5}
  \NoctiPoint[stroke=blue,radius=3]{5,5}{$P_1$}
  \NoctiPoint[stroke=red,radius=3]{5.15,5}{$P_2$}
  \NoctiPoint[labelpos=below,dx=0,dy=-2]{7,7}{Fija}
  \NoctiPoint[labelpos=auto,fill=orange,opacity=0.8]{2,3}{Auto}
\end{noctiaxis}
Resultado del ejemplo 27: Anotaciones y referencias.
Ejemplo 27 · Anotaciones y referencias

Paneles y composición científica

Referencia
\begin{noctipanels}[dimensiones][configuración de rejilla]
  \begin{noctipanel}[opciones de eje]
    series, etiquetas y anotaciones
  \end{noctipanel}
  ... exactamente rows * columns paneles
\end{noctipanels}
Parámetro Valores y predeterminado Efecto y ejemplo
width, height Lienzo físico en bp Sin primera lista: 500 × 420. Con lista explícita, las dimensiones omitidas vuelven a la base 320 × 200. Escribir ambas.
rows, columns Enteros positivos; máximo 16 celdas Sin segunda lista: rows=2,columns=2. Con lista explícita, valores omitidos: rows=1,columns=2. Escribir ambos.
gap De 0 a 100 bp; 12 Separación entre celdas. gap=16.
share none, x, y, both; none Comparte límites explícitos de los ejes elegidos.
xmin, xmax Obligatorios al compartir X Límites crecientes; solo se permiten en la rejilla si share=x/both.
ymin, ymax Obligatorios al compartir Y Mismo contrato con share=y/both.

El orden es por filas, desde arriba a la izquierda. Cada celda debe medir al menos 150 × 140 bp y dejar espacio útil suficiente. Todos los paneles requieren aspect=auto; los ejes compartidos deben ser lineales. Un panel puede repetir un límite compartido idéntico, pero no contradecirlo. No se calcula un autorango global ni se ocultan marcas interiores.

Los márgenes se miden primero y luego se usa el máximo por lado para alinear las áreas. Ambos recorridos consumen presupuesto de puntos. Los textos y sus identificadores se conservan para toda la figura. Dentro de la rejilla se admiten paneles y declaraciones que se resuelven previamente, como estilos; no anidar figuras, paneles ni rejillas.

LaTeX · ejemplo 28
\begin{noctipanels}[width=520,height=440]
  [rows=2,columns=2,gap=16,share=both,xmin=0,xmax=4,ymin=-2,ymax=8]
  \begin{noctipanel}[axes=box,palette=scientific]
    \NoctiFunction[domain=0:4]{x}\NoctiTitle{Lineal}
  \end{noctipanel}
  \begin{noctipanel}[axes=box,palette=scientific]
    \NoctiFunction[domain=0:4]{x^2/2}\NoctiTitle{Cuadrática}
  \end{noctipanel}
  \begin{noctipanel}[axes=box,palette=gray]
    \NoctiPlot[kind=scatter]{0,1;1,2;2,3;3,4}\NoctiTitle{Datos}
  \end{noctipanel}
  \begin{noctipanel}[axes=box,palette=gray,bars=grouped]
    \NoctiPlot[kind=bar]{1,2;2,4;3,6}
    \NoctiPlot[kind=bar]{1,1;2,3;3,5}\NoctiTitle{Barras}
  \end{noctipanel}
\end{noctipanels}
Resultado del ejemplo 28: Paneles y composición científica.
Ejemplo 28 · Paneles y composición científica

Orden de capas en una gráfica

Las capas se organizan para conservar legibles datos y textos: campo escalar; regiones rectangulares; bandas; FillUnder/Riemann; cuadrícula y referencias; series; ejes y marco; segmentos/vectores de anotación; extremos abiertos y cerrados; marcadores de puntos; geometría de leyendas. El texto LaTeX se coloca sobre la geometría. El campo escalar incluye su propia lógica de contornos y etiquetas; sus textos actúan como obstáculos para las anotaciones automáticas.

No se puede cambiar este orden colocando una decoración al final de la fuente. Dentro de capas equivalentes se mantiene el orden aplicable de declaración. Las leyendas interiores pueden tapar geometría, incluidos marcadores; para una figura saturada conviene moverlas, ampliar el lienzo o separar paneles.

Vectores, segmentos y operaciones vectoriales

Los comandos de este apartado se usan dentro de noctiaxis o noctipanel. Las posiciones y componentes están en unidades de datos del eje. En cambio, width y dash se expresan en bp, como los estilos de dibujo generales. Para representar fielmente direcciones, ángulos y longitudes cartesianas, usar dos escalas lineales y aspect=equal.

Segmento entre dos puntos y vector por componentes

Referencia
\NoctiSegment[opciones]{x0,y0}{x1,y1}
\NoctiVector[opciones]{x0,y0}{ux,uy}
Argumento Tipo y significado Restricciones
{x0,y0} Punto inicial u origen del vector. Dos números o expresiones escalares admitidas, separados por coma.
{x1,y1} de NoctiSegment Punto final absoluto. Mismas unidades del eje.
{ux,uy} de NoctiVector Desplazamiento desde el origen. El extremo calculado es (x0+ux,y0+uy).

NoctiVector{1,1}{2,3} termina en (3,4). NoctiSegment{1,1}{2,3} termina en (2,3). Los argumentos numéricos pueden reutilizar constantes declaradas con NoctiConstant; no son lugares para escribir texto matemático TeX. Cada coordenada y cada extremo calculado deben ser finitos y cumplir abs(valor)<=1e12.

Opción Predeterminado Tipo, valores y efecto
stroke black Color del trazo y de las puntas; nombre admitido o r:g:b.
width 0.8 Grosor en bp, mayor que 0 y hasta 100.
dash Continua Hasta 8 longitudes positivas, hasta 1000 bp cada una, separadas por :; ejemplo 4:2.
arrow en segmento none none, end o both.
arrow en vector end Las mismas opciones; el valor explícito prevalece.
opacity 1 Número entre 0 y 1.
fill Sin relleno Clave de estilo aceptada; al ser trazados abiertos no rellena un área. Las puntas usan stroke.
LaTeX · ejemplo 29
\begin{noctiaxis}[width=430,height=300]
  [xmin=0,xmax=4,ymin=0,ymax=5,axes=origin-box,aspect=equal]
  \NoctiSegment[stroke=gray,dash=4:2]{1,1}{2,3}
  \NoctiVector[stroke=blue,width=1.5]{1,1}{2,3}
  \NoctiVector[stroke=red,arrow=both,opacity=0.5]{1,1}{2,0}
  \NoctiPoint[labelpos=below]{1,1}{$O$}
  \NoctiPoint[labelpos=above]{3,4}{$O+u$}
\end{noctiaxis}
Resultado del ejemplo 29: Segmento entre dos puntos y vector por componentes.
Ejemplo 29 · Segmento entre dos puntos y vector por componentes

Estos objetos no cambian el autorango ni crean entradas de leyenda. Un eje formado solo por vectores necesita xmin, xmax, ymin y ymax. También puede obtener su rango de una serie ordinaria. Se dibujan sobre las series y los ejes, antes de los puntos etiquetados. Se recortan al área de datos: un segmento puede atravesar la vista aunque sus dos extremos estén fuera. Si la punta real está fuera, no se crea otra punta en el borde. Los segmentos de longitud nula se omiten con diagnóstico.

Los segmentos y vectores explícitos admiten ejes logarítmicos si ambos extremos son positivos en cada dimensión logarítmica. Las componentes del vector se suman antes de transformar. El resultado visible une los extremos transformados con una recta; no representa un camino curvo muestreado.

LaTeX · ejemplo 30
\begin{noctiaxis}[width=430,height=250]
  [xmin=1,xmax=100,ymin=1,ymax=100,xscale=log,yscale=log]
  \NoctiSegment[stroke=gray,arrow=both]{1,1}{100,100}
  \NoctiVector[stroke=blue]{10,10}{20,40}
\end{noctiaxis}
Resultado del ejemplo 30: Segmento entre dos puntos y vector por componentes.
Ejemplo 30 · Segmento entre dos puntos y vector por componentes

Suma, proyección y descomposición

Referencia
\NoctiVectorSum[opciones]{origen}{u}{v}
\NoctiProjection[opciones]{origen}{u}{v}
\NoctiComponents[opciones]{origen}{u}
\NoctiDecompose[opciones]{origen}{u}{v}

Todos los argumentos geométricos usan pares x,y. El origen solo traslada el dibujo. u y v son componentes cartesianas; no son nombres de vectores declarados antes ni puntos finales absolutos. Estas cuatro operaciones requieren ejes lineales.

Comando Cálculo y geometría dibujada
NoctiVectorSum Un vector desde O hasta O+u+v. No dibuja los sumandos.
NoctiProjection Un vector desde O hasta O+p, con p=((u·v)/(v·v))*v.
NoctiComponents Dos segmentos dirigidos: O a O+(ux,0), y de allí a O+u.
NoctiDecompose Dos segmentos dirigidos: O a O+p, y de allí a O+u; el segundo representa u-p.

Aceptan exactamente las seis claves de estilo de segmentos y vectores. Sus valores predeterminados son stroke=black, width=0.8, arrow=end, opacity=1, línea continua y sin relleno. En los comandos que producen dos segmentos ambos comparten el mismo estilo, y cada segmento recibe sus propias puntas conforme a arrow.

LaTeX · ejemplo 31
\begin{noctiaxis}[width=430,height=310]
  [xmin=-0.5,xmax=4,ymin=-0.5,ymax=4,axes=origin-box,aspect=equal]
  \NoctiVector[stroke=blue]{0,0}{2,1}
  \NoctiVector[stroke=red]{0,0}{1,2}
  \NoctiVectorSum[stroke=green,width=1.6]{0,0}{2,1}{1,2}
  \NoctiPoint[labelpos=above]{3,3}{$u+v=(3,3)$}
\end{noctiaxis}
Resultado del ejemplo 31: Suma, proyección y descomposición.
Ejemplo 31 · Suma, proyección y descomposición
LaTeX · ejemplo 32
\begin{noctiaxis}[width=430,height=310]
  [xmin=-0.5,xmax=4,ymin=-0.5,ymax=3.5,axes=origin-box,aspect=equal]
  \NoctiVector[stroke=blue,width=1.4]{0,0}{3,1}
  \NoctiVector[stroke=gray,dash=3:2]{0,0}{3,3}
  \NoctiProjection[stroke=green,width=1.8]{0,0}{3,1}{1,1}
  \NoctiPoint[labelpos=above]{2,2}{$p=(2,2)$}
\end{noctiaxis}
Resultado del ejemplo 32: Suma, proyección y descomposición.
Ejemplo 32 · Suma, proyección y descomposición
LaTeX · ejemplo 33
\begin{noctiaxis}[width=430,height=310]
  [xmin=-0.5,xmax=4,ymin=-0.5,ymax=3.5,axes=origin-box,aspect=equal]
  \NoctiVector[stroke=blue]{0,0}{3,1}
  \NoctiComponents[stroke=gray,dash=3:2]{0,0}{3,1}
  \NoctiDecompose[stroke=orange,width=1.3]{0,0}{3,1}{1,1}
  \NoctiPoint[labelpos=above]{2,2}{$p$}
  \NoctiPoint[labelpos=right]{3,1}{$u=p+(u-p)$}
\end{noctiaxis}
Resultado del ejemplo 33: Suma, proyección y descomposición.
Ejemplo 33 · Suma, proyección y descomposición

Para u=(3,1) y v=(1,1), la proyección es (2,2) y el residuo (1,-1). Cambiar v por un múltiplo no nulo, incluso negativo, conserva la proyección. Proyectar sobre (0,0) produce error. Una componente o proyección de longitud cero se omite con diagnóstico. Los resultados intermedios deben respetar el límite numérico, igual que los extremos de un vector explícito. No se generan etiquetas, variables TeX ni resultados simbólicos; se añaden etiquetas con NoctiPoint cuando se necesitan.

Campos vectoriales

Referencia
\NoctiVectorField[opciones]{u(x,y)}{v(x,y)}

El comando evalúa dos expresiones escalares en una malla rectangular y dibuja un vector en cada punto válido. Los argumentos obligatorios son las componentes cartesianas del campo. Admiten las variables x, y, los operadores y funciones del evaluador y las constantes declaradas en el alcance vigente.

Opción Predeterminado Tipo, unidad, valores y efecto
xdomain Obligatoria Intervalo creciente a:b en unidades X; incluye ambos extremos. Independiente de xmin/xmax.
ydomain Obligatoria Intervalo creciente c:d en unidades Y; incluye ambos extremos. Independiente de ymin/ymax.
nx 11 Entero entre 2 y 51; cantidad de puntos uniformes en X.
ny 11 Entero entre 2 y 51; cantidad de puntos uniformes en Y.
scale 0.2 Factor positivo, finito y hasta 1e12; multiplica las componentes antes de sumarlas al punto de origen.
normalize false true o false; normaliza el vector no nulo antes de aplicar scale.
stroke blue Color de cada vector y su punta.
width 0.8 Grosor en bp, mayor que 0 y hasta 100.
dash Continua Hasta 8 longitudes en bp, positivas y hasta 1000, separadas por :.
arrow end none, end o both.
opacity 1 Número entre 0 y 1.
fill Sin relleno Aceptada como estilo de trazado abierto; no colorea una región.

Con normalize=false, el extremo en (x,y) es (x+scale*u(x,y),y+scale*v(x,y)). Así se conservan las magnitudes relativas. Con normalize=true, las componentes se dividen por sqrt(u*u+v*v) y todos los vectores válidos tienen longitud scale en coordenadas de datos. La igualdad de longitud en datos se ve físicamente correcta con aspect=equal. No hay ajuste automático para impedir que las flechas se solapen.

LaTeX · ejemplo 34
\begin{noctiaxis}[width=430,height=320]
  [xmin=-2,xmax=2,ymin=-2,ymax=2,axes=origin-box,aspect=equal]
  \NoctiVectorField[xdomain=-1.5:1.5,ydomain=-1.5:1.5,
    nx=9,ny=9,scale=0.18,normalize=false,stroke=blue,
    width=0.7,arrow=end,opacity=0.75]{-y}{x}
\end{noctiaxis}
Resultado del ejemplo 34: Campos vectoriales.
Ejemplo 34 · Campos vectoriales
LaTeX · ejemplo 35
\begin{noctiaxis}[width=430,height=320]
  [xmin=-2,xmax=2,ymin=-2,ymax=2,axes=origin-box,aspect=equal]
  \NoctiVectorField[xdomain=-1.5:1.5,ydomain=-1.5:1.5,
    nx=7,ny=7,scale=0.25,normalize=true,stroke=gray,
    dash=2:1,arrow=none]{x}{-y}
  \NoctiPoint[labelpos=below]{0,0}{Equilibrio}
\end{noctiaxis}
Resultado del ejemplo 35: Campos vectoriales.
Ejemplo 35 · Campos vectoriales

El campo solo es una decoración: no aporta autorango ni entradas de leyenda. Se requieren los cuatro límites del eje o una serie que proporcione el rango. Solo se admiten escalas X/Y lineales. Se dibuja en la capa de segmentos, con el mismo recorte y tratamiento de puntas que los vectores explícitos.

Las componentes indefinidas, no finitas o fuera de +/-1e12 se omiten. También se omiten los vectores nulos. Un diagnóstico resume ambas cantidades. En cambio, si un vector válido produce un extremo calculado no finito o fuera de los límites numéricos, el campo falla; reducir scale o restringir el dominio. El muestreo fuera del viewport no altera los límites visibles.

Se permiten como máximo 2601 puntos de malla. Cada punto solicitado reserva dos unidades del presupuesto compartido de la figura, incluso si luego se omite. Las flechas no tienen color por magnitud automático. Para mostrar una magnitud de fondo se puede combinar un campo escalar con el campo vectorial.

Trayectorias y líneas de flujo

Referencia
\NoctiTrajectory[opciones]{x0,y0}{u(x,y)}{v(x,y)}
\NoctiStreamline[opciones]{x0,y0}{u(x,y)}{v(x,y)}

Ambos comandos integran un sistema autónomo cartesiano desde una semilla:

Referencia
dx/dt = u(x,y)
dy/dt = v(x,y)

La semilla es un par de números o expresiones escalares admitidas. Las expresiones del campo admiten x, y y constantes. No admiten una variable temporal adicional. Los ejes X/Y deben ser lineales.

NoctiTrajectory conserva la rapidez del campo. Su parámetro puede representar tiempo si las componentes y unidades del problema se han definido así. NoctiStreamline normaliza el campo en cada etapa de integración: su parámetro aproxima longitud de arco en unidades cartesianas de datos. No basta con normalizar únicamente las flechas del campo para obtener este comportamiento.

Opción Predeterminado Tipo, unidad, valores y efecto
step 0.02 Paso fijo positivo, mayor que 0 y hasta 1000. En trayectoria usa unidades del parámetro; en línea de flujo aproxima unidades de longitud de datos.
steps 500 Entero entre 1 y 10000; cantidad máxima de pasos por rama.
direction forward forward, backward o both; sentido de integración respecto al campo.
stroke black Color del trazo.
width 0.8 Grosor en bp, mayor que 0 y hasta 100.
dash Continua Hasta 8 longitudes positivas en bp, hasta 1000 cada una, separadas por :.
arrow none none, end o both; añade puntas según el orden del trazado.
opacity 1 Número entre 0 y 1.
fill Sin relleno Aceptada como estilo; estas curvas abiertas no rellenan áreas.

El método es Runge–Kutta clásico de cuarto orden con paso fijo (RK4). El horizonte máximo por rama es step*steps. Con direction=backward se usa internamente un paso negativo, pero step se sigue escribiendo positivo. El orden del camino va de la semilla al pasado. Con both se invierte la rama hacia atrás y se une con la rama hacia adelante, sin duplicar la semilla. Una punta sigue el orden del camino, por lo que en una rama backward apunta en el sentido de la integración hacia atrás.

LaTeX · ejemplo 36
\begin{noctiaxis}[width=430,height=320]
  [xmin=-1.5,xmax=1.5,ymin=-1.5,ymax=1.5,
   axes=origin-box,aspect=equal,legendpos=topright]
  \NoctiVectorField[xdomain=-1:1,ydomain=-1:1,
    nx=7,ny=7,scale=0.14,stroke=gray]{-y}{x}
  \NoctiTrajectory[step=0.02,steps=300,direction=forward,
    stroke=blue,width=1.5,arrow=end]{1,0}{-y}{x}
  \NoctiLegend{Trayectoria de rotaci\'on}
\end{noctiaxis}
Resultado del ejemplo 36: Trayectorias y líneas de flujo.
Ejemplo 36 · Trayectorias y líneas de flujo
LaTeX · ejemplo 37
\begin{noctiaxis}[width=430,height=300]
  [xmin=0,xmax=3,ymin=0,ymax=3,axes=box,aspect=equal,
   legendpos=topright]
  \NoctiStreamline[step=0.02,steps=80,direction=both,
    stroke=red,width=1.3]{1,1}{x}{-y}
  \NoctiStreamline[step=0.02,steps=70,direction=backward,
    stroke=blue,dash=4:2,arrow=end,opacity=0.7]{2,1}{x}{-y}
  \NoctiLegend{Ambos sentidos}
  \NoctiLegend{Integraci\'on hacia atr\'as}
\end{noctiaxis}
Resultado del ejemplo 37: Trayectorias y líneas de flujo.
Ejemplo 37 · Trayectorias y líneas de flujo

A diferencia del campo de flechas, estas curvas son series: participan en el autorango y pueden recibir NoctiLegend. Admiten exactamente las opciones de la tabla; no aceptan kind, id, samples, sampling, rangesamples, maxsamples, tolerance ni normalize. El comando elegido determina si se normaliza el campo. El viewport recorta el dibujo; la integración puede continuar fuera de él. No se detectan ni cierran bucles automáticamente.

Curvas solución de una ecuación diferencial

Una familia conocida analíticamente se dibuja con NoctiFunction. Para aproximar una ecuación de primer orden dy/dx=f(x,y), puede escribirse el sistema plano dx/dt=1, dy/dt=f(x,y) y usar NoctiTrajectory. Como x(t)=x0+t, aquí el paso también es un incremento en X. El siguiente ejemplo compara dy/dx=x*y, y(0)=1, con su solución analítica.

LaTeX · ejemplo 38
\begin{noctiaxis}[width=460,height=300]
  [xmin=-2,xmax=2,ymin=0,ymax=8,axes=origin-box,
   legendpos=topleft]
  \NoctiFunction[domain=-2:2,samples=401,
    stroke=gray,width=2,dash=4:2]{exp(x*x/2)}
  \NoctiTrajectory[step=0.01,steps=200,direction=both,
    stroke=blue,width=1.1]{0,1}{1}{x*y}
  \NoctiPoint[labelpos=right]{0,1}{$y(0)=1$}
  \NoctiXLabel{$x$}\NoctiYLabel{$y$}
  \NoctiLegend{$e^{x^2/2}$}
  \NoctiLegend{RK4}
\end{noctiaxis}
Resultado del ejemplo 38: Curvas solución de una ecuación diferencial.
Ejemplo 38 · Curvas solución de una ecuación diferencial

Esto no añade solución simbólica, cálculo de constantes de integración ni verificación automática de una EDO. En sistemas rígidos o cerca de singularidades el paso fijo puede ser inadecuado. Para revisar sensibilidad numérica, reducir step a la mitad y duplicar steps, conservando el mismo horizonte.

Paradas, presupuesto y límites numéricos

La rama conserva su prefijo calculado y emite un diagnóstico si encuentra:

  • Campo o etapa intermedia indefinidos, no finitos o fuera de +/-1e12.
  • Un equilibrio en la posición actual.
  • Una coordenada siguiente fuera del límite permitido.
  • Estancamiento numérico: el siguiente punto coincide con el actual.
  • En NoctiStreamline, un equilibrio en una etapa intermedia.

Una semilla de equilibrio solo produce un punto; no aparece una línea. Para mostrarla usar NoctiPoint. No hay eventos, paso adaptativo, estimación de error incorporada ni resolución especial de sistemas rígidos. Un paso grande puede saltar una singularidad.

Cada paso solicitado reserva nueve unidades del presupuesto: ocho evaluaciones escalares de las cuatro etapas más un punto. La reserva completa es 9*steps*ramas+1, con una o dos ramas. Se calcula antes de integrar, incluso si se alcanzará un equilibrio pronto. Con el presupuesto predeterminado de 100000 puntos por figura, steps=10000,direction=both no cabe. Otros objetos y paneles comparten el mismo presupuesto.

Campos escalares bidimensionales

Referencia
\NoctiScalarTable[opciones]{ruta-del-archivo}
\NoctiScalarFunction[opciones]{f(x,y)}
\NoctiColorLabel{texto TeX}

Un campo escalar representa un valor nodal z sobre una malla rectangular cartesiana. Puede mostrarse mediante celdas de color, isolíneas o bandas rellenas. Se permite un campo escalar por eje o panel. Los ejes X/Y y la escala de color son lineales. El campo aporta sus límites espaciales al autorango y no ocupa una entrada de NoctiLegend.

Tabla rectangular y selección de columnas

Cada fila es un nodo (x,y,z), no un píxel ni el promedio de una celda. El orden de las filas es libre. Las coordenadas X e Y únicas se ordenan y forman una malla por producto cartesiano; el espaciado puede ser no uniforme. Noctiks no convierte puntos dispersos en una malla.

Opción exclusiva de tabla Predeterminado Tipo, valores y efecto
x x Nombre exacto del encabezado para la coordenada X.
y y Nombre exacto del encabezado para la coordenada Y.
z z Nombre exacto del encabezado para el valor escalar.
delimiter comma comma, tab o semicolon. En tablas escalares no se deduce de la extensión.

Las tres columnas seleccionadas deben ser distintas. Los encabezados deben ser no vacíos y únicos; todas las filas deben tener la misma cantidad de campos. El formato es UTF-8, con BOM opcional, finales LF o CRLF y campos entre comillas cuando corresponde; las comillas internas se duplican. Se omiten líneas vacías. Las columnas numéricas contienen literales, incluida notación científica; no contienen expresiones ni nombres de constantes. No se permiten coordenadas duplicadas (x,y), aunque sus valores Z coincidan.

LaTeX · ejemplo 39
\begin{filecontents*}{noctiks-manual-temperatura.csv}
posx,posy,temperatura
0,0,10
1,0,20
0,1,15
1,1,30
\end{filecontents*}
\begin{noctiaxis}[width=460,height=290][axes=box,grid=none]
  \NoctiScalarTable[x=posx,y=posy,z=temperatura,
    delimiter=comma,mode=heat]{noctiks-manual-temperatura.csv}
  \NoctiXLabel{$x$ (m)}\NoctiYLabel{$y$ (m)}
  \NoctiColorLabel{$T$ (${}^\circ$C)}
\end{noctiaxis}
Resultado del ejemplo 39: Tabla rectangular y selección de columnas.
Ejemplo 39 · Tabla rectangular y selección de columnas

En esta malla de una sola celda, mode=heat,shading=flat pinta la celda con el valor medio (10+20+15+30)/4=18.75. La barra conserva el rango nodal automático 10:30.

LaTeX · ejemplo 40
\begin{filecontents*}{noctiks-manual-campo-semicolon.csv}
x;y;z
0;0;0
2;0;2
0;1;1
2;1;3
\end{filecontents*}
\begin{noctiaxis}[width=440,height=270][axes=box,grid=none]
  \NoctiScalarTable[delimiter=semicolon,mode=filled,
    levels=0.5:1.5:2.5,colormap=sequential]
    {noctiks-manual-campo-semicolon.csv}
\end{noctiaxis}
Resultado del ejemplo 40: Tabla rectangular y selección de columnas.
Ejemplo 40 · Tabla rectangular y selección de columnas

Para TSV usar delimiter=tab y tabuladores reales en el archivo. La ruta debe ser relativa al proyecto, sin componentes vacíos, ., .., barra inversa, :, rutas absolutas ni URLs. El archivo debe estar disponible entre los recursos del proyecto. Vuelve a compilar después de modificar los datos.

Función de dos variables

Opción exclusiva de función Predeterminado Tipo, unidad, valores y efecto
xdomain Obligatoria Intervalo creciente a:b, en unidades X.
ydomain Obligatoria Intervalo creciente c:d, en unidades Y.
nx 31 Entero entre 2 y 201; nodos uniformes en X, incluidos los extremos.
ny 31 Entero entre 2 y 201; nodos uniformes en Y, incluidos los extremos.

El argumento obligatorio es una expresión en x e y con las funciones y constantes del evaluador. El dominio de muestreo es independiente del viewport. Cambiar xmin/xmax no cambia qué nodos se evalúan. Las opciones numéricas xdomain, ydomain, nx, ny, levels, levelcount, zmin y zmax admiten constantes y expresiones escalares.

LaTeX · ejemplo 41
\begin{noctiaxis}[width=460,height=310]
  [axes=box,grid=none,aspect=equal]
  \NoctiConstant{radius}{2}
  \NoctiScalarFunction[xdomain=-radius:radius,
    ydomain=-radius:radius,nx=31,ny=31,mode=heat,
    colormap=jet,colorbar=true]{x*x+y*y}
  \NoctiColorLabel{$x^2+y^2$}
\end{noctiaxis}
Resultado del ejemplo 41: Función de dos variables.
Ejemplo 41 · Función de dos variables

Parámetros comunes: modo, color, niveles y contornos

Opción Predeterminado Tipo, valores y efecto
mode heat heat, contour o filled; elige celdas, isolíneas o bandas.
shading flat flat o interp; interp solo se admite con mode=heat.
levels Automáticos Lista a:b:c de 1 a 32 valores estrictamente crecientes, todos interiores al rango de color. Incompatible con levelcount.
levelcount 8 Entero entre 1 y 32; genera niveles interiores equidistantes cuando no se usa levels.
zmin Mínimo nodal válido Límite inferior del color. Incluye nodos fuera del viewport al calcular el valor automático.
zmax Máximo nodal válido Límite superior del color. Debe superar al inferior si se fija cualquiera de los dos.
colormap jet jet, sequential, diverging o gray.
colorbar true true o false; muestra u oculta la barra lateral.
contours en heat/filled false true añade isolíneas; false las omite.
contours en contour true Debe permanecer true; desactivarlo produce error.
labels false true pide una etiqueta numérica por nivel visible si cabe. Requiere contours=true.
missing error error o gap; controla valores o nodos ausentes.
mask cells cells o triangles; controla qué superficie se conserva junto a nodos ausentes.
stroke Dependiente del modo En contour, color de cada nivel según la paleta si se omite. En superposiciones sobre heat/filled, negro si se omite. Un color explícito unifica las líneas.
width 0.8 Grosor de isolíneas en bp, mayor que 0 y hasta 100.
dash Continua Hasta 8 longitudes positivas en bp, hasta 1000 cada una, separadas por :.

Estos comandos no admiten fill, opacity, arrow, kind ni opciones de marcadores. La paleta colorea el campo. stroke, width y dash solo afectan las isolíneas; no dibujan bordes entre celdas ni modifican la barra de color.

Si el rango es [a,b] y levelcount=N, los niveles son a+i*(b-a)/(N+1), para i=1,...,N. No incluyen los extremos. Por ejemplo, con zmin=0,zmax=10,levelcount=4 son 2:4:6:8. Los valores explícitos deben ser distintos y estar estrictamente dentro del rango de color, aunque no todos atraviesen la zona visible del campo. Los niveles demasiado cercanos para distinguirse numéricamente producen error.

zmin y zmax cambian la correspondencia color–valor, no recortan el dominio espacial ni borran datos. Se pueden fijar uno o ambos; el otro conserva su valor automático y el par resultante debe ser creciente. Los valores fuera del rango se saturan en heat. En filled, las bandas extremas se extienden a todos los valores inferiores/superiores y usan el color del primer/último nivel. La barra reproduce esos colores de bandas.

Si todos los nodos válidos tienen el mismo valor y no se fija ningún extremo, el campo es constante: el relleno es uniforme, los niveles automáticos están vacíos y no hay isolíneas. La barra muestra un único valor central. Para imponer un rango de color sobre un campo constante, usar dos extremos explícitos distintos.

Mapa de calor plano e interpolado

mode=heat,shading=flat colorea cada celda completa con la media aritmética de sus cuatro valores nodales. Si mask=triangles conserva tres esquinas, usa la media de esas tres. Es un valor uniforme por polígono.

mode=heat,shading=interp interpola linealmente el valor Z dentro de cada triángulo y después aplica la paleta. Las celdas completas se dividen por la diagonal suroeste–noreste. No equivale a interpolar directamente los colores de las cuatro esquinas, ni a interpolación bicúbica.

LaTeX · ejemplo 42
\begin{noctiaxis}[width=460,height=310]
  [axes=box,grid=none,aspect=equal]
  \NoctiScalarFunction[xdomain=-2:2,ydomain=-2:2,
    nx=21,ny=21,mode=heat,shading=interp,
    zmin=-1,zmax=1,colormap=diverging,
    contours=true,levels=-0.5:0:0.5,stroke=black,
    width=0.6,dash=3:2]{sin(x)*cos(y)}
  \NoctiColorLabel{$f(x,y)$}
\end{noctiaxis}
Resultado del ejemplo 42: Mapa de calor plano e interpolado.
Ejemplo 42 · Mapa de calor plano e interpolado

El suavizado conserva máscaras y límites de color; no crea observaciones ni mejora la precisión del modelo o del solver que originó los datos. No suaviza las derivadas entre triángulos. El campo interpolado se rasteriza en una sola imagen RGBA, con escala máxima de 4 píxeles por bp y 2048 píxeles por lado, hasta 16 MiB de píxeles. Así se evitan costuras entre degradados en ciertos visores PDF. Ejes, isolíneas y textos conservan su representación vectorial o TeX. Al ampliar mucho el PDF puede verse la resolución del mapa interpolado.

Curvas de nivel y sus etiquetas

LaTeX · ejemplo 43
\begin{noctiaxis}[width=460,height=310]
  [axes=box,grid=none,aspect=equal]
  \NoctiScalarFunction[xdomain=-2:2,ydomain=-2:2,
    nx=41,ny=41,mode=contour,levels=0.5:1:2:3:4:5:6,
    labels=true,colormap=sequential,width=1]
    {x*x+y*y}
  \NoctiColorLabel{$x^2+y^2$}
\end{noctiaxis}
Resultado del ejemplo 43: Curvas de nivel y sus etiquetas.
Ejemplo 43 · Curvas de nivel y sus etiquetas

El modo contour usa la paleta para el color de las líneas cuando stroke se omite. Para líneas de un solo color, indicar por ejemplo stroke=black. contours=true usa exactamente la misma triangulación y los mismos niveles al superponerlas sobre heat o filled. Las isolíneas son segmentos calculados por interpolación lineal dentro de triángulos. No se promete una polilínea cerrada independiente por contorno.

Con labels=true, se intenta colocar como máximo una etiqueta numérica por nivel visible, eligiendo segmentos largos dentro del gráfico y evitando solapamientos con otras etiquetas de nivel. Si no cabe, se omite la etiqueta con un diagnóstico. No evita de manera general colisiones con otras curvas, anotaciones o la cuadrícula. No admite textos personalizados por nivel.

Contornos rellenos y paletas

LaTeX · ejemplo 44
\begin{noctiaxis}[width=460,height=310]
  [axes=box,grid=none,aspect=equal]
  \NoctiScalarFunction[xdomain=-2:2,ydomain=-2:2,
    nx=31,ny=31,mode=filled,zmin=0,zmax=8,
    levelcount=7,colormap=jet,contours=true,
    labels=true,stroke=black,width=0.5]{x*x+y*y}
  \NoctiColorLabel{$r^2$}
\end{noctiaxis}
Resultado del ejemplo 44: Contornos rellenos y paletas.
Ejemplo 44 · Contornos rellenos y paletas

filled divide cada triángulo en bandas entre niveles. Las bandas se agrupan en trazados vectoriales antes de pintar el PDF para reducir costuras internas. En puntos de silla, la diagonal fija puede producir una conexión diferente de la de un método bilineal. Los vértices que coinciden exactamente con un nivel se clasifican de forma determinista con intervalos semiabiertos; una meseta no produce líneas interiores artificiales.

Paleta Lectura visual y uso
jet Azul oscuro, azul, cian, verde, amarillo, rojo y rojo oscuro. Predeterminada.
sequential Rampa original azul oscuro, verde azulado, verde claro y amarillo.
diverging Azul, blanco y rojo. El blanco cae en el punto medio del rango; usar extremos simétricos para situarlo en cero.
gray Gris oscuro a gris claro.
LaTeX · ejemplo 45
\begin{noctiaxis}[width=440,height=280][axes=box,grid=none]
  \NoctiScalarFunction[xdomain=0:1,ydomain=0:1,
    nx=11,ny=11,mode=heat,shading=interp,
    colormap=gray,zmin=0,zmax=2,colorbar=false]{x+y}
\end{noctiaxis}
Resultado del ejemplo 45: Contornos rellenos y paletas.
Ejemplo 45 · Contornos rellenos y paletas

Valores faltantes, huecos y máscaras

missing=error exige un producto cartesiano completo y valores válidos. missing=gap permite nodos ausentes o campos Z vacíos en tablas; en funciones convierte valores indefinidos, no finitos o fuera del límite en nodos ausentes. Las coordenadas X/Y de una fila siempre deben ser válidas. Escribir NaN o Inf en CSV sigue siendo un error: representar un valor faltante mediante un campo vacío o una fila ausente.

Máscara Celda con cuatro esquinas válidas Celda con tres Celda con dos o menos
mask=cells Conservada. Omitida por completo. Omitida.
mask=triangles Conservada y triangulada SW–NE. Conserva el triángulo de las tres esquinas. Omitida.

No se rellenan huecos ni se extrapolan valores. La máscara triangular define una frontera geométrica concreta; no infiere la forma real de un obstáculo. Debe quedar al menos una celda completa o un triángulo válido. Los diagnósticos cuentan las celdas completamente omitidas por falta de esquinas.

LaTeX · ejemplo 46
\begin{filecontents*}{noctiks-manual-hueco.csv}
x,y,z
0,0,0
1,0,1
0,1,1
1,1,
2,0,2
2,1,3
\end{filecontents*}
\begin{noctiaxis}[width=440,height=280][axes=box,grid=none]
  \NoctiScalarTable[missing=gap,mask=triangles,
    mode=filled,levels=0.5:1.5:2.5,zmin=0,zmax=3,
    colormap=sequential]{noctiks-manual-hueco.csv}
\end{noctiaxis}
Resultado del ejemplo 46: Valores faltantes, huecos y máscaras.
Ejemplo 46 · Valores faltantes, huecos y máscaras
LaTeX · ejemplo 47
\begin{noctiaxis}[width=440,height=290]
  [axes=box,grid=none,aspect=equal]
  \NoctiScalarFunction[xdomain=-1:1,ydomain=-1:1,
    nx=21,ny=21,missing=gap,mask=cells,mode=heat,
    shading=flat,colormap=sequential]{sqrt(x+y)}
  \NoctiColorLabel{$\sqrt{x+y}$}
\end{noctiaxis}
Resultado del ejemplo 47: Valores faltantes, huecos y máscaras.
Ejemplo 47 · Valores faltantes, huecos y máscaras

Barra de color, etiqueta y composición

colorbar=true reserva espacio a la derecha para una barra vertical. Las marcas automáticas son el mínimo, el punto medio y el máximo; si el campo es constante solo aparece el valor central. No hay opción pública para fijar marcas o formato numérico de la barra individualmente.

NoctiColorLabel{texto TeX} coloca una etiqueta horizontal encima de la barra. Se permite una por eje. Requiere un campo escalar con colorbar=true. El texto medido debe caber en 100 bp de ancho y 22 bp de alto; usar unidades abreviadas o un tamaño TeX menor si hace falta. No hereda estilos de isolíneas.

Si también hay leyendas de series, deben situarse dentro del gráfico mediante legendpos, porque la leyenda exterior derecha entra en conflicto con la barra. Las leyendas siguen correspondiendo a series; el campo escalar no toma una.

LaTeX · ejemplo 48
\begin{noctiaxis}[width=480,height=320]
  [axes=box,grid=none,aspect=equal,legendpos=topright]
  \NoctiScalarFunction[xdomain=-2:2,ydomain=-2:2,
    nx=21,ny=21,shading=interp,colormap=sequential,
    zmin=0,zmax=3]{sqrt(x*x+y*y)}
  \NoctiVectorField[xdomain=-1.5:1.5,ydomain=-1.5:1.5,
    nx=7,ny=7,normalize=true,scale=0.18,
    stroke=gray,opacity=0.7]{-y}{x}
  \NoctiParametric[stroke=black,width=1.4,
    domain=0:6.283185307179586,samples=201]{cos(t)}{sin(t)}
  \NoctiColorLabel{$|v|$}
  \NoctiLegend{C\'irculo unidad}
\end{noctiaxis}
Resultado del ejemplo 48: Barra de color, etiqueta y composición.
Ejemplo 48 · Barra de color, etiqueta y composición

El mapa se dibuja detrás de cuadrícula, curvas y anotaciones. grid=none suele ayudar a leer un campo de color. En comparaciones por paneles, fijar los mismos zmin, zmax y niveles: los rangos de color automáticos se calculan por campo, no se comparten. Los paneles conservan su mecanismo de márgenes compartidos.

Límites de datos y significado científico

Cada eje de la malla admite entre 2 y 201 coordenadas. La cantidad de nodos y los vértices generados consumen el presupuesto compartido de puntos, que por defecto es 100000 por figura. Una malla de 201 por 201 no garantiza que quepan además todos sus contornos y polígonos; reducir nx/ny o la cantidad de niveles. La composición con varios paneles también consume este presupuesto. Todos los valores y coordenadas deben ser finitos y de magnitud hasta 1e12. El archivo de tabla está limitado por defecto a 8000000 bytes; se mantienen los límites generales de lectura de datos.

Noctiks representa datos y expresiones; no resuelve dentro del campo ecuaciones en derivadas parciales. Los resultados FDM, FEM o BEM pueden importarse de solvers externos si ya forman la malla requerida. No hay triangulación no estructurada, interpolación cúbica, escala logarítmica de color ni campo 3D. Un dibujo más suave no reduce por sí mismo el error del cálculo científico.

Dibujo geométrico: lienzos, coordenadas y primitivas

Los comandos de este capítulo se cargan con \usepackage{noctiks}. También están disponibles cuando se carga noctiplots, que depende de noctiks. Cada ejemplo TeX es un fragmento para insertar dentro de document, con ese paquete cargado. Compila el documento en Paper Studio para ver el resultado.

La unidad geométrica es bp, equivalente a 1/72 de pulgada. El origen está en la esquina inferior izquierda; X crece hacia la derecha e Y hacia arriba. Una coordenada se escribe x,y, un tamaño ancho,alto y una lista de puntos x,y;x,y;.... En los argumentos geométricos de diagramas se usan números literales; las constantes con nombre de las gráficas no sustituyen estos campos.

Tamaño de los entornos

Entorno / parámetro Tipo y unidad Predeterminado Límite y efecto Ejemplo
noctikspicture / width Número, bp 320 0 < width ≤ 2000; ancho de la caja TeX y del PDF width=400
noctikspicture / height Número, bp 200 0 < height ≤ 2000; alto de la caja y del PDF height=240
nocticontrol sin [...] Alias de figura 460 × 240 bp Sus comandos de control también pueden declararse en noctikspicture \begin{nocticontrol}
noctivenn sin [...] Alias de figura 300 × 220 bp Sus comandos semánticos también pueden declararse en noctikspicture \begin{noctivenn}

Al escribir un argumento opcional en nocticontrol o noctivenn, este sustituye la lista predeterminada del alias. Los valores que falten proceden del entorno base: width=320,height=200. Por ejemplo, \begin{nocticontrol}[width=460] produce 460 × 200 bp. Para conservar la altura deseada, escribir ambas dimensiones. Un [] vacío en cualquiera de los dos alias produce 320 × 200 bp.

El lienzo no crece automáticamente y toda la geometría vectorial se recorta a sus límites. Los nodos ordinarios pueden quedar parcialmente fuera y recortarse; otras API, como etiquetas de señal, grupos semánticos y Venn, rechazan ciertos desbordamientos antes de dibujar. No se permite anidar figuras.

LaTeX · ejemplo 49
\begin{noctikspicture}[width=320,height=200]
  \NoctiksLine[stroke=blue,width=1.5,arrow=end]{20,30}{290,30}
  \NoctiksCircle[stroke=green,fill=0.9:0.98:0.94]{155,110}{38}
  \NoctiksLabel{155,110}{$e^{i\pi}+1=0$}
\end{noctikspicture}
Resultado del ejemplo 49: Tamaño de los entornos.
Ejemplo 49 · Tamaño de los entornos

Firmas y argumentos obligatorios

Referencia
\NoctiksLine[estilo]{inicio}{fin}
\NoctiksPolyline[estilo]{lista de puntos}
\NoctiksPolygon[estilo]{lista de vértices}
\NoctiksBezier[estilo]{inicio}{control 1}{control 2}{fin}
\NoctiksRect[estilo]{esquina inferior izquierda}{ancho,alto}
\NoctiksEllipse[estilo]{esquina inferior izquierda de la caja}{ancho,alto}
\NoctiksCircle[estilo]{centro}{radio}
\NoctiksLabel{centro}{texto TeX}
Comando / argumento Tipo y unidad Predeterminado Validación y significado Ejemplo
Line: inicio, fin Dos coordenadas, bp Obligatorios Exactamente dos puntos; segmento recto {20,30}{120,60}
Polyline: puntos Lista x,y;..., bp Obligatoria Al menos dos puntos; une puntos consecutivos, sin cerrar {20,30;70,70;120,30}
Polygon: vértices Lista x,y;..., bp Obligatoria Al menos tres; cierra automáticamente del último al primero {20,30;70,70;120,30}
Bezier: inicio, controles, fin Cuatro coordenadas, bp Obligatorios Bézier cúbica; los dos controles no son puntos que la curva deba atravesar {20,30}{40,90}{100,90}{120,30}
Rect: esquina Coordenada, bp Obligatoria Origen de la caja; no es el centro {20,30}
Rect: tamaño Par ancho,alto, bp Obligatorio Ambos estrictamente positivos {90,50}
Ellipse: esquina Coordenada, bp Obligatoria Esquina de su caja delimitadora; no es el centro {20,30}
Ellipse: tamaño Par ancho,alto, bp Obligatorio Ambos positivos; son diámetros, no radios {90,50}
Circle: centro Coordenada, bp Obligatorio Centro del círculo {70,60}
Circle: radio Número, bp Obligatorio Estrictamente positivo {25}
Label: centro Coordenada, bp Obligatorio Centro de colocación del texto medido por TeX {70,60}
Label: texto TeX Obligatorio, puede ser vacío Se mide y compone con TeX; admite fórmulas y formato {$\alpha+\beta$}

Los números externos deben ser finitos y de magnitud como máximo 1e12, además de los límites específicos de cada argumento. Las listas consumen el presupuesto de puntos de la figura; el valor predeterminado de ese presupuesto es 100 000.

Los siete comandos geométricos admiten stroke, fill, width, dash, arrow y opacity con el contrato de estilos comunes. La siguiente distinción determina qué cambia visualmente al usar esas claves:

Geometría Relleno Flechas
Line, Polyline fill se admite pero el trazado permanece abierto y sin relleno end y both se aplican a los segmentos terminales
Polygon fill rellena el interior; el borde se conserva arrow no añade puntas a un trazado cerrado
Bezier Se dibuja el trazo cúbico; fill no rellena la curva Sigue la dirección del último/primer control hacia el extremo
Rect, Ellipse, Circle fill rellena la forma; none deja solo el contorno No se dibujan puntas aunque se suministre arrow
Label No admite opciones vectoriales Texto horizontal con el formato TeX de su argumento

Ejemplo de cada primitiva, con coordenadas separadas para poder reconocerlas:

LaTeX · ejemplo 50
\begin{noctikspicture}[width=400,height=240]
  \NoctiksLine[stroke=blue,arrow=both]{20,200}{110,200}
  \NoctiksPolyline[stroke=orange,width=1.5]{145,180;175,215;205,180}
  \NoctiksPolygon[stroke=green,fill=0.9:0.98:0.94]{255,180;300,220;345,180}
  \NoctiksBezier[stroke=purple,arrow=end]{20,120}{45,170}{90,170}{115,120}
  \NoctiksRect[stroke=blue,fill=0.94:0.96:1]{145,100}{70,40}
  \NoctiksEllipse[stroke=red]{255,100}{90,40}
  \NoctiksCircle[stroke=green,dash=3:2]{65,45}{25}
  \NoctiksLabel{190,45}{\textbf{Texto} y $x^2+y^2$}
\end{noctikspicture}
Resultado del ejemplo 50: Firmas y argumentos obligatorios.
Ejemplo 50 · Firmas y argumentos obligatorios

NoctiksLabel no crea un nodo, una caja de fondo ni un ancla para conectores. Para conectar una fórmula a otra se necesita NoctiksNode, que conserva su geometría medida y le asigna un nombre.

Nodos medidos, formas y posición relativa

Referencia
\NoctiksNode[opciones]{nombre}{centro}{texto TeX}
\NoctiksNodeRelative[opciones]{nombre}{texto TeX}

Un nodo combina texto TeX, una forma opcional y anclas de conexión. Los tamaños se calculan a partir del ancho real y de la suma altura + profundidad del texto. El nombre es único y no vacío dentro de la figura. Se recomienda usar nombres sin puntos: la notación de anclas reserva el punto para nombre.ancla.

Parámetros de geometría

Parámetro Tipo y unidad Predeterminado Límite / efecto Ejemplo
shape Enumeración rect rect, circle, ellipse, diamond, none shape=diamond
paddingx Número, bp por lado 6 0…1000000; espacio horizontal alrededor del texto paddingx=10
paddingy Número, bp por lado 5 0…1000000; espacio vertical alrededor del texto paddingy=8
minwidth Número, bp 0 0…1000000; ancho exterior mínimo minwidth=80
minheight Número, bp 0 0…1000000; alto exterior mínimo minheight=36
nombre Identificador Obligatorio No vacío y único en la figura; las referencias distinguen mayúsculas {controller}
centro Coordenada, bp Obligatorio en Node absoluto Solo puede estar vacío si se usa una relación {100,90}
texto TeX TeX Obligatorio, puede ser vacío Su medida determina el tamaño; su color y tipografía son TeX {$G(s)$}

El ancho y alto finales deben ser positivos y como máximo 1 000 000 bp. Este límite geométrico no amplía el lienzo, cuyo máximo sigue siendo 2000 bp por lado. Un texto vacío con padding y mínimos también vacíos produce dimensiones nulas y es inválido.

Si w y h son las dimensiones del rectángulo de texto más padding, la forma calcula sus dimensiones antes de aplicar los mínimos:

Forma Cálculo de tamaño exterior Consecuencia
rect w × h Caja rectangular que envuelve al texto
none w × h La caja existe para disposición y anclas, pero no se pinta
circle Diámetro sqrt(w²+h²) El rectángulo de texto cabe dentro del círculo; los mínimos conservan un diámetro único
ellipse sqrt(2)*w × sqrt(2)*h El rectángulo de texto cabe dentro de la elipse
diamond 2*w × 2*h Rombo con vértices cardinales; contiene el rectángulo de texto

Los nodos admiten las seis claves de estilo común. El relleno y el contorno no modifican el texto TeX. arrow no añade flechas al borde de un nodo; shape=none conserva siempre el contorno invisible aunque se indique un relleno.

LaTeX · ejemplo 51
\begin{noctikspicture}[width=440,height=180]
  \NoctiksNode[minwidth=60,minheight=36,fill=0.94:0.96:1]{R}{55,95}{$R$}
  \NoctiksNode[shape=circle,paddingx=8,paddingy=8]{C}{140,95}{$C$}
  \NoctiksNode[shape=ellipse,fill=0.96:0.94:1]{E}{225,95}{$E$}
  \NoctiksNode[shape=diamond,paddingx=10,paddingy=7]{D}{310,95}{$D$}
  \NoctiksNode[shape=none,minwidth=50]{N}{395,95}{$N$}
  \NoctiksConnect[arrow=end]{R.east}{C.west}
  \NoctiksConnect[arrow=end]{C.east}{E.west}
  \NoctiksConnect[arrow=end]{E.east}{D.west}
  \NoctiksConnect[arrow=end]{D.east}{N.west}
\end{noctikspicture}
Resultado del ejemplo 51: Parámetros de geometría.
Ejemplo 51 · Parámetros de geometría

Anclas de conexión

Las anclas válidas son center, north, south, east, west, northeast, northwest, southeast y southwest. Se escriben, por ejemplo, G.east. Las cardinales tocan el centro de cada lado; center es el centro del nodo. Las diagonales intersectan el contorno real en dirección a una esquina de su caja delimitadora. En elipses y rombos no son la esquina de la caja. El ancla se sitúa sobre la línea central del contorno, sin separación extra por su grosor.

LaTeX · ejemplo 52
\begin{noctikspicture}[width=300,height=190]
  \NoctiksNode[shape=ellipse,minwidth=85,minheight=45]{A}{80,80}{$A$}
  \NoctiksNode[shape=diamond,minwidth=70,minheight=45]{B}{225,135}{$B$}
  \NoctiksConnect[arrow=end]{A.northeast}{B.southwest}
  \NoctiksSignal[labelside=below,labelgap=8]{A.east}{B.west}{$u$}
\end{noctikspicture}
Resultado del ejemplo 52: Anclas de conexión.
Ejemplo 52 · Anclas de conexión

Disposición relativa

NoctiksNodeRelative omite la coordenada explícita y requiere exactamente una relación. El nodo de referencia puede aparecer después en el código. La separación se mide entre los bordes de las cajas finales, incluidos forma, padding y mínimos; no es la distancia entre centros.

Parámetro Tipo y unidad Predeterminado Límite / efecto Ejemplo
rightof Nombre de nodo Ninguno Sitúa el nodo a la derecha; alinea los centros en Y rightof=A
leftof Nombre de nodo Ninguno Sitúa el nodo a la izquierda; alinea los centros en Y leftof=A
above Nombre de nodo Ninguno Sitúa el nodo arriba; alinea los centros en X above=A
below Nombre de nodo Ninguno Sitúa el nodo abajo; alinea los centros en X below=A
gap Número, bp 24 0…1000000; separación entre cajas en la dirección elegida gap=30
shiftx Número, bp 0 Finito, magnitud ≤ 1e12; desplazamiento posterior a la disposición shiftx=8
shifty Número, bp 0 Finito, magnitud ≤ 1e12; desplazamiento posterior a la disposición shifty=-5

Los centros calculados deben seguir siendo finitos y de magnitud ≤ 1e12. Una relación no puede combinarse con un centro explícito. gap, shiftx y shifty requieren una relación. La forma larga equivalente a NodeRelative es \NoctiksNode[rightof=A]{B}{}{texto}.

LaTeX · ejemplo 53
\begin{noctikspicture}[width=360,height=220]
  \NoctiksNode[minwidth=55,minheight=30]{A}{170,110}{$A$}
  \NoctiksNodeRelative[rightof=A,gap=30,shiftx=8,shifty=-5]{B}{$B$}
  \NoctiksNodeRelative[leftof=A,gap=30]{C}{$C$}
  \NoctiksNodeRelative[above=A,gap=25]{D}{$D$}
  \NoctiksNodeRelative[below=A,gap=25]{E}{$E$}
  \NoctiksConnect[arrow=end]{A.east}{B.west}
  \NoctiksConnect[arrow=end]{A.west}{C.east}
  \NoctiksConnect[arrow=end]{A.north}{D.south}
  \NoctiksConnect[arrow=end]{A.south}{E.north}
\end{noctikspicture}
Resultado del ejemplo 53: Disposición relativa.
Ejemplo 53 · Disposición relativa

Se resuelven todos los nodos antes de pintar: funcionan las referencias adelantadas y los conectores declarados antes que sus nodos. Se rechazan nombres duplicados, referencias inexistentes, ciclos y profundidad de dependencia superior a 128. Toda cadena de dependencias necesita una raíz absoluta.

La disposición no evita colisiones ni aumenta el lienzo. El orden de dibujo sigue el orden de las declaraciones, aunque la geometría se haya resuelto antes. Los nodos bajo una transformación distinta de la identidad no están admitidos.

Conectores y etiquetas de señal

Referencia
\NoctiksConnect[opciones]{origen.ancla}{destino.ancla}
\NoctiksSignal[opciones]{origen.ancla}{destino.ancla}{texto TeX}

Connect dibuja un cable; Signal dibuja el cable y una etiqueta medida. Ambos reciben anclas de nodos existentes, no coordenadas libres. Para extremos libres se usa NoctiksLine o una polilínea. Las ramas de control también exponen anclas del tipo sample.tap.

Rutas y parámetros

Parámetro Tipo y unidad Predeterminado Límite / efecto Ejemplo
route Enumeración straight Una de las nueve rutas de la tabla siguiente route=hvh
bend Coordenada X o Y, bp Punto medio de los extremos Solo con hvh o vhv; fija la coordenada del tramo central bend=180
clearance Número, bp 20 0 < clearance ≤ 1000000; solo con above, below, left, right clearance=35
arrow en Connect sin [...] Estilo de flecha end, insertado por TeX El argumento omitido es [arrow=end] \NoctiksConnect{A.east}{B.west}
arrow en Connect con [...] Estilo de flecha none si falta la clave La lista explícita sustituye el valor TeX; incluir arrow=end para conservarlo [stroke=blue,arrow=end]
arrow en Signal Estilo de flecha end Noctiks conserva end aunque haya otras opciones; none lo desactiva [stroke=blue,arrow=none]

Las demás claves de estilo común se aplican al trazado. fill no convierte un conector en una región rellena. bend y clearance no son intercambiables: usar una clave con una ruta ajena produce error.

Ruta Recorrido desde A hasta B Interpretación de ajuste
straight Segmento directo No admite bend ni clearance
hv Horizontal, después vertical La esquina es (Bx,Ay)
vh Vertical, después horizontal La esquina es (Ax,By)
hvh Horizontal, vertical, horizontal X del tramo central = bend o (Ax+Bx)/2
vhv Vertical, horizontal, vertical Y del tramo central = bend o (Ay+By)/2
above Desvío por arriba de ambos extremos Y = max(Ay,By)+clearance
below Desvío por debajo de ambos extremos Y = min(Ay,By)-clearance
left Desvío a la izquierda de ambos extremos X = min(Ax,Bx)-clearance
right Desvío a la derecha de ambos extremos X = max(Ax,Bx)+clearance

Ejemplo de una ruta con tramo central controlado y de un retorno lateral:

LaTeX · ejemplo 54
\begin{noctikspicture}[width=360,height=220]
  \NoctiksNode[minwidth=60,minheight=32]{A}{70,150}{$A$}
  \NoctiksNode[minwidth=60,minheight=32]{B}{285,90}{$B$}
  \NoctiksSignal[route=hvh,bend=180,stroke=blue,labelat=0.25]{A.east}{B.west}{$u$}
  \NoctiksSignal[route=below,clearance=35,labelside=below]{B.south}{A.south}{$y$}
\end{noctikspicture}
Resultado del ejemplo 54: Rutas y parámetros.
Ejemplo 54 · Rutas y parámetros

Para probar cada ruta sin superponer nueve cables, sustituir el primer conector del ejemplo por una sola de estas listas de opciones: route=straight, route=hv, route=vh, route=hvh,bend=180, route=vhv,bend=110, route=above,clearance=25, route=below,clearance=25, route=left,clearance=25 o route=right,clearance=25.

Los vértices consecutivos idénticos se eliminan. Las flechas siguen el último tramo no nulo, por lo que una ruta ortogonal puede terminar con una punta vertical u horizontal. La separación lateral se mide desde los extremos del cable y no desde el conjunto de obstáculos o desde todos los nodos de la figura.

Parámetros exclusivos de las etiquetas

Parámetro Tipo y unidad Predeterminado Límite / efecto Ejemplo
labelat Fracción de longitud 0.5 0…1; posición sobre la longitud total de la polilínea labelat=0.7
labelside Dirección de página above above, below, left, right; no depende de la inclinación del cable labelside=below
labelgap Número, bp 4 No negativo y magnitud ≤ 1e12; separación desde el punto de referencia al borde del texto labelgap=8
labeldx Número, bp 0 Finito, magnitud ≤ 1e12; ajuste adicional hacia la derecha si es positivo labeldx=6
labeldy Número, bp 0 Finito, magnitud ≤ 1e12; ajuste adicional hacia arriba si es positivo labeldy=-3

El desplazamiento inicial añade la mitad del ancho del texto en los lados izquierdo/derecho, o la mitad de su alto medido en arriba/abajo. Después aplica labeldx y labeldy. No gira los glifos. El rectángulo completo de la etiqueta debe caber en el lienzo; una señal de longitud cero no puede llevar etiqueta.

LaTeX · ejemplo 55
\begin{noctikspicture}[width=360,height=160]
  \NoctiksNode[minwidth=55,minheight=30]{A}{65,85}{$A$}
  \NoctiksNode[minwidth=55,minheight=30]{B}{295,85}{$B$}
  \NoctiksSignal[stroke=blue,labelat=0.7,labelside=below,labelgap=8,labeldx=6,labeldy=-3]{A.east}{B.west}{$u(t)$}
\end{noctikspicture}
Resultado del ejemplo 55: Parámetros exclusivos de las etiquetas.
Ejemplo 55 · Parámetros exclusivos de las etiquetas

NoctiksConnect no admite claves label.... Las etiquetas de Signal no se admiten bajo transformaciones distintas de la identidad. No hay selección automática de puertos, evitación de obstáculos ni prevención de colisiones entre etiquetas: ajustar ruta, anclas y desplazamientos forma parte de la composición.

Grupos gráficos, transformaciones y recorte

Referencia
\begin{noctiksgroup} ... \end{noctiksgroup}
\NoctiksTransform{a,b,c,d,tx,ty}
\NoctiksClip{esquina inferior izquierda}{ancho,alto}

noctiksgroup guarda el estado gráfico y lo restaura al cerrar el grupo. No dibuja un marco ni asigna un nombre. Es distinto de NoctiGroup, que calcula un fondo semántico alrededor de nodos de control.

Parámetro / operación Tipo y unidad Predeterminado Límite / efecto Ejemplo
Profundidad de grupo Número de grupos anidados 0 Máximo 32; cierres desparejados fallan Dos grupos anidados
a,b,c,d Coeficientes de matriz No hay valor implícito Se requieren los seis coeficientes; escala, giro, reflexión o cizalla 0,1,-1,0
tx,ty Traslación, bp No hay valor implícito Dos últimos coeficientes 20,30
Determinante a*d-b*c — Su valor absoluto debe superar 1e-12; matrices singulares fallan Identidad: 1
Matriz acumulada Seis coeficientes Identidad inicial Todos finitos y de magnitud ≤ 1e8 1,0,0,1,20,30
Clip: esquina Coordenada, bp del sistema vigente Obligatoria Origen del rectángulo de recorte {10,10}
Clip: tamaño Par positivo, bp Obligatorio Ancho y alto estrictamente positivos {130,90}

La transformación cumple x'=a*x+c*y+tx e y'=b*x+d*y+ty. En una secuencia de transformaciones, la más reciente actúa primero sobre las coordenadas locales. Para trasladar una forma ampliada: traslación y luego escala en el código. El grupo padre se aplica después de la transformación local del grupo hijo.

LaTeX · ejemplo 56
\begin{noctikspicture}[width=320,height=200]
  \begin{noctiksgroup}
    \NoctiksTransform{1,0,0,1,25,25}
    \NoctiksTransform{1.3,0,0,1.3,0,0}
    \NoctiksPolygon[fill=0.94:0.96:1,stroke=blue]{0,0;80,0;40,75}
    \NoctiksLabel{40,30}{$T$}
  \end{noctiksgroup}
  \begin{noctiksgroup}
    \NoctiksTransform{0,1,-1,0,250,40}
    \NoctiksRect[stroke=purple,fill=0.97:0.94:1]{0,0}{90,45}
  \end{noctiksgroup}
\end{noctikspicture}
Resultado del ejemplo 56: Grupos gráficos, transformaciones y recorte.
Ejemplo 56 · Grupos gráficos, transformaciones y recorte

El centro de NoctiksLabel se transforma; los glifos conservan orientación y tamaño. El clip afecta a la geometría vectorial, no recorta parcialmente el texto del overlay TeX. Los nodos medidos no pueden usarse bajo matrices distintas de la identidad. Los controles y las declaraciones Venn requieren nivel de figura.

El recorte queda fijado con el sistema de coordenadas que existe cuando se invoca. El ejemplo lo fija antes de trasladar el polígono:

LaTeX · ejemplo 57
\begin{noctikspicture}[width=230,height=150]
  \begin{noctiksgroup}
    \NoctiksClip{20,20}{150,100}
    \NoctiksTransform{1,0,0,1,35,25}
    \NoctiksPolygon[fill=0.9:0.95:1,stroke=blue]{0,0;170,0;85,140}
  \end{noctiksgroup}
  \NoctiksRect[stroke=gray,dash=3:2]{20,20}{150,100}
\end{noctikspicture}
Resultado del ejemplo 57: Grupos gráficos, transformaciones y recorte.
Ejemplo 57 · Grupos gráficos, transformaciones y recorte

Transform y Clip fuera de un grupo producen error. Cerrar el grupo restaura la matriz y el recorte anteriores. El recorte obligatorio del lienzo siempre sigue vigente.

Diagramas de control: bloques, cadenas y realimentación

Los comandos de control coloca nodos a partir de sus medidas TeX, dibuja conexiones y registra los signos de entrada a sumadores. Representa el diagrama; las funciones de transferencia escritas en los bloques son etiquetas, sin cálculo de respuesta temporal, estabilidad, Bode, Nyquist ni álgebra de control.

Referencia
\begin{nocticontrol}[width=460,height=240] ... \end{nocticontrol}
\NoctiInput[opciones]{nombre}{texto TeX}
\NoctiOutput[opciones]{nombre}{texto TeX}
\NoctiBlock[opciones]{nombre}{texto TeX}
\NoctiSum[opciones]{nombre}
\NoctiChain[opciones]{nodo -> nodo -> ...}
\NoctiFeedback[opciones]{fuente}{sumador}
\NoctiBranch[opciones]{nombre de rama}{origen de cable}{destino de cable}
\NoctiChainLabel[opciones]{origen de cable}{destino de cable}{texto TeX}
\NoctiGroup[opciones]{nombre de grupo}{nodo -> nodo -> ...}{título TeX}
\NoctiConnect[opciones]{origen.ancla}{destino.ancla}

Primitivas de control

Comando Texto Forma fija Mínimos predeterminados Relleno predeterminado
NoctiInput Obligatorio none, caja rectangular invisible 0 × 0 bp Ninguno
NoctiOutput Obligatorio none, caja rectangular invisible 0 × 0 bp Ninguno
NoctiBlock Obligatorio rect 60 × 32 bp white
NoctiSum Vacío, sin argumento de texto circle Diámetro 18 bp white

La medida real más padding puede superar estos mínimos. Input y Output tienen padding aunque su caja sea invisible. Sum es un círculo vacío: los signos se sitúan junto a sus puertos de entrada, no como texto central.

Parámetro Tipo y unidad Predeterminado Límite / efecto Ejemplo
paddingx Número, bp por lado 6 0…1000000; contrato de nodo medido paddingx=10
paddingy Número, bp por lado 5 0…1000000; contrato de nodo medido paddingy=8
minwidth Número, bp Según primitiva 0…1000000; sustituye el mínimo de la tabla anterior minwidth=85
minheight Número, bp Según primitiva 0…1000000; en Sum conserva forma circular minheight=38
westinput + o - Signo de Chain si se omite Solo Sum; sustituye el signo de su entrada izquierda desde Chain westinput=-
stroke, fill, width, dash, arrow, opacity Estilo común Negro, 0.8 bp, continuo, sin flecha, opacidad 1; fill según primitiva La forma no usa puntas; el texto conserva formato TeX stroke=blue,fill=0.94:0.96:1

No se admite shape en estas primitivas: la determina el comando. Tampoco admiten coordenadas o relaciones rightof: su posición debe asignarse mediante Chain o, para un Block de retorno, mediante Feedback con via.

Cadenas horizontales

NoctiChain recibe entre 2 y 128 nombres distintos separados por ->. Coloca el primero en (x,y) y el resto a su derecha, con un hueco gap entre cajas medidas. Conecta east con west y dibuja los signos de los Sum que reciben una entrada desde la izquierda.

Parámetro Tipo y unidad Predeterminado Límite / efecto Ejemplo
Lista de nodos Identificadores separados por -> Obligatoria 2…128 distintos; todos declarados como primitivas de control {r -> error -> G -> y}
gap Número, bp 32 0…1000000; distancia entre bordes medidos gap=50
x Número, bp 40 Finito, magnitud ≤ 1e12; centro del primer nodo x=35
y Número, bp 65 % del alto de la figura Finito, magnitud ≤ 1e12; centro vertical de la cadena y=160
sign + o - + Entrada izquierda de cada Sum, salvo su westinput local sign=-
Estilo común Opciones de línea Flecha end; resto estándar Se aplica a los cables, no a las cajas stroke=blue,width=1.2

Un nodo de control pertenece a una única Chain o, si es Block, a una única lista via. Declarar un nodo sin asignarle posición produce error. Pueden existir varias cadenas separadas con posiciones independientes. Las referencias a nodos y cadenas no dependen del orden en que aparezcan las declaraciones.

LaTeX · ejemplo 58
\begin{nocticontrol}[width=460,height=240]
  \NoctiInput{r}{$r$}
  \NoctiSum{error}
  \NoctiBlock[paddingx=10,paddingy=8,minwidth=85,minheight=38,stroke=blue,fill=0.94:0.96:1]{G}{$\displaystyle\frac{K}{s+1}$}
  \NoctiOutput{y}{$y$}
  \NoctiChain[gap=50,x=35,y=160,sign=+,stroke=blue,width=1.2]{r -> error -> G -> y}
  \NoctiFeedback{y}{error}
\end{nocticontrol}
Resultado del ejemplo 58: Cadenas horizontales.
Ejemplo 58 · Cadenas horizontales

Realimentación directa y signos

NoctiFeedback conecta una fuente distinta del destino a un Sum. En un nodo ordinario de control sale de east. Si la fuente es Output sale de output.tap, el punto medio de su cable de entrada, y conserva la flecha original después del punto de derivación. Si la fuente es una rama nombrada, usa su .tap.

Parámetro Tipo y unidad Predeterminado Límite / efecto Ejemplo
fuente Nombre de nodo de control o rama Obligatoria Distinta del Sum destino; Output necesita cable entrante de Chain {y} o {sample}
sumador Nombre de Sum Obligatorio Debe existir; se rechaza otro tipo de primitiva {error}
side below o above below Debajo entra por south; arriba por north side=above
sign + o - - Signo junto al puerto de entrada sign=+
clearance Número, bp 45 0 < clearance ≤ 1000000; sin via se mide desde extremos del retorno clearance=35
via Lista de Blocks separados por -> Sin bloques de retorno 1…128 distintos; recorrido de derecha a izquierda via=H -> K
Estilo común Opciones de línea Flecha end; resto estándar Estilo de los tramos de retorno stroke=red,dash=4:2

No pueden entrar dos conexiones al mismo puerto del mismo Sum. La comprobación es compartida por Chain, Feedback y NoctiConnect. Un Sum puede recibir una entrada en west, otra en north y otra en south.

LaTeX · ejemplo 59
\begin{nocticontrol}[width=460,height=240]
  \NoctiInput{r}{$r$}
  \NoctiSum[westinput=-]{error}
  \NoctiBlock{G}{$G(s)$}
  \NoctiOutput{y}{$y$}
  \NoctiChain[gap=55,x=40,y=85,sign=+]{r -> error -> G -> y}
  \NoctiFeedback[side=above,clearance=35,sign=+,stroke=red,dash=4:2]{y}{error}
\end{nocticontrol}
Resultado del ejemplo 59: Realimentación directa y signos.
Ejemplo 59 · Realimentación directa y signos

En este caso la entrada izquierda es negativa por westinput=-, y la entrada superior es positiva por Feedback[sign=+]. Las opciones cambian los signos dibujados; no transforman las fórmulas escritas en el bloque.

Bifurcaciones nombradas y retorno con bloques

NoctiBranch crea un punto negro de unión de 3 bp de diámetro sobre un cable de Chain existente, sin duplicar el cable ni su flecha. El punto no tiene opciones propias de color o tamaño. Sus dos extremos deben ser vecinos en la misma cadena y estar en el mismo orden dirigido.

Parámetro Tipo y unidad Predeterminado Límite / efecto Ejemplo
Nombre de rama Identificador Obligatorio No vacío, sin ., único frente a ramas y nodos {sample}
Origen, destino Nombres de nodos vecinos de Chain Obligatorios Cable dirigido y de longitud positiva {G}{y}
pos Fracción de longitud 0.5 Estrictamente 0 < pos < 1; no admite extremos pos=0.7

En Feedback se usa {sample}; en Connect o Signal se usa {sample.tap}. El punto de unión se dibuja aunque la rama todavía no tenga una conexión adicional.

Los Blocks listados en via se declaran con NoctiBlock, pero no se incluyen en Chain. Se ordenan desde la fuente hacia el Sum, de derecha a izquierda, con huecos iguales entre cajas. Cada hueco debe medir al menos 12 bp. Si no caben, aumentar el hueco de la cadena principal o reducir anchos de los bloques.

Con via, la fuente debe estar a la derecha del Sum y ambos deben pertenecer a cadenas, directamente o mediante una rama. El carril considera los límites de los nodos de cadena en ese tramo horizontal. clearance mide la distancia desde esos límites hasta el borde del bloque de retorno más alto. No evita otros retornos, cajas ajenas ni cables arbitrarios.

LaTeX · ejemplo 60
\begin{nocticontrol}[width=460,height=240]
  \NoctiInput{r}{$r$}
  \NoctiSum{error}
  \NoctiBlock{G}{$G(s)$}
  \NoctiOutput{y}{$y$}
  \NoctiBlock{H}{$H(s)$}
  \NoctiBlock{K}{$K_f$}
  \NoctiChain[gap=75,y=65]{r -> error -> G -> y}
  \NoctiBranch[pos=0.7]{sample}{G}{y}
  \NoctiFeedback[via=H -> K,side=above,clearance=30,sign=-]{sample}{error}
\end{nocticontrol}
Resultado del ejemplo 60: Bifurcaciones nombradas y retorno con bloques.
Ejemplo 60 · Bifurcaciones nombradas y retorno con bloques

Etiquetas sobre cables existentes

NoctiChainLabel añade texto al cable entre dos vecinos dirigidos de Chain. Admite una etiqueta por cable y no dibuja una segunda flecha. Puede declararse antes de la cadena; se coloca después de resolver las medidas y posiciones.

Parámetro Tipo y unidad Predeterminado Límite / efecto Ejemplo
Origen, destino Nombres de vecinos de Chain Obligatorios Mismo orden dirigido que Chain {error}{G}
Texto TeX medido Obligatorio Debe caber entero en el lienzo {$E(s)$}
labelat Fracción 0.5 0…1; longitud del cable existente labelat=0.6
labelside Dirección de página above above, below, left, right labelside=below
labelgap Número, bp 4 No negativo; separa el borde del texto labelgap=8
labeldx Número, bp 0 Finito, magnitud ≤ 1e12 labeldx=3
labeldy Número, bp 0 Finito, magnitud ≤ 1e12 labeldy=-2

Se aplican las mismas reglas de medidas y dirección que a la etiqueta de Signal. Este comando no admite stroke, arrow, route ni otras opciones de línea: el estilo del cable se establece en Chain. Un cable de longitud cero no puede llevar una etiqueta ni una bifurcación nombrada.

LaTeX · ejemplo 61
\begin{nocticontrol}[width=460,height=220]
  \NoctiInput{r}{$r$}
  \NoctiSum{error}
  \NoctiBlock{G}{$\displaystyle\frac{K}{s+1}$}
  \NoctiOutput{y}{$y$}
  \NoctiChain[gap=60,y=150]{r -> error -> G -> y}
  \NoctiChainLabel{r}{error}{$R(s)$}
  \NoctiChainLabel[labelat=0.6,labelside=below,labelgap=8,labeldx=3,labeldy=-2]{error}{G}{$E(s)$}
  \NoctiChainLabel{G}{y}{$Y(s)$}
  \NoctiFeedback[clearance=55]{y}{error}
\end{nocticontrol}
Resultado del ejemplo 61: Etiquetas sobre cables existentes.
Ejemplo 61 · Etiquetas sobre cables existentes

Grupos semánticos con título

NoctiGroup calcula un rectángulo a partir de las cajas de sus miembros. Admite nodos ordinarios y Blocks colocados en Chain o via. El título medido reserva una banda propia y puede ensanchar el grupo. Un título vacío no reserva banda.

Parámetro Tipo y unidad Predeterminado Límite / efecto Ejemplo
Nombre de grupo Identificador Obligatorio No vacío, sin ., distinto de nodos, ramas y grupos {plant}
Miembros Nombres separados por -> Obligatorios 1…128 distintos; no admite grupos ni ramas {G -> H}
Título TeX medido Obligatorio, puede ser vacío En banda superior/inferior según titlepos {Modelo de planta}
padding Número, bp 12 0…1000; margen alrededor de miembros y banda padding=16
titlegap Número, bp 6 0…1000; distancia entre miembros y título titlegap=8
titlepos above o below above Sitúa la banda encima o debajo de los miembros titlepos=below
fill Color o none 0.94:0.96:1 Fondo; none deja solo el contorno fill=0.98:0.96:0.90
stroke Color 0.55:0.62:0.72 Color del borde stroke=blue
width, dash, opacity Estilo común 0.8 bp, continuo, 1 Solo fondo y contorno; no cambian título width=1,dash=4:2,opacity=0.8

arrow se rechaza en un grupo. El borde exterior, incluido medio grosor de línea, debe caber en el lienzo. Los grupos no desplazan los nodos ni recogen automáticamente cables de retorno, etiquetas de Chain o nodos ajenos. Se pueden solapar y compartir miembros; un fondo posterior puede cubrir otro anterior.

LaTeX · ejemplo 62
\begin{nocticontrol}[width=460,height=250]
  \NoctiInput{u}{$u$}
  \NoctiBlock{A}{$A(s)$}
  \NoctiBlock{B}{$B(s)$}
  \NoctiOutput{y}{$y$}
  \NoctiChain[gap=45,y=130]{u -> A -> B -> y}
  \NoctiGroup[padding=16,titlegap=8,titlepos=below,fill=0.98:0.96:0.90,stroke=blue,width=1,dash=4:2,opacity=0.8]{plant}{A -> B}{Modelo de planta}
  \NoctiChainLabel{A}{B}{$v$}
\end{nocticontrol}
Resultado del ejemplo 62: Grupos semánticos con título.
Ejemplo 62 · Grupos semánticos con título

Conexiones adicionales con signo

NoctiConnect comparte las nueve rutas, bend, clearance y estilos de NoctiksConnect. No coloca nodos ni crea automáticamente un punto negro de unión. Su flecha final predeterminada se conserva al especificar otras opciones.

Parámetro Tipo y unidad Predeterminado Límite / efecto Ejemplo
Origen Ancla de nodo o .tap Obligatorio Debe existir; puede ser una rama {K.west}
Destino Ancla de nodo o .tap Obligatorio Debe incluir nombre y ancla; para Sum solo west, north, south {error.south}
sign + o - + al entrar a Sum Solo para destino Sum; no puede reutilizar un puerto ocupado sign=-
arrow none, end, both end Se conserva con opciones personalizadas arrow=none
route, bend, clearance Contrato de conectores straight, punto medio, 20 bp Mismas combinaciones válidas que NoctiksConnect route=below,clearance=30
stroke, fill, width, dash, opacity Estilo común Estándar Estilo del cable; sin etiqueta incorporada stroke=purple,width=1.2

Para un destino que no sea Sum se rechaza un sign explícito. Las conexiones de bajo nivel NoctiksConnect y NoctiksSignal no registran signos ni ocupación de puertos: usar NoctiConnect cuando se necesite esa comprobación de control.

LaTeX · ejemplo 63
\begin{nocticontrol}[width=460,height=280]
  \NoctiInput{r}{$r$}
  \NoctiSum{error}
  \NoctiBlock{G}{$G(s)$}
  \NoctiOutput{y}{$y$}
  \NoctiInput{v}{$v$}
  \NoctiBlock{K}{$K(s)$}
  \NoctiChain[gap=50,x=40,y=205]{r -> error -> G -> y}
  \NoctiChain[gap=45,x=180,y=65]{v -> K}
  \NoctiConnect[route=hv,sign=-,stroke=purple,width=1.2]{K.north}{error.south}
\end{nocticontrol}
Resultado del ejemplo 63: Conexiones adicionales con signo.
Ejemplo 63 · Conexiones adicionales con signo

Todas las declaraciones Nocti... de control deben estar a nivel de figura, fuera de ejes y de noctiksgroup, incluso si el grupo conserva matriz identidad. Los fondos semánticos se pintan primero; los cables y signos generados se añaden después de las declaraciones. El texto queda en la capa TeX superior.

Conjuntos y diagramas de Venn semánticos

Estos comandos describen conjuntos y operaciones booleanas. El resultado es una región vectorial nativa: una intersección no se simula superponiendo discos transparentes. Se permiten dos o tres conjuntos, circulares o elípticos y alineados con los ejes.

Referencia
\begin{noctivenn}[width=300,height=220] ... \end{noctivenn}
\NoctiUniverse[opciones]{esquina inferior izquierda}{ancho,alto}
\NoctiSet[opciones]{nombre semántico}{centro}{etiqueta TeX}
\NoctiShade[opciones]{expresión de conjuntos}

Cada figura Venn necesita exactamente un Universe explícito y dos o tres Set. Puede contener entre cero y 32 declaraciones Shade. Las referencias adelantadas funcionan: el orden de Universe, Set y Shade no altera la región seleccionada. Todos se declaran a nivel de figura, fuera de ejes y grupos gráficos.

Universo

Parámetro Tipo y unidad Predeterminado Límite / efecto Ejemplo
Esquina Coordenada, bp Obligatoria Esquina inferior izquierda del universo {10,10}
Tamaño Par ancho,alto, bp Obligatorio Positivos; el rectángulo debe caber completo en el lienzo {280,200}
stroke Color black Estilo del contorno stroke=gray
width Número, bp 0.8 0 < width ≤ 100 width=1.2
dash Lista numérica separada por : Continua Como máximo ocho longitudes, cada una en (0,1000] bp dash=4:2
opacity Número 1 0…1; opacidad del contorno opacity=0.8

Universe no tiene nombre ni etiqueta incorporada. Para rotularlo usar NoctiksLabel. No admite fill ni arrow: el interior se rellena mediante Shade, incluida la selección del universo entero con una expresión booleana.

Conjuntos circulares y elípticos

Parámetro Tipo y unidad Predeterminado Límite / efecto Ejemplo
Nombre Identificador ASCII Obligatorio Empieza con letra; luego letras, dígitos o _; máximo 32 caracteres {A_1}
Centro Coordenada, bp Obligatorio El conjunto completo debe quedar dentro del universo {115,110}
Etiqueta TeX medido Obligatoria, puede ser vacía Independiente del nombre; debe caber en el lienzo {$\mathcal{A}$}
radius Número, bp 50 Positivo; fija ambos radios; no se combina con rx ni ry radius=60
rx Número, bp 50 si se omite Positivo; radio horizontal, no diámetro rx=65
ry Número, bp 50 si se omite Positivo; radio vertical, no diámetro ry=45
labeldx Número, bp 0 Desplazamiento de etiqueta respecto al centro en X labeldx=-15
labeldy Número, bp 0.65*ry Desplazamiento de etiqueta respecto al centro en Y labeldy=28
stroke, width, dash, opacity Estilo de contorno Negro, 0.8 bp, continuo, 1 Mismos límites que Universe stroke=blue,width=1.2

Cada nombre es único y distingue mayúsculas de minúsculas. union, intersection, difference y complement están reservados. Los nombres de conjuntos son independientes de los nombres de nodos. La etiqueta puede usar un texto distinto del nombre sin alterar las expresiones booleanas.

Si se especifica solo rx=65, ry conserva 50; si se especifica solo ry=45, rx conserva 50. Usar radius=60,rx=65 es inválido incluso si ambos valores son positivos. Los contornos de Set no admiten fill ni arrow. No hay giro de elipses ni colocación automática para diagramas de Euler.

Sombreado y operaciones

Parámetro Tipo Predeterminado Límite / efecto Ejemplo
Expresión Nombre u operación funcional Obligatoria Máximo 512 bytes; profundidad de análisis 32; nombres existentes {difference(A,B)}
fill Color cyan Se requiere un color; none produce error fill=purple
opacity Número 0.3 0…1; opacidad de esta región completa opacity=0.35

Shade solo admite esas dos claves de estilo. No añade un borde propio: los contornos del universo y de los conjuntos se dibujan después de los rellenos. Una región booleana se compone y se rellena una sola vez, por lo que su propia intersección no oscurece la opacidad. Varias llamadas a Shade sí se superponen en orden y pueden acumular opacidad donde coinciden.

Expresión Aridad Región elegida Ejemplo de caso
A Nombre único El conjunto A entero Pertenencia simple
union(A,B) 2 o 3 argumentos Puntos que pertenecen a algún argumento Unión de dos conjuntos
union(A,B,C) 3 Unión de los tres Unión triple
intersection(A,B) 2 o 3 argumentos Puntos que pertenecen a todos los argumentos Intersección doble
intersection(A,B,C) 3 Zona común a los tres Intersección triple
difference(A,B) Exactamente 2 A excluyendo B Diferencia dirigida
complement(A) Exactamente 1 Universo excluyendo A Complemento relativo al universo
difference(union(A,B),C) Composición Unión de A y B, sin C Operaciones anidadas
complement(union(A,B,C)) Composición Exterior de los tres dentro del universo Ninguno de los conjuntos
difference(A,A) Exactamente 2 Vacío Resultado válido sin área rellena
union(A,complement(A)) Composición Universo entero Selección del fondo completo

La sintaxis permite espacios y operaciones anidadas. No admite operadores infijos (A ∩ B, A|B, A-B) ni comandos TeX en la expresión; el TeX se reserva para las etiquetas. La diferencia es dirigida: difference(A,B) y difference(B,A) representan regiones distintas.

Ejemplo de dos conjuntos

LaTeX · ejemplo 64
\begin{noctivenn}[width=300,height=220]
  \NoctiUniverse[stroke=gray,width=1.2,dash=4:2,opacity=0.8]{10,10}{280,200}
  \NoctiSet[radius=60,labeldx=-15,labeldy=28,stroke=blue]{A}{115,110}{$\mathcal{A}$}
  \NoctiSet[radius=60,labeldx=15,labeldy=28,stroke=red]{B}{185,110}{$\mathcal{B}$}
  \NoctiShade[fill=cyan,opacity=0.35]{intersection(A,B)}
  \NoctiksLabel{25,195}{$U$}
\end{noctivenn}
Resultado del ejemplo 64: Ejemplo de dos conjuntos.
Ejemplo 64 · Ejemplo de dos conjuntos

Para los casos simples de la tabla, sustituir únicamente la expresión de Shade por A, union(A,B), difference(A,B), complement(A), difference(A,A) o union(A,complement(A)). Es una sustitución de la línea, no una suma de llamadas que oscurezca regiones por superposición.

Ejemplo de tres conjuntos elípticos

LaTeX · ejemplo 65
\begin{noctivenn}[width=300,height=240]
  \NoctiUniverse{10,10}{280,220}
  \NoctiSet[rx=65,ry=50,labeldx=-24,labeldy=25]{A}{115,145}{$A$}
  \NoctiSet[rx=65,ry=50,labeldx=24,labeldy=25]{B}{185,145}{$B$}
  \NoctiSet[rx=60,ry=48,labeldy=-25]{C}{150,90}{$C$}
  \NoctiShade[fill=purple,opacity=0.3]{difference(union(A,B),C)}
  \NoctiksLabel{25,215}{$U$}
\end{noctivenn}
Resultado del ejemplo 65: Ejemplo de tres conjuntos elípticos.
Ejemplo 65 · Ejemplo de tres conjuntos elípticos

Sustituir la expresión por union(A,B,C), intersection(A,B,C) o complement(union(A,B,C)) permite ver, respectivamente, la unión triple, el núcleo común y el exterior de los tres conjuntos. La geometría puede representar conjuntos separados, tangentes, contenidos o coincidentes, además de intersecciones no vacías. No se limita a la disposición clásica de tres círculos.

Orden de dibujo y límites prácticos

El orden fijo es: fondos de grupos de control, regiones sombreadas Venn, contorno del universo y de los conjuntos, y después comandos gráficos ordinarios. Las etiquetas se colocan en la capa TeX. Por eso un Shade declarado al final no tapa el contorno de sus propios conjuntos, mientras que un Rect ordinario puede cubrirlos. Los contornos conservan su propia opacidad.

La composición booleana consume el presupuesto de puntos de la figura. Se utilizan operaciones nativas de trazados y precisión gráfica numérica; no se promete aritmética simbólica exacta de fronteras. Más de tres conjuntos, formas arbitrarias como conjuntos y varios universos independientes en una misma figura quedan fuera de esta API. Para universos independientes, crear figuras distintas.

Errores frecuentes al componer diagramas

Situación Resultado / corrección
Usar 20pt o 2cm como coordenada Las coordenadas requieren números en bp; convertir y escribir el número
Usar constantes o macros TeX en posiciones de nodos Esos campos no pasan por el evaluador de constantes; escribir literales
NoctiksEllipse{100,80}{30,20} esperando un centro 100,80 es esquina; para centro (100,80), usar esquina (85,70)
Añadir [stroke=blue] a Connect y perder la flecha Añadir arrow=end en la misma lista explícita
Usar dos relaciones en NodeRelative Dejar una sola; aplicar shiftx/shifty si hace falta un ajuste
Añadir bend a route=hv bend solo corresponde a hvh o vhv
Añadir clearance a route=straight Usar un desvío lateral o retirar la clave
Etiqueta de Signal fuera del lienzo Aumentar lienzo o ajustar lado, fracción y desplazamientos
Nodo control fuera de Chain/via Incluirlo en exactamente una de esas disposiciones
Sum recibe dos entradas en south Elegir otro puerto o corregir la conexión duplicada
Branch sobre dos nodos no vecinos Elegir el cable real entre vecinos de Chain
Branch o etiqueta sobre cable con gap=0 Dejar longitud positiva al cable
Blocks via no caben Aumentar espacio horizontal; se necesitan huecos de al menos 12 bp
Group fuera del lienzo Considerar título, padding y medio grosor del borde, además de los nodos
Set con radius y rx simultáneos Elegir círculo con radius o elipse con rx/ry
Shade con fill=none Usar color o retirar el Shade si no se desea relleno
Dos universos en una figura Crear dos figuras; cada Venn acepta uno

Índice de comandos y entornos

Consulta los comandos por nombre. Sus argumentos, opciones, valores predeterminados y ejemplos están en la sección enlazada.

Comando Referencia
\NoctiBand Regiones y rellenos
\NoctiBlock Diagramas de control: bloques, cadenas y realimentación
\NoctiBranch Diagramas de control: bloques, cadenas y realimentación
\NoctiChain Diagramas de control: bloques, cadenas y realimentación
\NoctiChainLabel Diagramas de control: bloques, cadenas y realimentación
\NoctiColorLabel Campos escalares bidimensionales
\NoctiComponents Vectores, segmentos y operaciones vectoriales
\NoctiConnect Diagramas de control: bloques, cadenas y realimentación
\NoctiConstant Constantes con nombre y alcance
\NoctiDecompose Vectores, segmentos y operaciones vectoriales
\NoctiFeedback Diagramas de control: bloques, cadenas y realimentación
\NoctiFillBetween Regiones y rellenos
\NoctiFillUnder Regiones y rellenos
\NoctiFunction Funciones y curvas
\NoctiFunctionPiece Funciones y curvas
\NoctiGroup Diagramas de control: bloques, cadenas y realimentación
\NoctiInput Diagramas de control: bloques, cadenas y realimentación
\NoctiksBezier Dibujo geométrico: lienzos, coordenadas y primitivas
\NoctiksCircle Dibujo geométrico: lienzos, coordenadas y primitivas
\NoctiksClip Grupos gráficos, transformaciones y recorte
\NoctiksConnect Conectores y etiquetas de señal
\NoctiksEllipse Dibujo geométrico: lienzos, coordenadas y primitivas
\NoctiksLabel Dibujo geométrico: lienzos, coordenadas y primitivas
\NoctiksLine Dibujo geométrico: lienzos, coordenadas y primitivas
\NoctiksNode Nodos medidos, formas y posición relativa
\NoctiksNodeRelative Nodos medidos, formas y posición relativa
\NoctiksPolygon Dibujo geométrico: lienzos, coordenadas y primitivas
\NoctiksPolyline Dibujo geométrico: lienzos, coordenadas y primitivas
\NoctiksRect Dibujo geométrico: lienzos, coordenadas y primitivas
\NoctiksSignal Conectores y etiquetas de señal
\NoctiksTransform Grupos gráficos, transformaciones y recorte
\NoctiLegend Títulos y leyendas
\NoctiOutput Diagramas de control: bloques, cadenas y realimentación
\NoctiParametric Funciones y curvas
\NoctiPlot Series de datos y barras de error
\NoctiPoint Anotaciones y referencias
\NoctiPolar Funciones y curvas
\NoctiProjection Vectores, segmentos y operaciones vectoriales
\NoctiRegion Regiones y rellenos
\NoctiRiemann Regiones y rellenos
\NoctiScalarFunction Campos escalares bidimensionales
\NoctiScalarTable Campos escalares bidimensionales
\NoctiSegment Vectores, segmentos y operaciones vectoriales
\NoctiSet Conjuntos y diagramas de Venn semánticos
\NoctiShade Conjuntos y diagramas de Venn semánticos
\NoctiStreamline Trayectorias y líneas de flujo
\NoctiStyle Estilos comunes, colores y paletas
\NoctiSum Diagramas de control: bloques, cadenas y realimentación
\NoctiTable Series de datos y barras de error
\NoctiTitle Títulos y leyendas
\NoctiTrajectory Trayectorias y líneas de flujo
\NoctiUniverse Conjuntos y diagramas de Venn semánticos
\NoctiVector Vectores, segmentos y operaciones vectoriales
\NoctiVectorField Campos vectoriales
\NoctiVectorSum Vectores, segmentos y operaciones vectoriales
\NoctiXLabel Títulos y leyendas
\NoctiXLine Anotaciones y referencias
\NoctiXTick Cuadrícula y marcas
\NoctiYLabel Títulos y leyendas
\NoctiYLine Anotaciones y referencias
\NoctiYTick Cuadrícula y marcas

Diagnósticos, errores y límites operativos

Los diagnósticos no fatales describen decisiones de dibujo; no equivalen a aceptación matemática o visual del resultado. Los errores invalidan la generación. Usa la figura indicada en el diagnóstico para localizar el problema.

Situación Resultado Acción práctica
Muestras indefinidas en curva Se separan segmentos; diagnóstico Revisar dominio, singularidades y muestreo
Intervalos adaptativos sin resolver Se interrumpe la unión; diagnóstico Aumentar presupuesto o ajustar tolerancia y dominio
Discontinuidad sospechosa Se separa la curva; diagnóstico Revisar la gráfica y el comportamiento analítico
Origen fuera del rango o escala logarítmica El cruce usa un borde válido; diagnóstico Fijar ejes y límites adecuados a la intención
Punto, referencia o región fuera de rango Se omite el elemento; diagnóstico Ajustar coordenada o rango explícitamente
Segmento/vector de longitud cero Se omite; diagnóstico Corregir puntos o componentes
Etiquetas de punto sin posición libre Se conserva el texto; diagnóstico de colisión Cambiar lado/desplazamientos o ampliar gráfica
Curva de nivel sin espacio para texto Se omite esa etiqueta; diagnóstico Reducir etiquetas o ampliar gráfica
Celdas escalares sin esquinas válidas suficientes Se enmascaran; diagnóstico Revisar datos y huecos
Campo vectorial indefinido o vector nulo Se omiten las flechas afectadas; diagnóstico Revisar ecuaciones y dominio
Trayectoria detenida anticipadamente Se conserva el tramo calculado; diagnóstico con motivo Revisar paso, semilla y campo
Banda sin solapamiento o con intervalos indefinidos Se omiten zonas sin datos; diagnóstico Revisar dominio compartido y huecos
Opción desconocida, duplicada o mal formada Error Usar sólo claves documentadas una vez
Archivo ausente, ruta insegura o CSV inválido Error Corregir recurso, ruta o formato
Valor no finito, fuera de rango o incompatible con log Error en datos/configuración explícitos Corregir valor y escala
Constante desconocida, ciclo o duplicado Error Corregir definición o alcance
Escena incompleta o estructura mal cerrada Error Revisar compilación y cierres de entornos
Límite de complejidad superado Error Reducir la complejidad o dividir la figura

La compilación aplica límites concretos: lienzo de hasta 2000 × 2000 bp; 32 niveles de grupos gráficos; expresiones de 2048 bytes y 256 nodos; 64 niveles de dependencias; 128 columnas y 8192 bytes por campo de tabla. Las familias científicas y semánticas incluyen otros máximos que se indican junto a sus parámetros. Si una figura supera los límites, reduce su complejidad o divide la composición.

Las fórmulas admiten las expresiones matemáticas descritas en este manual; no ejecutan código ni comandos del sistema. No necesita shell-escape. Su alcance es 2D: no incorpora ajuste estadístico, cálculo simbólico, simulación de control, 3D, animación ni disposición automática general de grafos. Utiliza una versión de Paper Studio que incluya las funciones utilizadas.

Manual de Noctiks - Paper Studio