Ir al contenido
Pivotick
Main Navigation Inicio
Primeros pasos
Configuración
Documentación generada de la API
GaleríaProyectos¡Pruébalo!

Español

English
简体中文
Français
Deutsch
Português
Nederlands
日本語
العربية

Español

English
简体中文
Français
Deutsch
Português
Nederlands
日本語
العربية

Apariencia

Sidebar Navigation

Primeros pasos

Proyectos que usan Pivotick

Configuración

Funciones de retorno

Capas de aristas

Simplificar

Distribución

Renderizado

Simulación

Personalizar la interfaz

Barra lateral

Información emergente

Menú contextual

Filtros

Leyenda

Tabla de datos

Estilos de la interfaz

Traducir la interfaz

Complementos

API de Pivotick

Pivotes y enriquecimiento

Guardar resultados de pivotes

Deshacer e historial

Seguridad

Documentación de la API

Galería

Fundamentos

Estilos de nodos

Estilos de aristas

Distribuciones

Eventos y funciones de retorno

Personalización de la interfaz

Edición y creación

Notas y anotaciones

Filtros, búsqueda y jerarquía

Control programático

Temas y rendimiento

Pivotes y enriquecimiento

Ejemplos destacados

Minimapa ​

El modo full ya incluye una descripción general de todo el gráfico en una esquina del lienzo, y uno línea - plugins: [minimap()], como se muestra a continuación - coloca su propia configuración allí, en cualquier modo. Haga clic en cualquier lugar para traer el ver allí; arrastre el rectángulo para realizar una panorámica. El siguiente gráfico es más ancho que su ventana gráfica, por lo que hay algún lugar adonde ir. La pequeña flecha en la esquina interior del minimapa lo despliega para solo ese botón cuando el lienzo importa más que la descripción general.

Aun así, es un plugin, no Chrome integrado; el modo full simplemente lo instala para usted, y se hace a un lado para recibir la copia que se pasa aquí. Se instala a través del PluginContext se entrega y no utiliza nada que un complemento propio no pueda utilizar: se lee la extensión del gráfico con renderer.getContentBounds(), calcula la región visible por invirtiendo las esquinas del lienzo a través de renderer.screenToGraphCoordinates(), y mueve el ver con renderer.setViewport(). Consulte Complementos para ver toda la superficie.

También sigue siendo barato en un gráfico que realmente lo necesita. La imagen vive en un caché. mapa de bits fuera de pantalla que solo se vuelve a rasterizar cuando cambia el gráfico (o cada 10 tic de simulación mientras se asienta un diseño); panorámica y zoom redibujar una imagen y una rectángulo, cualquiera que sea el número de nodos. Pasados los 1500 nodos, deja de dibujar cada nodo y En su lugar, pinta la densidad, que se lee mejor que decenas de miles de puntos superpuestos y no resuelve ningún estilo por nodo.

Haga zoom con los controles de la ventana gráfica y luego arrastre el rectángulo en el minimapa: el La imagen del contenido nunca se vuelve a dibujar, solo se mueve el rectángulo.

js
// import { minimap } from 'pivotick'

const options = {
    UI: {
        // `full` mode brings a minimap of its own; `light` and `viewer` need asking
        // (`UI.minimap: true`, or the plugin below). `static` never has one.
        mode: 'full',
        // The other thing full mode brings. Off here: this card is about the minimap.
        table: false
    },
    // A plugin installs itself through the PluginContext it is handed — the core never
    // needs to know it exists. `graph.use(minimap())` works just as well, at any time.
    // Passed here it replaces the one full mode would have mounted, configuration and all.
    plugins: [
        minimap({
            position: 'bottom-right', // the corner the built-in chrome leaves free
            width: 220
            // height: omitted → follows the canvas's aspect ratio
        })
    ],
    render: {
        nodeTypeAccessor: (node) => node.getData()?.kind,
        nodeStyleMap: {
            hub: { color: '#0072B2', size: 13 },
            leaf: { color: '#E69F00', size: 7 }
        }
    },
    simulation: {
        d3LinkDistance: 60
    }
}
js
// A graph deliberately bigger than the viewport, so the minimap has something to
// navigate: six clusters of satellites around a spine.
const nodes = []
const edges = []
const hubs = ['alpha', 'beta', 'gamma', 'delta', 'epsilon', 'zeta']

hubs.forEach((hub, hubIndex) => {
    const angle = (hubIndex / hubs.length) * Math.PI * 2
    nodes.push({
        id: hub,
        data: { name: hub, kind: 'hub' },
        x: Math.cos(angle) * 420,
        y: Math.sin(angle) * 420
    })
    if (hubIndex > 0) edges.push({ from: hubs[hubIndex - 1], to: hub })

    for (let leafIndex = 0; leafIndex < 9; leafIndex++) {
        const id = `${hub}-${leafIndex}`
        const spread = (leafIndex / 9) * Math.PI * 2
        nodes.push({
            id,
            data: { name: id, kind: 'leaf' },
            x: Math.cos(angle) * 420 + Math.cos(spread) * 130,
            y: Math.sin(angle) * 420 + Math.sin(spread) * 130
        })
        edges.push({ from: hub, to: id })
    }
})

const data = { nodes, edges }
Pager
Página siguientePrimeros pasos