Saltar al contenido
Índice de Kit UI
Kit UI Componentes

Gráfico incorporado.

Patrón canónico de gráfico incorporado para cochid-graphs, mapas, periodismo2 y firmas y documentos.

Verlo por niveles

Primero el componente, después la variación de marca y finalmente su uso dentro de una página.

Nivel 1Componente canónico
Desocupación · Región de Valparaíso

Fuente: INE · Encuesta Nacional de Empleo · trimestres móviles dic-feb a may-jul 2026 · porcentaje

Ver datos de la serie
Trimestre móvilTasa
Dic-feb8,6%
Ene-mar8,3%
Feb-abr8,0%
Mar-may7,9%
Abr-jun8,1%
May-jul8,4%
Nivel 2Compañía de Innovación de Santiago · variación
Desocupación · Región de Valparaíso

Fuente: INE · Encuesta Nacional de Empleo · trimestres móviles dic-feb a may-jul 2026 · porcentaje

Ver datos de la serie
Trimestre móvilTasa
Dic-feb8,6%
Ene-mar8,3%
Feb-abr8,0%
Mar-may7,9%
Abr-jun8,1%
May-jul8,4%
Ver promedio anual
AñoTasa promedio
20248,7%
20258,2%
Nivel 3Dentro de una página
Sitio · sección
Desocupación · Región de Valparaíso

Fuente: INE · Encuesta Nacional de Empleo · trimestres móviles dic-feb a may-jul 2026 · porcentaje

Ver datos de la serie
Trimestre móvilTasa
Dic-feb8,6%
Ene-mar8,3%
Feb-abr8,0%
Mar-may7,9%
Abr-jun8,1%
May-jul8,4%
Ver y copiar el código de este render
HTML del nivel canónico
<figure class="ui-sample ui-chart" data-embed="chart" data-integration="cochid-graphs" data-render-mode="contract-demo" data-renderer="cochid-graphs" data-chart="line"><figcaption>Desocupación · Región de Valparaíso</figcaption><svg viewBox="0 0 320 120" aria-hidden="true"><path d="M30 100H300M30 12V100"></path><polyline points="50,29.6 96,42.8 142,56 188,60.4 234,51.6 280,38.4"></polyline><circle cx="50" cy="29.6" r="3.5"></circle><circle cx="96" cy="42.8" r="3.5"></circle><circle cx="142" cy="56" r="3.5"></circle><circle cx="188" cy="60.4" r="3.5"></circle><circle cx="234" cy="51.6" r="3.5"></circle><circle cx="280" cy="38.4" r="3.5"></circle><text x="26" y="15" text-anchor="end" class="ui-chart__rotulo">9%</text><text x="26" y="103" text-anchor="end" class="ui-chart__rotulo">7%</text><text x="50" y="114" text-anchor="middle" class="ui-chart__rotulo">Dic-feb</text><text x="96" y="114" text-anchor="middle" class="ui-chart__rotulo">Ene-mar</text><text x="142" y="114" text-anchor="middle" class="ui-chart__rotulo">Feb-abr</text><text x="188" y="114" text-anchor="middle" class="ui-chart__rotulo">Mar-may</text><text x="234" y="114" text-anchor="middle" class="ui-chart__rotulo">Abr-jun</text><text x="280" y="114" text-anchor="middle" class="ui-chart__rotulo">May-jul</text><text x="280" y="28" text-anchor="middle" class="ui-chart__valor">8,4%</text></svg><p>Fuente: INE · Encuesta Nacional de Empleo · trimestres móviles dic-feb a may-jul 2026 · porcentaje</p><details><summary>Ver datos de la serie</summary><table><thead><tr><th>Trimestre móvil</th><th>Tasa</th></tr></thead><tbody><tr><th>Dic-feb</th><td>8,6%</td></tr><tr><th>Ene-mar</th><td>8,3%</td></tr><tr><th>Feb-abr</th><td>8,0%</td></tr><tr><th>Mar-may</th><td>7,9%</td></tr><tr><th>Abr-jun</th><td>8,1%</td></tr><tr><th>May-jul</th><td>8,4%</td></tr></tbody></table></details></figure>

Variaciones por marca y sitio

Cada cambio visible declara su autoridad; lo que permanece canónico no se vuelve a inventar en el producto.

cochid.cl

COCHID

Autoridad: core-style/DECISIONES.md M15 y LOGOS-CANONICOS.md
Desocupación · Región de Valparaíso

Fuente: INE · Encuesta Nacional de Empleo · trimestres móviles dic-feb a may-jul 2026 · porcentaje

