Extensión:Graph

This page is a translated version of the page Extension:Graph and the translation is 73% complete.
Manual de extensiones de MediaWiki
Graph
Estado de lanzamiento: sin mantenimiento
Implementación Etiqueta , ContentHandler
Descripción Gráficos basados en datos
Autor(es)
MediaWiki >= 1.43
Licencia MIT Licencia
Descarga
  • $wgGraphDefaultVegaVer
  • $wgGraphAllowHttp
  • $wgGraphAllowedDomains
Descargas trimestrales 29 (Ranked 103rd)
Wikis públicos que lo utilizan 884 (Ranked 281st)
Traduce la extensión Graph si está disponible en translatewiki.net
Asuntos Tareas abiertas · Reportar un bug

La extensión Graph habilita la etiqueta ‎<graph> para describir visualizaciones de datos tales como diagramas de barras, gráficos circulares, líneas de tiempo e histogramas (véase la demo) en un formato JSON que genera un gráfico basado en Vega.

Información general

La extensión Graph permite integrar gráficos potentes basados en Vega en las páginas wiki. Los gráficos pueden ser interactivos.

La manera más fácil de añadir un gráfico es mediante una plantilla ya preparada como {{Graph:Chart}}. Estas plantillas ocultan todas las complejidades. Los usuarios avanzados pueden usar la zona de pruebas de Graph para desarrollar gráficos. La zona de pruebas de Graph admite la sintaxis de las plantillas wiki además de JSON. La extensión se integra con VisualEditor, proporcionando una sencilla herramienta/asistente que genera gráficos básicos introduciendo los valores directamente en el editor.

Enlaces útiles

Instalación

  • Requiere la extensión JsonConfig
  • Descarga y extrae los archivos en un directorio denominado «Graph» dentro de la carpeta extensions/.
    Developers and code contributors should install the extension from Git instead, using:cd extensions/
    git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/Graph
  • Añade el siguiente código en la parte final de tu archivo LocalSettings.php :
    wfLoadExtension( 'Graph' );
    
  •   Hecho – Navega a Special:Version en el wiki para verificar que la extensión se haya instalado correctamente.


Instalación Vagrant:

  • Si se utiliza Vagrant , instala con vagrant roles enable graph --provision

Configuración adicional

Si estás tratando de replicar un entorno de producción como es.wiki, deberás completar los siguientes pasos:

Depurar gráficos y portar gráficos de Vega 2 a Vega 5

Se proporciona una zona de pruebas en Special:GraphSandbox que funciona de forma similar al editor de gráficos Vega. La herramienta de MediaWiki incluye código de compatibilidad que hace corresponder los esquemas anteriores de Vega a la versión actualmente habilitada. Al insertar un esquema antiguo en el área de texto principal, se incluirá un esquema modificado y modernizado bajo el gráfico donde sea posible.

Al igual que vega.github.io/editor, el objeto de Vega se puede inspeccionar mediante la variable global VEGA_DEBUG de JavaScript. Véase la guía de depuración de Vega sobre cómo usarlo.

Migración de esquemas de versiones anteriores de Vega

Anteriormente Graph era compatible con Vega 2. Puedes copiar el JSON de los gráficos en http://vega.github.io/vega-editor/?mode=vega para ver cómo se mostraban a modo de comparación con Vega 5.

Se puede usar Special:GraphSandbox (para el código más reciente, véase la versión beta del clúster de la zona de pruebas) para hacer corresponder los esquemas antiguos con los nuevos. Copia el esquema antiguo en el área de texto principal y el esquema actualizado aparecerá en el área de texto debajo del gráfico. Copia el nuevo esquema en tu código.

Ejemplos de diagramas

Véase la página de demostración para un amplio surtido de ejemplos y trucos de uso.


Respaldo definido por el usuario

Al utilizar la visualización desde el lado del cliente, es posible utilizar Wikimedia Commons para proporcionar una imagen estática de respaldo a los usuarios noscript. Esta es una solución temporal hasta que se implante un nuevo servicio para proporcionar la visualización del lado del servidor.

El usuario debe subir en primer lugar el gráfico estático a Wikimedia Commons.

Las imágenes de respaldo tienen dos variables: fallback y fallbackWidth.

fallback se refiere a un nombre de archivo de Wikimedia Commons.

fallbackWidth es el ancho de las imágenes de respaldo en píxeles.

Estas variables se transfieren al gráfico de la siguiente manera:

<graph fallback="Graph test seddon.png" fallbackWidth=450>

Donde se usen módulos de Lua tales como Module:Graph, se pueden proporcionar estas variables mediante la función de la etiqueta. Si se adaptara Template:Graph:Chart , tendría este aspecto:

