Template:Graph:Lines/doc
This is a documentation subpage for
Template documentation[edit]
Template sandbox and testcases for TEMPLATE_NAME[edit]Overview[edit]This page provides a clean workflow to safely edit and validate TEMPLATE_NAME:
Use this page to:
Quick links[edit]
How to test[edit]1. Edit the sandbox at Template:TEMPLATE_NAME/sandbox. 2. Open this test page and click “Show preview” to render the sandbox with inputs below. 3. Verify each testcase: Does the “Actual output” match the “Expected output”? 4. If all pass, consider copying sandbox to live using an edit summary like: “Sync from /sandbox: passes all /testcases as of YYYY-MM-DD.” Previewing tips[edit]
Test harness[edit]The following sections render the sandbox template against curated inputs. Each testcase shows:
Testcase A: Minimal invocation[edit]Parameters: {{TEMPLATE_NAME}} Expected output: [Minimal successful output with defaults: e.g., a neutral message or basic box] Actual output (sandbox): Character and language test sandbox This sandbox is used to test how Template:TEMPLATE NAME behaves with special characters (such as Greek letters) and language-specific spans. Basic examples[edit]
Within the template[edit]Below are example calls of the template using these characters as parameters. {{TEMPLATE NAME | title = Greek test: α γ | summary = Demonstrating Greek letters: α, β, γ, and entities like γ. | attr1 = Direct Greek: α β γ δ | attr2 = Entity Greek: α β γ δ | attr3 = German label: <span lang="de">A</span>, English label: A }} Preview the page to check if:
Notes[edit]
Testcase B: Common parameters[edit]Parameters: {{TEMPLATE_NAME | param1 = Alpha | param2 = Beta | flag = yes }} Expected output: [Example: shows "Alpha" and "Beta" in designated slots; flag toggles enhanced styling] Actual output (sandbox): Character and language test sandbox This sandbox is used to test how Template:TEMPLATE NAME behaves with special characters (such as Greek letters) and language-specific spans. Basic examples[edit]
Within the template[edit]Below are example calls of the template using these characters as parameters. {{TEMPLATE NAME | title = Greek test: α γ | summary = Demonstrating Greek letters: α, β, γ, and entities like γ. | attr1 = Direct Greek: α β γ δ | attr2 = Entity Greek: α β γ δ | attr3 = German label: <span lang="de">A</span>, English label: A }} Preview the page to check if:
Notes[edit]
Testcase C: Edge values and escaping[edit]Parameters: {{TEMPLATE_NAME | param1 = [[Linked target|Visible text]] | param2 = {{subst:CURRENTTIMESTAMP}} | raw = <code><span class="x">escaped</span></code> }} Expected output: [Links render correctly; timestamp subst is literal in expected; raw shows escaped markup] Actual output (sandbox): Character and language test sandbox This sandbox is used to test how Template:TEMPLATE NAME behaves with special characters (such as Greek letters) and language-specific spans. Basic examples[edit]
Within the template[edit]Below are example calls of the template using these characters as parameters. {{TEMPLATE NAME | title = Greek test: α γ | summary = Demonstrating Greek letters: α, β, γ, and entities like γ. | attr1 = Direct Greek: α β γ δ | attr2 = Entity Greek: α β γ δ | attr3 = German label: <span lang="de">A</span>, English label: A }} Preview the page to check if:
Notes[edit]
Testcase D: Internationalization (i18n)[edit]Parameters: {{TEMPLATE_NAME | lang = ja | text = こんにちは世界 }} Expected output: [Text displays correctly for non-ASCII; applies lang attribute or rtl/ltr where applicable] Actual output (sandbox): Character and language test sandbox This sandbox is used to test how Template:TEMPLATE NAME behaves with special characters (such as Greek letters) and language-specific spans. Basic examples[edit]
Within the template[edit]Below are example calls of the template using these characters as parameters. {{TEMPLATE NAME | title = Greek test: α γ | summary = Demonstrating Greek letters: α, β, γ, and entities like γ. | attr1 = Direct Greek: α β γ δ | attr2 = Entity Greek: α β γ δ | attr3 = German label: <span lang="de">A</span>, English label: A }} Preview the page to check if:
Notes[edit]
Testcase E: Error handling[edit]Parameters: {{TEMPLATE_NAME | param1 = | required = <!-- intentionally omitted --> }} Expected output: [Shows a gentle error or maintenance category; does not break page layout] Actual output (sandbox): Character and language test sandbox This sandbox is used to test how Template:TEMPLATE NAME behaves with special characters (such as Greek letters) and language-specific spans. Basic examples[edit]
Within the template[edit]Below are example calls of the template using these characters as parameters. {{TEMPLATE NAME | title = Greek test: α γ | summary = Demonstrating Greek letters: α, β, γ, and entities like γ. | attr1 = Direct Greek: α β γ δ | attr2 = Entity Greek: α β γ δ | attr3 = German label: <span lang="de">A</span>, English label: A }} Preview the page to check if:
Notes[edit]
Maintenance[edit]
Categories[edit]Copy-paste skeletons[edit]Below are ready-to-use skeletons for the sandbox and testcases subpages. Skeleton: Template:TEMPLATE_NAME/sandbox[edit]<!-- Sandbox for TEMPLATE_NAME --> <!-- Copy the entire template source here; edit safely. --> {{#if:{{{required|}}} | <!-- normal output --> <div class="tmpl"> <b>{{{param1|}}}</b> · <i>{{{param2|}}}</i> {{#if:{{{flag|}}}|<span class="flag">✓</span>|}} {{#if:{{{raw|}}}|<span class="raw">{{{raw}}}</span>|}} </div> | <!-- error / missing required --> <span class="error">TEMPLATE_NAME: missing required parameter</span> [[Category:Pages with TEMPLATE_NAME errors]] }} Skeleton: Template:TEMPLATE_NAME/testcases[edit]<!-- Testcases for TEMPLATE_NAME; render against /sandbox --> ; Minimal : {{TEMPLATE_NAME/sandbox}} ; Common params : {{TEMPLATE_NAME/sandbox | param1 = Alpha | param2 = Beta | flag = yes }} ; Edge and escaping : {{TEMPLATE_NAME/sandbox | param1 = [[Linked target|Visible text]] | param2 = 20250101T000000Z | raw = <code><span class="x">escaped</span></code> }} ; I18n : {{TEMPLATE_NAME/sandbox | lang = ja | text = こんにちは世界 }} ; Error handling : {{TEMPLATE_NAME/sandbox | required = }} Review checklist[edit]
Template:Terminate sentence ensures a sentence ends with a specified terminator (default: a period). It avoids adding duplicate terminators and can optionally trim trailing spaces. It attempts to ignore trailing closing quotes or brackets when deciding whether a terminator is already present. Usage[edit]Basic: {{Terminate sentence|This is a sentence}}
→ This is a sentence.
Named parameters: {{Terminate sentence
|text=He said "Hello"
|term=.
}}
→ He said "Hello".
Custom terminator: {{Terminate sentence|text=Warning|term=!}}
→ Warning!
Avoid duplicate terminator: {{Terminate sentence|text=Already done.|term=.}}
→ Already done.
Trim trailing spaces: {{Terminate sentence|text=Ends with space |trim=yes}}
→ Ends with space.
Skip processing: {{Terminate sentence|text=No changes here|skip=yes}}
→ No changes here
Append a note: {{Terminate sentence|text=Complete|note=(source: 2025)}}
→ Complete. (source: 2025)
Parameters[edit]
Behavior details[edit]
Examples[edit]
{{Terminate sentence|text=He whispered "hush"|term=.}}
→ He whispered "hush".
{{Terminate sentence|text=Complete (verified)|term=.}}
→ Complete (verified).
{{Terminate sentence|text=Alert|term=!}}
→ Alert!
{{Terminate sentence|text=Wait...|term=.|allowdup=yes}}
→ Wait.... Best practices[edit]
Lua-powered variant (optional)[edit]For more robust detection (including multilingual quotes and punctuation), create -- Module:TerminateUtil
local M = {}
local closing = {
[")"] = true, ["]"] = true, ["}"] = true,
['"'] = true, ["'"] = true, ["”"] = true, ["’"] = true, ["»"] = true, ["›"] = true
}
local function trimRight(s)
return (s:gsub("%s+$",""))
end
function M.lastVisibleChar(args)
local s = args.s or ""
s = trimRight(s)
local i = #s
while i > 0 do
local c = s:sub(i,i)
if closing[c] then
i = i - 1
else
return c
end
end
return ""
end
return M
Then update the template to call: {{#invoke:TerminateUtil|lastVisibleChar|s=text}}
This improves detection for closing quotes and brackets. See also[edit]It may contain usage information, categories and other content that is not part of the original template page. |
| As of 4 October 2019 (and since early July 2019 at least), the graph extension no longer works when linked to a wikidata query. Until a solution is found, this template should not be used with a wikidata query in articles. See the Phabricator ticket for more information. |
This graph's main version resides at Template:Graph:Lines. Please make or suggest all the changes there, and copy it everywhere else (until the copying is automated)
This graph draws one or more independent numeric data series as lines. The data must be stored on Commons' Data namespace or come from Wikidata Query Service.
{{Graph:Lines
| table=bls.gov/US Women's weekly earnings as a percent of men's by age, annual averages.tab
| type=year | xField=year
| series="age_16_24", "age_25_34", "age_35_44", "age_45_54"
| title=Gender pay gap in the United States
| yZero=false | xAxis=Year | yAxis=Percentage | yMax=100 | yGrid=y | width=500 | legend=Age group
}}
|
{{Graph:Lines
| tabletype=query | table=
SELECT ?decade (COUNT(?decade) AS ?count) WHERE {
?item wdt:P31 wd:Q3305213 .
?item wdt:P571 ?inception .
BIND( year(?inception) as ?year ).
BIND( ROUND(?year/10)*10 as ?decade ) .
FILTER( ?year > 1400)
} GROUP BY ?decade ORDER BY ?decade
| series="count" | type=year | xField=decade
| title=Paintings by decade
}}
|
|
See or edit raw graph data. |
See source Wikidata query and sources. |
Wikidata query produces three columns - year, population size, and country name. This graph shows one line per country.
{{Graph:Lines
| tabletype=query | table=
#Population of countries sharing a border with Germany
SELECT ?year ?population ?countryLabel WHERE {
{
SELECT ?country ?year (AVG(?population) AS ?population) WHERE {
{
SELECT ?country (YEAR(?date) AS ?year) ?population WHERE {
?country wdt:P47 wd:Q183.
?country p:P1082 ?populationStatement.
?populationStatement ps:P1082 ?population.
?populationStatement pq:P585 ?date.
}
}
}
GROUP BY ?country ?year
}
SERVICE wikibase:label { bd:serviceParam wikibase:language "en". }
}
| type=year | xField=year | group=countryLabel | value=population
| title=Population of countries bordering Germany
| legend=- | xGrid=y | yGrid=y | yTicks=7 | width=600
}}
| |
|
See source Wikidata query and sources. |
This graph draws one or more independent numeric data series as lines. The data must be stored on Commons' Data namespace or come from Wikidata Query Service.
| Parameter | Description | Type | Status | |
|---|---|---|---|---|
| Table type | tabletype | Specifies the type of the table data. "tab" (default) uses data namespace on commons, without the data: prefix. "query" sends request to wikidata query service.
| String | optional |
| Table | table | Data page name on Commons, without the Data: prefix. The table should contain xField column, like year or date, and one or more series columns to plot. If tabletype parameter is set to "query", this value is the query. | String | required |
| X axis type | type | Type of the x axis - time (e.g. "2015-10" or "2013-03-08"), year (integer, but treated as a year), linear (numbers), ordinal (anything).
| String | suggested |
| X field | xField | Id of the data column that contains values for the X axis. If type=year, xField is also "year" by default. | String | required |
| Series | series | If each line is represented by a separate column of data (or if there is only one column), list of the data columns to show as lines. Must be in quotes, and listed by field IDs if coming from a .tab page: "field1", "field2", "field3". | String | optional |
| Group | group | If line color depends on just one column, specify that column's ID, instead of the series parameter. | String | optional |
| Value | value | If line color depends on one column, this parameter should be set to the column which has the values. | String | optional |
| Filter | filter | Optionally filter data with an template expression parameter e.g. `filter = datum.some_dataset_field > 1900 && datum.some_dataset_field < 2000` where `some_dataset_field` means some valid field of displayed dataset | String | optional |
| X axis starts at 0 | xAxisZero, xZero | Force to start or not to start X axis with zero. Can be either true or false. | String | optional |
| Y axis zero starts at 0 | yAxisZero, yZero | Force to start or not to start Y axis with zero. Can be either true or false. | String | optional |
| X axis scale clamp | xAxisClamp | Épingle sur l'échelle de l'axe X. Les courbes au delà de cette épingle seront cachées. | Boolean | optional |
| Y axis scale clamp | yAxisClamp | Épingle sur l'échelle de l'axe Y. Les courbes au delà de cette épingle seront cachées. | Boolean | optional |
| X axis minimum | xAxisMin, xMin | Force X axis to start from this value. | Number | optional |
| X axis maximum | xAxisMax, xMax | Force X axis to end with this value. | Number | optional |
| Y axis minimum | yAxisMin, yMin | Force Y axis to start from this value. | Number | optional |
| Y axis maximum | yAxisMax, yMax | Force Y axis to end with this value. | Number | optional |
| Y axis scale | yScale | Set Y axis scaling type - linear, log and sqrt.
| String | optional |
| Replace zero values | replaceZerosWith | Replaces 0 values in Y data field. Recommended to be use alongside with yScale=log (else zeros will be filtered out). | Number | optional |
| Title | title | Title of the whole graph. | String | optional |
| Title horizontal alignment | titleXAlign | Horizontal alignment of title, could be one of: left, center, right | String | optional |
| Title horizontal offset | titleXOffset | Horizontal offset of title position, could be negative, to shift title to the left, or positive to shift title to the right | Number | optional |
| X axis title | xAxisTitle | Title of the X axis. | String | optional |
| Y axis title | yAxisTitle | Title of the Y axis. | String | optional |
| X axis format | xAxisFormat | Changes the formatting of the X axis labels
| String | optional |
| Y axis format | yAxisFormat | Changes the formatting of the Y axis labels
| String | optional |
| X axis labels angle | xAxisAngle | Rotates the x axis labels by the specified angle. Recommended values are: -45, +45, -90, +90. | Number | optional |
| Y axis labels angle | yAxisAngle | Rotates the y axis labels by the specified angle. | Number | optional |
| X axis labels font size | xAxisFontSize | no description | Number | optional |
| Y axis labels font size | yAxisFontSize | no description | Number | optional |
| X axis grid | xGrid | Show grid lines for X axis. | Boolean | optional |
| Y axis grid | yGrid | Show grid lines for Y axis. | Boolean | optional |
| X axis ticks | xTicks, xAxisTicks | How many ticks to show on X axis. 7 by default. '-' value makes it automatic.
| Number | optional |
| Y axis ticks | yTicks, yAxisTicks | How many ticks to show on Y axis. Auto '-' by default.
| Number | optional |
| Raw vertical annotation values | vAnnotationsValues | Supply all annotation values as a list of JSON objects: {"text": "Big event", "x": 1980}, ... | String | optional |
| Raw horizontal annotation values | hAnnotationsValues | Supply all horizontal annotation values as a list of JSON objects: {"text":"Big event", "y": 980}, ... | String | optional |
| Vertical annotation table | vAnnotationsTable | Data page name on Commons, without the Data: prefix. The table must contain "x" column, and optional "text" and "color" columns. | String | optional |
| Horizontal annotation table | hAnnotationsTable | Data page name on Commons, without the Data: prefix. The table must contain "y" column, and optional "text" and "color" columns. | String | optional |
| Vertical annotation data transforms | vAnnotationsTransforms | no description | String | optional |
| Horizontal annotation data transforms | hAnnotationsTransforms | no description | String | optional |
| Legend | legend | Title of the legend. "-" shows the legend without title. | String | optional |
| Width | width | no description | Number | optional |
| Height | height | no description | Number | optional |
| Chart sizing mode | chartSizing | Chart sizing mode, could be one of: fit, pad. Use `fit` to force resulting chart canvas sizes to be exactly equal to provided width and height values. Use `pad` to define prefered plotting size with provided width and height values, and let Vega increase overall chart size to include legend and title (if any)
| String | optional |
| Colors | colors | The colors of the lines, specified as a list like red, green. It has priority over colorscheme | String | optional |
| Color scheme | colorscheme | The colors of the lines, specified as Vega defined rangeliteral.
| String | optional |
| Line width | linewidth | Line width for line charts or distance between the pie segments for pie charts.
| Number | optional |
| Debug | debug | Debug output: if set, will show graph as raw JSON. | String | optional |
Edit parameter translations