Ver datos de la serie
Trimestre móvilTasa
Dic-feb8,6%
Ene-mar8,3%
Feb-abr8,0%
Mar-may7,9%
Abr-jun8,1%
May-jul8,4%

Cambia en esta marca

  • Cuadrado azul y namebrand de tres líneas
  • Azul COCHID en selección, capas y series

Permanece canónico

  • Estructura y semántica comunes
  • Fuentes, unidades y alternativa tabular
innovacionsantiago.cl

Compañía de Innovación de Santiago

Autoridad: CONSTITUTION.md + LOGOS-CANONICOS.md
Desocupación · Región de Valparaíso

Fuente: INE · Encuesta Nacional de Empleo · trimestres móviles dic-feb a may-jul 2026 · porcentaje

Ver datos de la serie
Trimestre móvilTasa
Dic-feb8,6%
Ene-mar8,3%
Feb-abr8,0%
Mar-may7,9%
Abr-jun8,1%
May-jul8,4%
Ver promedio anual
AñoTasa promedio
20248,7%
20258,2%

Cambia en esta marca

  • Navegación y contenido propios del servicio
  • Acento reservado para acciones y datos

Permanece canónico

  • Mark CIS y namebrand de tres líneas
  • IBM Plex Sans, foco, espaciado y anatomía

Comparación histórica recuperable

Compara la propuesta con cortes reales del repositorio. La ausencia de una muestra se declara y nunca se reconstruye de memoria.

Estado actual
Gráfico incorporado no tiene una implementación vigente demostrada; sus ejemplos son material candidato.
Cambio propuesto
Publicar en r19 el contrato de Gráfico incorporado para Patrón canónico de gráfico incorporado para cochid-graphs, mapas, periodismo2 y firmas y documentos.
Qué ocurre si respondes No
Gráfico incorporado queda fuera de r19 y sus ejemplos siguen sólo como evidencia pendiente de reformulación.

Preparando comparación histórica…

Antes / r19

La comparación convierte una regla abstracta en una diferencia visible y verificable.

r19 · correctoContrato canónico renderizado
Desocupación · Región de Valparaíso

Fuente: INE · Encuesta Nacional de Empleo · trimestres móviles dic-feb a may-jul 2026 · porcentaje

Ver datos de la serie
Trimestre móvilTasa
Dic-feb8,6%
Ene-mar8,3%
Feb-abr8,0%
Mar-may7,9%
Abr-jun8,1%
May-jul8,4%
  • Mantén proporción, título accesible, fuente y vista completa.
  • Proporciona consentimiento y fallback cuando depende de terceros.
Antes · problema observadoAnti-ejemplo no interactivo
Contenido incorporadoRectángulo vacío sin fuente, fallback ni vista completa
  • No cargues terceros sin política CSP y privacidad.
  • No dejes un rectángulo vacío cuando falla el origen.

Responsive

La misma anatomía debe conservar lectura, foco y acciones sin cortar contenido ni crear scroll horizontal en la página.

320 pxMóvil y zoom
Desocupación · Región de Valparaíso

Fuente: INE · Encuesta Nacional de Empleo · trimestres móviles dic-feb a may-jul 2026 · porcentaje

Ver datos de la serie
Trimestre móvilTasa
Dic-feb8,6%
Ene-mar8,3%
Feb-abr8,0%
Mar-may7,9%
Abr-jun8,1%
May-jul8,4%
1280 pxEscritorio
Desocupación · Región de Valparaíso

Fuente: INE · Encuesta Nacional de Empleo · trimestres móviles dic-feb a may-jul 2026 · porcentaje

Ver datos de la serie
Trimestre móvilTasa
Dic-feb8,6%
Ene-mar8,3%
Feb-abr8,0%
Mar-may7,9%
Abr-jun8,1%
May-jul8,4%
Ver promedio anual
AñoTasa promedio
20248,7%
20258,2%

Cobertura

DimensiónContrato
Propietario canónicoSistema de diseño CIS y servicio productor · core/core-style
Consumidorescochid-graphs, Mapas, Periodismo2 y Firmas y Documentos
DependenciasCSP, sandbox, fallback enlazable
Estadocandidato

Evidencia de adopción

Patrón propuesto. 0 implementaciones observadas en 0 repositorios.

La observación demuestra uso existente; la aceptación canónica sigue dependiendo de esta ficha y de su propietario.

DatoResultado
ClasificaciónPatrón propuesto
Implementaciones0 implementaciones observadas
RepositoriosNingún repositorio observado
Snapshotkit/componentes/componentes-observados.json