{{safesubst:#tag:graph|{{safesubst:#invoke:Graph|chartWrapper}} | fallback = {{{fallback|''}}} |  fallbackWidth= {{{fallbackWidth|''}}} }}

Se utilizaría en una plantilla de la siguiente manera:

{{Graph:Chart|width=400|height=100|xAxisTitle=X|yAxisTitle=Y
 |type=rect|x=1,2,3,4,5,6,7,8|y=10,12,6,14,2,10,7,9|fallback=Graph test seddon.png|fallbackWidth=450}}

Si no se proporcionara un fallbackWidth pero se definiera una imagen, la extensión derivaría su ancho del ancho del gráfico provisto. Esto se debe a que a menudo hay una diferencia entre el ancho de la imagen generada y el ancho real de la imagen.

{{Graph:Chart|width=400|height=100|xAxisTitle=X|yAxisTitle=Y
 |type=rect|x=1,2,3,4,5,6,7,8|y=10,12,6,14,2,10,7,9|fallback=Graph test seddon.png}}


Datos externos

El protocolo HTTP(S) no se puede usar para obtener datos para el gráfico. En su lugar, usa un protocolo wiki personalizado tal como wikiraw:, wikiapi: u otro.

La extensión Graph utiliza el parámetro GraphAllowedDomains para controlar la resolución de estos protocolos: Ten en cuenta que, dado que las consultas dependen de la estructura de los elementos wikibase, pueden dejar de funcionar si se editan y se cambian los datos subyacentes, ya que pueden producir datos incompletos, vacíos o no válidos que no se pueden usar para crear un gráfico. En estos casos, se generará un gráfico vacío (véase phab:T168601).

$wgGraphAllowedDomains = [
    # las claves http y https enumeran todos los dominios permitidos para el acceso de datos externos.
    # Cualquier dominio en esta lista también permite automáticamente todos los subdominios.
    # Los protocolos personalizados como 'wikiraw' lo usan para determinar qué protocolo se usa.
    # De esta manera, wikiraw://en.wikipedia.org/Page será una petición de la API a https://en.wikipedia.org/w/api.php?action=query&titles=Page&...
    'https' => [ 'wikipedia.org', 'wikimedia.org', ... ],
    'http' => [ 'wmflabs.org', ... ],
    
    # lista de dominios permitidos para el acceso al protocolo wikirawupload: (subida en crudo wiki)
    # Correspondencia exacta, sin subdominios.
    'wikirawupload' => [ 'upload.wikimedia.org' ],
    
    # igual que wikirawupload pero para consultas Sparql de Wikidata
    'wikidatasparql' => [ 'query.wikidata.org' ],
];

Funcionamiento interno

Durante el análisis sintáctico, la extensión Graph expande todos los parámetros y expresiones de las plantillas y almacena las definiciones completas del gráfico en la propiedad de página ParserOutput utilizando hashes del gráfico para los identificadores.

La extensión Graph añade HTML a la página adonde deberían ir los gráficos, un ‎<div> con un graph-id como atributo. Ejemplo:

<div class="mw-graph" data-graph-id="72edc224f0a10b343c1e84f63dbfc97cac9bc957">
</div>

The Graph extension adds an ext.graph ResourceLoader JavaScript module to the page that includes the Vega library, and puts the JSON of graph definitions into a JavaScript mediawiki.config variable named wgGraphSpecs. Once the client has loaded this module, the Vega JavaScript library populates each ‎<div> with an HTML canvas and draws the graph in it, replacing the static image.

Security features

‎<graph> can be configured to disallow referencing untrusted data sources (e.g. Wikimedia only allows data from the Wikimedia sites).

License

Vega library is distributed under a modified BSD license acceptable under for us to use.

This appears to be a copy of the BSD license, with some minor (acceptable) modifications. It's not a problem for us to use it, although ideally they would not make changes like this to the license. It's better if people do not make these changes to their license, to avoid confusion (like this) about whether the license is safe for open-source use.

—Stephen LaPorte

Configuration

wgGraphAllowedDomains

See the section on external data.

VisualEditor module

Since summer 2015, the Graph extension also comes with a module (ext.graph.VisualEditor) which enables graph editing within VisualEditor.

This module was a result of a Google Summer of Code 2015 project. See phab:T89287 for more details.

 

This module allows users to see graphs within VisualEditor, as opposed to alien extension nodes. Furthermore, users can open up a dialog to edit a graph's type, data and padding. The UI also offers a way to edit a graph's raw JSON specification within VE without having to switch to the classic wikitext editor, in case more advanced users want to tweak settings not supported by the UI.

This first step serves as a stepping stone for many possibilities with graph editing within VisualEditor, and there are a lot of ways in which the module can be improved and expanded.

Troubleshooting broken graphs

Errors with graphs will be logged in the developer console.

Error: Bad constructor arguments (phab:T277906)

To fix: Replace filepath:Earthmap1000x500compac.jpg with filepath:Earthmap1000x500.jpg

TypeError: undefined is not an object (evaluating 'datum.firstYear.value')

To fix: Make sure you have not set default as null

See also