Extension:Chart
Support level: Pending The support level for this extension is currently under review. The Reader Growth Team is the maintainer of last resort for the time being. |
Stav rozšíření: stabilní |
|
|---|---|
| Implementace | Značka |
| Popis | Vykresluje grafy |
| Autoři | Brooke Vibber, Katie Filbert, Roan Kattouw |
| Zásady kompatibility | Větev master zachovává zpětnou kompatibilitu. |
| MediaWiki | >= 1.47.0 |
| Změny v databázi | Ne |
|
|
| Licence | GNU General Public License 3.0 nebo novější |
| Stáhnout | README |
| Přeložte rozšíření Chart, používá-li lokalizaci z translatewiki.net | |
| Problémy | Otevřené úkoly · Nahlásit chybu |
Rozšíření Chart poskytuje základní interaktivní funkce vizualizace dat, které mají nahradit některé, ale ne všechny aspekty rozšíření Graph. Toto rozšíření pro wikiny Wikimedie je v současné době ve vývoji. Další podrobnosti o procesu vývoje naleznete v části Extension:Chart/Project.
Toto rozšíření podporuje následující typy grafů:
Instalace
Rozšíření Chart vyžaduje nainstalované rozšíření JsonConfig a také stažení knihovny JavaScript (ve skutečnosti TypeScript) Chart Renderer.
Úplné pokyny k nastavení naleznete v souboru README.md v úložišti.
Produkce Wikimedia
Pro použití v produkčních systémech Wikimedie viz obecné pokyny k nasazení služeb v sekci wikitech:Kubernetes/Deployments#Cheatsheet. Klíčové informace zde:
- find your commit's build image id from
chart-renderer's CI, eg "2025-06-24-201619-production"- edit
deployment-charts'shelmfile.d/services/chart-renderer/values.yamlto reference the new version - dostat od implementátora +2
- edit
- (as a deployer) log into
deployment.codfw.wmnetordeployment.eqiad.wmnetdepending on the active data center$ cd /srv/deployment-charts/helmfile.d/services/chart-renderer- latest service config should appear within a couple minutes (there's a regular update job)
$ helmfile -e staging -i apply --context 5- confirm the changes and let it deploy to staging
- test rendering on beta cluster
- TODO: add a specific page with our planned live test charts
- TODO: add directions on checking pixel rendering results
- once confirmed good, deploy to main clusters:
$ helmfile -e codfw -i apply --context 5- confirm the changes and let it deploy to codfw
$ helmfile -e eqiad -i apply --context 5- confirm the changes and let it deploy to eqiad
Jak používat
Chcete-li vykreslit graf, musíte definovat definici grafu, která bude přiřazena ke zdroji dat, který chcete vykreslit. Definice grafu je strukturována jako relativně jednoduchý soubor JSON. Podrobnosti syntaxe viz Extension:Chart/Specification.
Všechny grafy v tomto příkladu lze vykreslit ze stejného zdroje dat: Data:Chart Example Data.tab, fiktivní datová sada. Ukázkový obsah těchto stránek lze nalézt v adresáři sample.
{
"license": "CC0-1.0",
"version": 1,
"source": "Chart Example Data.tab",
"type": "line",
"title": {
"en": "Example Chart Title"
},
"subtitle": {
"en": "Example Subtitle"
},
"xAxis": {
"title": {
"en": "Example X Axis Title"
},
"format": "none"
},
"yAxis": {
"title": {
"en": "Example Y Axis Title"
},
"format": "none"
},
"mediawikiCategories": [
{
"name": "Example category",
"sort": "Its sortkey"
}
],
"transform": {
"module": "Optional lua module for data transforms",
"function": "transform_func",
"args": {
"arg_name": "arg_value"
}
}
}
Jakmile je graf definován, můžete jej snadno vykreslit pomocí funkce #chart parser. V tomto případě jsou data grafu definována v Data:Chart Example Data.tab a samotný graf je definován v Data:Example.Line.chart:
{{#chart:Example.Line.chart}}
Všimněte si, že graf může být obecný a znovu použit s různými zdroji dat, například takto:
{{#chart:Population through years.chart
|data=Population of USA.tab
}}
{{#chart:Population through years.chart
|data=Population of UK.tab
}}
{{#chart:Population through years.chart
|data=Population of Poland.tab
}}
Zastaralé formáty
The Chart definition JSON format originally allowed the title to be a plain string, rather than an object with localized title strings.
xAxis and yAxis title fields also supported plain strings, but is now deprecated.
Deprecated:
{
"license": "CC0-1.0",
"description": {
"en": "1993 Canadian federal election"
},
"title": "Example chart",
"xAxis": {
"title": "month"
},
"yAxis": {
"title": "votes"
},
}
This should instead be:
{
"license": "CC0-1.0",
"description": {
"en": "1993 Canadian federal election"
},
"title": {
"en": "Example chart"
},
"xAxis": {
"title": {
"en": "month"
}
},
"yAxis": {
"title": {
"en": "votes"
}
},
}
Formáty data v tabulkových datech
Rozšíření v současné době správně nepodporuje formáty data, ale pokud je takto nakonfigurováno, dokáže zobrazit data v řetězcovém formátu (čísla nejsou podporována) na ose X. Pro správné zobrazení dat je v současné době nutné, aby byla data formátována jako řetězce o délce přesně 10 znaků ve formátu:
YYYY-MM-DD, např.2025-10-20,
To znamená, že formát dat Wikidata momentálně není podporován.
Jiné 10znakové řetězce, které lze analyzovat funkcí Date.parse() v JavaScriptu, mohou také fungovat, i když nejsou oficiálně podporovány.
Pokud jsou v prvním sloupci tabulkových dat detekována data, budou automaticky lokalizována na základě jazyka obsahu wiki. Níže je uveden příklad, který ukazuje formát dat, který se bude správně zobrazovat.
{
"license": "CC0-1.0",
"description": {
"en": "1993 Canadian federal election"
},
"mediawikiCategories": [
{
"name": "Data:.tab",
"sort": ""
},
{
"name": "Data:Examples.tab",
"sort": ""
}
],
"schema": {
"fields": [
{
"name": "date",
"type": "string",
"title": {
"en": "Date",
"fr": "Date"
}
},
{
"name": "pc",
"type": "number",
"title": {
"en": "PC",
"fr": "PC"
}
},
{
"name": "liberal",
"type": "number",
"title": {
"en": "Liberal",
"fr": "Libéral"
}
},
{
"name": "ndp",
"type": "number",
"title": {
"en": "NDP",
"fr": "NPD"
}
},
{
"name": "bq",
"type": "number",
"title": {
"en": "BQ",
"fr": "BQ"
}
},
{
"name": "reform",
"type": "number",
"title": {
"en": "Reform",
"fr": "Réform"
}
}
]
},
"data": [
[
"1993-09-09",
35,
37,
8,
8,
10
],
[
"1993-09-14",
36,
33,
8,
10,
11
],
[
"1993-09-20",
35,
35,
6,
11,
11
]
]
}
Viz příklady na Commons:
Pro roky by daty měla být čísla:
{
"license": "CC0-1.0",
"description": {
"en": "New Zealand annual wine production, in millions of litres"
},
"sources": "Statistics from New Zealand Winegrowers 1998–2024 annual reports",
"schema": {
"fields": [
{
"name": "year",
"type": "number",
"title": {
"en": "Year"
}
},
{
"name": "production",
"type": "number",
"title": {
"en": "Wine produced (million litres)"
}
}
]
},
"data": [
[
1990,
54.4
],
[
1991,
49.9
],
[
1992,
41.6
],
[
1993,
32.5
],
[
1994,
41.1
],
[
1995,
56.4
]
]
}
Příklad grafů a tabulkových dat s roky na ose x:
- commons:Data:New_Zealand_Annual_Wine_Production.tab
- commons:Data:New_Zealand_Annual_Wine_Production.chart
Více informací o podpoře dat naleznete v tématu Podpora pro data ADR v gerritu.
Přizpůsobení
Přizpůsobení grafů je v současné době omezené. Doufáme, že po testování, diskusi a vyhodnocení bude možné nalézt řešení pro přizpůsobení, která neohrozí přístupnost, vykreslování specifické pro dané zařízení ani bezpečnost.
Velikost
V současné době grafy zabírají celou šířku kontejneru, kam je umístíte. Neexistuje způsob, jak nastavit výšku.
Konečným cílem je zajistit, aby grafy bylo možné čitelně vykreslit bez ohledu na to, na jakém zařízení jsou čteny. Více informací najdete na stránce T376845.
Námět
V současné době jsou grafy omezeny na jednu výchozí barevnou paletu. Tato paleta byla pečlivě navržena s ohledem na přístupnost. Myšlenky, které stojí za těmito barevnými volbami, lze prozkoumat v článku T369863.
Některé grafy vyžadují specifická barevná témata, například pro znázornění dat týkajících se politických stran. Zůstává otevřenou otázkou, jak nejlépe podporovat tento typ přizpůsobení, aniž by byla ohrožena schopnost čtenářů s potřebami přístupnosti (např. barvoslepostí) je používat.
Upozornění
Upozorňujeme, že ačkoli grafy aktuálně vykreslují SVG výstup, který lze stylovat pomocí TemplateStyles, upozorňujeme, že stylování souvisejících SVG prvků by nemělo být považováno za stabilní, protože se může kdykoli změnit. Nespoléhejte se prosím na CSS pro úpravu vzhledu grafů, protože to může v budoucnu vést k nefunkčním grafům nebo to může narušit funkce přístupnosti, které mění velikost písma, a funkce, jako je tmavý režim.
Internacionalizace
Grafy lze vkládat pouze do jazyka obsahu wiki. Takže například řetězec dotazu "uselang" (např. ?uselang=es) graf neovlivní.
Formát grafu podporuje definování textu, jako je název a popisky, v různých jazycích, takže stejný graf lze použít na stránkách wikin různých jazyků. Viz příklad grafu s podporou více jazyků zobrazeného na španělsky psané wiki.
Známé chyby
Viz toto filtrované zobrazení tabulky Charts Phabricator.
Typy grafů
U všech grafů se očekává, že data budou uspořádána do sloupců, přičemž první sloupec představuje hodnotu x-axis a následující sloupce představují řady nebo křivky s hodnotou y-axis.
Spojnicový
V následujícím příkladu je proměnná {{#chart: }} zabalena do kontejneru {{Image frame}}, který nastavuje šířku grafu a obsahuje popisek.
Je také uveden odkaz na nezpracovaná tabulková data, kde lze nalézt informace o zdrojích dat:
{{image frame
|content={{#chart:Example.Line.chart}} [[commons:Data:Chart Example Data.tab|'''Raw data''']]
|width = 340
|caption = This is an example of a line chart.
}}
Výsledek naleznete v této sekci.
Sloupcový
Zde graf zabírá celou šířku oblasti obsahu stránky:
{{#chart:Example.Bar.chart}} <div align="center">[[commons:Data:Chart Example Data.tab|'''Raw data''']]</div>
To má za následek:
Plošný
Výsečový
Výsečové grafy jsou speciálním typem grafu a zdroje dat mohou vyžadovat úpravu, aby se správně vykreslily.
Při čtení dat budou všechny sloupce, které neobsahují čísla (např. osa x), zahozeny a v grafu bude zobrazen součet všech řádků.
Například pokud více řádků zobrazuje hodnoty pro A, B a C k různým datům, např. 1. ledna a 2. ledna, bude segment koláčového grafu pro A představovat součet všech hodnot řádků pro A v rámci těchto dat.
Hledání existujících grafů
Grafy, které lze použít v článcích, jsou k dispozici na Wikimedia Commons a lze je sledovat pomocí kategorií MediaWiki.
Tento dotaz lze použít jako zástupný dotaz k nalezení grafů, které vytvořili jiní, a k jejichž překladům přispěli, a k nalezení záložek, které lze použít k vytvoření grafů.
Sada wiki stránek, které používají grafy na jakékoli konkrétní wiki, se nachází v kategorii, jejíž název je definován na hodnotě MediaWiki:chart-render-category a MediaWiki:Chart-error-category (na této wiki Category:Pages using the Chart extension a Category:Pages using the Chart extension with rendering errors). Pro snazší vyhledávání na interwiki prosím propojte kategorie wiki s d:Q131382738 a d:Q131406605.
Migrace z rozšíření Graph
Staré grafy, které je třeba migrovat do rozšíření Charts, naleznete v kategorii stránky Wikipedie se zakázanými grafy v různých jazycích. Některé však již byly smazány, aniž by byly nahrazeny novými grafy. Seznam lze porovnat s archivovaným seznamem prvních 200 z 23 811 stránek anglické Wikipedie se zakázanými grafy z roku 2023, krátce poté, co byly šablony do této kategorie přidány, a odpovídajícím seznamem v jiných jazycích.
Technická dokumentace
Vzhledem k problémům s Extension:Graph byla všechna rozhodnutí týkající se nového rozšíření pečlivě zvážena s nadějí na vybudování důvěry v jeho nahrazení.
Technická rozhodnutí jsou zatím zdokumentována v repozitáři kódu ve složce /doc/adr.
Monitorování chyb
Stránky s nedostatkem .chart se automaticky ukládají do commons:Category:Pages using the Chart extension with rendering errors. Wiki stránky s chybnými grafy se v různých jazykových verzích automaticky ukládají do kategorie Stránky používající rozšíření Chart s chybami vykreslování.
Chyby s vykreslováním grafů na straně klienta budou zaznamenány do logstash. (Jen pro vývojáře.)
Nástroje pro tvorbu grafů
Existuje několik možných metod pro poloautomatické vytváření a úpravu grafů a jejich tabulkových dat:
- Skript graphDataImport lze ve webovém prohlížeči použít k extrakci dat z existujícího grafu wikitextu a podobných objektů a k jejich převodu na stránku o velikosti .tab, stránku s definicí o velikosti .chart a nový wikitext.
- Generativní umělá inteligence může být vyzvána k extrakci dat z existujícího grafového wikikódu a tabulek, k jejich převodu na stránky o velikosti .tab a .chart a k vygenerování nového wikikódu podle zadaných specifikací. Může také poskytovat překlad názvů a být použit k rozšíření a aktualizaci stránky .tab o nová data.
- Gadget TabularImportExport dokáže převádět soubory Excel a .csv na stránky .tab a z nich. Můžete ji aktivovat prostřednictvím vašich nastavení Commons.
- Uživatelské rozhraní JSON
Editovat jako tabulku(součást rozšíření Jsonconfig) je k dispozici na stránce úprav .tab. - Někteří roboti mohou na požádání periodicky importovat statistiky z webu nebo z existujících grafů Wikipedie na .tab nebo .chart stránky. Mezi takové roboty patří DPLA bot a SLiuBot.
- GraphBot převádí grafy z anglické Wikipedie do tabulek.
Související odkazy
- Extension:Chart/Project/FAQ – často kladené otázky
- Transforms
| Toto rozšíření se používá na jednom nebo více projektech Wikimedia. Pravděpodobně to znamená, že rozšíření je stabilní a funguje dostatečně dobře, aby jej mohly používat weby s tak vysokou návštěvností. Vyhledejte tento název rozšíření v konfiguračních souborech CommonSettings.php a InitialiseSettings.php Wikimedie, abyste viděli, kde je nainstalováno. Úplný seznam rozšíření nainstalovaných na konkrétní wiki lze vidět na stránce wiki Special:Version. |
- Extensions maintained by Reader Teams/cs
- Extensions maintained by Reader Growth/cs
- Extensions maintained by Reader Teams - Level Pending/cs
- Stable extensions/cs
- Tag extensions/cs
- ChangeTagsListActive extensions/cs
- LinksUpdateComplete extensions/cs
- ListDefinedTags extensions/cs
- PageSaveComplete extensions/cs
- ParserFirstCallInit extensions/cs
- RecentChange save extensions/cs
- SkinTemplateNavigation::Universal extensions/cs
- SpecialPage initList extensions/cs
- GPL licensed extensions/cs
- Extensions in Wikimedia version control/cs
- All extensions/cs
- Extensions used on Wikimedia/cs