Consumidores observados

El inventario conserva repositorio, archivo fuente y criterio de asociación. Observar una implementación no la convierte automáticamente en canónica.

Estados

Estado requerido
cargando
disponible
bloqueado
error
sin JavaScript

Accesibilidad

  • Conserva nombre accesible, orden de lectura y foco visible.
  • Funciona a 320 px, con zoom de 200% y texto largo.
  • El color nunca es la única señal de estado o acción.
  • El contenido esencial permanece disponible sin JavaScript.

Código HTML

Copia el bloque completo; después cambia contenido y destinos, no su anatomía.

Código de referencia
<figure class="ui-sample ui-chart" data-embed="chart" data-integration="cochid-graphs" data-render-mode="contract-demo" data-renderer="cochid-graphs" data-chart="line"><figcaption>Desocupación · Región de Valparaíso</figcaption><svg viewBox="0 0 320 120" aria-hidden="true"><path d="M30 100H300M30 12V100"></path><polyline points="50,29.6 96,42.8 142,56 188,60.4 234,51.6 280,38.4"></polyline><circle cx="50" cy="29.6" r="3.5"></circle><circle cx="96" cy="42.8" r="3.5"></circle><circle cx="142" cy="56" r="3.5"></circle><circle cx="188" cy="60.4" r="3.5"></circle><circle cx="234" cy="51.6" r="3.5"></circle><circle cx="280" cy="38.4" r="3.5"></circle><text x="26" y="15" text-anchor="end" class="ui-chart__rotulo">9%</text><text x="26" y="103" text-anchor="end" class="ui-chart__rotulo">7%</text><text x="50" y="114" text-anchor="middle" class="ui-chart__rotulo">Dic-feb</text><text x="96" y="114" text-anchor="middle" class="ui-chart__rotulo">Ene-mar</text><text x="142" y="114" text-anchor="middle" class="ui-chart__rotulo">Feb-abr</text><text x="188" y="114" text-anchor="middle" class="ui-chart__rotulo">Mar-may</text><text x="234" y="114" text-anchor="middle" class="ui-chart__rotulo">Abr-jun</text><text x="280" y="114" text-anchor="middle" class="ui-chart__rotulo">May-jul</text><text x="280" y="28" text-anchor="middle" class="ui-chart__valor">8,4%</text></svg><p>Fuente: INE · Encuesta Nacional de Empleo · trimestres móviles dic-feb a may-jul 2026 · porcentaje</p><details><summary>Ver datos de la serie</summary><table><thead><tr><th>Trimestre móvil</th><th>Tasa</th></tr></thead><tbody><tr><th>Dic-feb</th><td>8,6%</td></tr><tr><th>Ene-mar</th><td>8,3%</td></tr><tr><th>Feb-abr</th><td>8,0%</td></tr><tr><th>Mar-may</th><td>7,9%</td></tr><tr><th>Abr-jun</th><td>8,1%</td></tr><tr><th>May-jul</th><td>8,4%</td></tr></tbody></table></details></figure>

Código TAILWIND

Copia el bloque completo; después cambia contenido y destinos, no su anatomía.

Código de referencia
<figure class="ui-sample ui-chart border border-slate-300 bg-white p-4 text-slate-950 grid gap-3" data-embed="chart" data-integration="cochid-graphs" data-render-mode="contract-demo" data-renderer="cochid-graphs" data-chart="line"><figcaption class="text-sm text-slate-600">Desocupación · Región de Valparaíso</figcaption><svg class="h-auto w-full" viewBox="0 0 320 120" aria-hidden="true"><path d="M30 100H300M30 12V100"></path><polyline points="50,29.6 96,42.8 142,56 188,60.4 234,51.6 280,38.4"></polyline><circle cx="50" cy="29.6" r="3.5"></circle><circle cx="96" cy="42.8" r="3.5"></circle><circle cx="142" cy="56" r="3.5"></circle><circle cx="188" cy="60.4" r="3.5"></circle><circle cx="234" cy="51.6" r="3.5"></circle><circle cx="280" cy="38.4" r="3.5"></circle><text x="26" y="15" text-anchor="end" class="ui-chart__rotulo">9%</text><text x="26" y="103" text-anchor="end" class="ui-chart__rotulo">7%</text><text x="50" y="114" text-anchor="middle" class="ui-chart__rotulo">Dic-feb</text><text x="96" y="114" text-anchor="middle" class="ui-chart__rotulo">Ene-mar</text><text x="142" y="114" text-anchor="middle" class="ui-chart__rotulo">Feb-abr</text><text x="188" y="114" text-anchor="middle" class="ui-chart__rotulo">Mar-may</text><text x="234" y="114" text-anchor="middle" class="ui-chart__rotulo">Abr-jun</text><text x="280" y="114" text-anchor="middle" class="ui-chart__rotulo">May-jul</text><text x="280" y="28" text-anchor="middle" class="ui-chart__valor">8,4%</text></svg><p>Fuente: INE · Encuesta Nacional de Empleo · trimestres móviles dic-feb a may-jul 2026 · porcentaje</p><details><summary>Ver datos de la serie</summary><table class="w-full border-collapse text-left"><thead><tr><th class="border-b border-slate-300 p-2 align-top">Trimestre móvil</th><th class="border-b border-slate-300 p-2 align-top">Tasa</th></tr></thead><tbody><tr><th class="border-b border-slate-300 p-2 align-top">Dic-feb</th><td class="border-b border-slate-300 p-2 align-top">8,6%</td></tr><tr><th class="border-b border-slate-300 p-2 align-top">Ene-mar</th><td class="border-b border-slate-300 p-2 align-top">8,3%</td></tr><tr><th class="border-b border-slate-300 p-2 align-top">Feb-abr</th><td class="border-b border-slate-300 p-2 align-top">8,0%</td></tr><tr><th class="border-b border-slate-300 p-2 align-top">Mar-may</th><td class="border-b border-slate-300 p-2 align-top">7,9%</td></tr><tr><th class="border-b border-slate-300 p-2 align-top">Abr-jun</th><td class="border-b border-slate-300 p-2 align-top">8,1%</td></tr><tr><th class="border-b border-slate-300 p-2 align-top">May-jul</th><td class="border-b border-slate-300 p-2 align-top">8,4%</td></tr></tbody></table></details></figure>

Código REACT

Copia el bloque completo; después cambia contenido y destinos, no su anatomía.

Código de referencia
import type { ReactNode } from "react";

export interface ChartEmbedRow {
  /** Primera celda de la fila (período, región, categoría). */
  label: string;
  /** Una celda por cada columna después de la primera, con el valor ya formateado. */
  values: string[];
}

export interface ChartEmbedTable {
  /** Texto del control que despliega la tabla; por defecto «Ver datos». Con varias tablas, una etiqueta distinta por tabla. */
  label?: string;
  /** Encabezados de columna; el primero corresponde a la primera celda de cada fila. */
  columns?: string[];
  /** Filas de la tabla; una tabla sin filas no se muestra. */
  rows: ChartEmbedRow[];
  /** La primera celda de cada fila va como encabezado de fila (`<th>`); por defecto sí. */
  rowHeaders?: boolean;
  /** Muestra la tabla desplegada (atributo nativo `open` de `<details>`). */
  open?: boolean;
}

export interface ChartEmbedProps {
  /** Título del gráfico (`<figcaption>`); vacío lo oculta. */
  title?: string;
  /** SVG del gráfico, con `aria-hidden="true"`; sin él se dibuja el esquema de la muestra. */
  children?: ReactNode;
  /** Línea de fuente, período y unidad bajo el gráfico; vacía la oculta. */
  source?: string;
  /** Tablas de datos, cada una en su propio desplegable; la primera trae los mismos valores que dibuja el gráfico. */
  tables?: ChartEmbedTable[];
  /** Tipo de gráfico (`data-chart`): `line`, `bar`, `donut`, `scatter`, etc. */
  chartType?: string;
  /** Renderer que produjo el SVG (`data-renderer`); vacío omite el atributo. */
  renderer?: string;
  /** Servicio que entrega el gráfico incorporado (`data-integration`); vacío omite el atributo. */
  integration?: string;
  /** Modo de render declarado por la integración (`data-render-mode`); vacío omite el atributo. */
  renderMode?: string;
  className?: string;
}

// Rótulos del esquema con la clase ui-chart__rotulo (tinta tenue en claro y en oscuro), no
// con style: un sitio con CSP estricto bloquea el style en línea.

// Serie de seis trimestres móviles, escala de 7 % (y = 100) a 9 % (y = 12); los
// mismos seis valores van en la primera tabla.
const ESQUEMA = (
  <svg viewBox="0 0 320 120" aria-hidden="true">
    <path d="M30 100H300M30 12V100" />
    <polyline points="50,29.6 96,42.8 142,56 188,60.4 234,51.6 280,38.4" />
    <circle cx="50" cy="29.6" r="3.5" />
    <circle cx="96" cy="42.8" r="3.5" />
    <circle cx="142" cy="56" r="3.5" />
    <circle cx="188" cy="60.4" r="3.5" />
    <circle cx="234" cy="51.6" r="3.5" />
    <circle cx="280" cy="38.4" r="3.5" />
    <text x="26" y="15" textAnchor="end" className="ui-chart__rotulo">9%</text>
    <text x="26" y="103" textAnchor="end" className="ui-chart__rotulo">7%</text>
    <text x="50" y="114" textAnchor="middle" className="ui-chart__rotulo">Dic-feb</text>
    <text x="96" y="114" textAnchor="middle" className="ui-chart__rotulo">Ene-mar</text>
    <text x="142" y="114" textAnchor="middle" className="ui-chart__rotulo">Feb-abr</text>
    <text x="188" y="114" textAnchor="middle" className="ui-chart__rotulo">Mar-may</text>
    <text x="234" y="114" textAnchor="middle" className="ui-chart__rotulo">Abr-jun</text>
    <text x="280" y="114" textAnchor="middle" className="ui-chart__rotulo">May-jul</text>
    <text x="280" y="28" textAnchor="middle" className="ui-chart__valor">8,4%</text>
  </svg>
);

const TABLAS: ChartEmbedTable[] = [
  {
    label: "Ver datos de la serie",
    columns: ["Trimestre móvil", "Tasa"],
    rows: [
      { label: "Dic-feb", values: ["8,6%"] },
      { label: "Ene-mar", values: ["8,3%"] },
      { label: "Feb-abr", values: ["8,0%"] },
      { label: "Mar-may", values: ["7,9%"] },
      { label: "Abr-jun", values: ["8,1%"] },
      { label: "May-jul", values: ["8,4%"] },
    ],
  },
];

/**
 * Gráfico incorporado: gráfico que entrega otro servicio (cochid-graphs u otro renderer) dentro de una página, con título, fuente y tablas de datos desplegables.
 *
 * El SVG llega como `children` y va oculto a lectores de pantalla: la primera tabla desplegable es la versión accesible y trae los mismos valores que dibuja el gráfico. Si hay más de una tabla, cada una lleva su propia etiqueta (`label`); `open` la muestra desplegada.
 *
 * @example <ChartEmbed title="Desocupación · Región de Valparaíso" source="Fuente: INE · ENE · trimestres móviles mar-may a may-jul 2026 · porcentaje" tables={[{ label: "Ver datos de la serie", columns: ["Trimestre móvil", "Tasa"], rows: [{ label: "Mar-may", values: ["7,9%"] }, { label: "Abr-jun", values: ["8,1%"] }, { label: "May-jul", values: ["8,4%"] }] }]}>{svg}</ChartEmbed>
 */
export function ChartEmbed({
  title = "Desocupación · Región de Valparaíso",
  children = ESQUEMA,
  source = "Fuente: INE · Encuesta Nacional de Empleo · trimestres móviles dic-feb a may-jul 2026 · porcentaje",
  tables = TABLAS,
  chartType = "line",
  renderer = "cochid-graphs",
  integration = "cochid-graphs",
  renderMode = "contract-demo",
  className,
}: ChartEmbedProps) {
  return (
    <figure
      className={["ui-chart", className].filter(Boolean).join(" ")}
      data-embed="chart"
      data-integration={integration || undefined}
      data-render-mode={renderMode || undefined}
      data-renderer={renderer || undefined}
      data-chart={chartType || undefined}
    >
      {title ? <figcaption>{title}</figcaption> : null}
      {children}
      {source ? <p>{source}</p> : null}
      {tables.map((tabla, t) => {
        const resumen = tabla.label ?? "Ver datos";
        return tabla.rows.length ? (
          <details key={t} open={tabla.open}>
            {resumen ? <summary>{resumen}</summary> : null}
            <table>
              {tabla.columns?.length ? (
                <thead>
                  <tr>{tabla.columns.map((columna, i) => <th key={i}>{columna}</th>)}</tr>
                </thead>
              ) : null}
              <tbody>
                {tabla.rows.map((fila, i) => (
                  <tr key={i}>
                    {tabla.rowHeaders === false ? <td>{fila.label}</td> : <th>{fila.label}</th>}
                    {fila.values.map((valor, j) => <td key={j}>{valor}</td>)}
                  </tr>
                ))}
              </tbody>
            </table>
          </details>
        ) : null;
      })}
    </figure>
  );
}