Template:Graph:PageViews: Difference between revisions
updated from enwiki |
tickCount for y grid |
||
(44 intermediate revisions by 12 users not shown) | |||
Line 1: | Line 1: | ||
<includeonly>{{#tag:graph|</includeonly><noinclude>{{documentation}}<syntaxhighlight lang=html><graph></syntaxhighlight>{{#tag:syntaxhighlight|</noinclude> |
|||
<includeonly> |
|||
{{#tag:graph| |
|||
{ |
{ |
||
// |
|||
"version": 2, |
|||
// ATTENTION: This code is maintained at https://www.mediawiki.org/wiki/Template:Graph:PageViews |
|||
"width": 400, |
|||
// Please do not modify it anywhere else, as it may get copied and override your changes. |
|||
"height": 200, |
|||
// Suggestions can be made at https://www.mediawiki.org/wiki/Template_talk:Graph:PageViews |
|||
// The graph uses PageViews API https://wikitech.wikimedia.org/wiki/Analytics/AQS/Pageviews |
|||
// |
|||
"$schema": "https://vega.github.io/schema/vega/v5.json", |
|||
"width": {{{width|800}}}, |
|||
"height": {{{height|200}}}, |
|||
"autosize": { |
|||
"type": "fit", |
|||
"resize": false, |
|||
"contains": "padding" |
|||
}, |
|||
// The data for this graph comes from the PageView API. The request is made for N days back up to now. |
|||
"data": [ |
"data": [ |
||
{ |
{ |
||
"name": "pageviews", |
"name": "pageviews", |
||
"url": "https://wikimedia.org/api/rest_v1/metrics/pageviews/{{#ifeq: {{#iferror: {{#expr: {{{1|}}} + 1 }} | {{{1|}}} | {{{2|}}} }} | _ | aggregate | per-article }}/{{trim|{{#ifeq: {{#iferror: {{#expr: {{{1|}}} + 1 }} | {{#iferror: {{#expr: {{{2|}}} + 1 }} | {{{2|{{SERVERNAME}}}}} | {{{3|{{SERVERNAME}}}}} }} | {{{3|{{SERVERNAME}}}}} }} | www.mediawiki.org | mediawiki.org | {{#iferror: {{#expr: {{{1|}}} + 1 }} | {{#iferror: {{#expr: {{{2|}}} + 1 }} | {{{2|{{SERVERNAME}}}}} | {{{3|{{SERVERNAME}}}}} }} | {{{3|{{SERVERNAME}}}}} }} }}}}/{{{platform|all-access}}}/{{{agent|user}}}/{{#ifeq: {{#iferror: {{#expr: {{{1|}}} + 1 }} | {{{1|}}} | {{{2|}}} }} | _ |
|||
"url": "wikirest://wikimedia.org/api/rest_v1/metrics/pageviews/per-article/{{trim| |
|||
| {{{granularity | monthly}}} |
|||
{{#ifeq: {{{3|{{SERVERNAME}}}}} | www.mediawiki.org | mediawiki.org | {{{3|{{SERVERNAME}}}}} }} |
|||
| {{urlencode:{{#titleparts: {{#iferror: {{#expr: {{{1|}}} + 1 }} | {{{1|{{ARTICLEPAGENAME}}}}} | {{{2|{{ARTICLEPAGENAME}}}}} }} }}|PATH}}/daily |
|||
}}/{{formatnum:{{#time: Ymd | -{{#iferror: {{#expr: {{{1|}}} + 1 }} | {{#iferror: {{#expr: {{{2|}}} + 1 }} | {{{3|30}}} | {{{2|30}}} }} | {{{1|30}}} }} days }}|R}}00/{{formatnum:{{#time: Ymd }}|R}}00", |
|||
"format": { |
"format": { |
||
"type": "json", |
"type": "json", |
||
"property": "items" |
"property": "items" |
||
}, |
}, |
||
// The response is parsed here, converting date strings of form "20160223" into date 2016-02-23 |
|||
"transform": [ |
"transform": [ |
||
{ "type": "formula", " |
{ "type": "formula", "as": "year", "expr": "parseInt(substring(datum.timestamp,0,4))" }, |
||
{ "type": "formula", " |
{ "type": "formula", "as": "month", "expr": "parseInt(substring(datum.timestamp,4,6))" }, |
||
{ "type": "formula", " |
{ "type": "formula", "as": "day", "expr": "parseInt(substring(datum.timestamp,6,8))" }, |
||
{ "type": "formula", " |
{ "type": "formula", "as": "date", "expr": "datetime(datum.year,datum.month-1,datum.day)" } |
||
] |
] |
||
} |
} |
||
], |
], |
||
"scales": [ |
"scales": [ |
||
// The dates are scaled to the "x" axis - the width of the graph |
|||
{ |
{ |
||
"name": "x", |
"name": "x", |
||
"type": "time", |
"type": "time", |
||
"range": "width", |
"range": "width", |
||
"domain": {"data": "pageviews"," |
"domain": {"data": "pageviews","fields": ["date"]} |
||
}, |
}, |
||
// The pageviews are scaled to the "y" axis - the height of the graph |
|||
// Optional scale parameter can change "linear" to other scales like log |
|||
// Optional max parameter can fix the upper bound of the graph |
|||
{ |
{ |
||
"name": "y", |
"name": "y", |
||
"type": "linear", |
"type": "{{{scale|linear}}}", |
||
"range": "height", |
"range": "height", |
||
"domain": {"data": "pageviews","fields": ["views"]}, |
|||
"nice": true, |
|||
" |
"clamp": true, |
||
{{ #if: {{{max|}}} |
|||
| "domainMax": {{{max}}}, |
|||
}} |
|||
"nice": true |
|||
} |
} |
||
], |
], |
||
// Simple axis with horizontal grid lines |
|||
"axes": [ |
"axes": [ |
||
{ |
|||
{"type": "x","scale": "x","ticks": 5}, |
|||
"orient": "bottom", |
|||
{"type": "y","scale": "y", "grid":true, "ticks": 5} |
|||
"scale": "x", |
|||
"tickCount": 5 |
|||
}, |
|||
{ |
|||
"orient": "left", |
|||
"scale": "y", |
|||
"grid": true, |
|||
"tickCount": 5 |
|||
} |
|||
], |
], |
||
// The graph is drawn with two elements a thick line at the top, and a semi-transparent area below |
|||
"marks": [ |
"marks": [ |
||
{ |
{ |
||
"type": "line", |
"type": "line", |
||
"from": {"data": "pageviews"}, |
"from": {"data": "pageviews"}, |
||
" |
"encode": { |
||
"enter": { |
"enter": { |
||
"x": {"scale": "x","field": "date"}, |
"x": {"scale": "x","field": "date"}, |
||
"y": {"scale": "y","field": "views"}, |
"y": {"scale": "y","field": "views"}, |
||
"stroke": {"value": "# |
"stroke": {"value": "{{{color|#36c}}}"}, |
||
"strokeWidth": {"value": 3}, |
"strokeWidth": {"value": 3}, |
||
"interpolate": {"value": "monotone"} |
"interpolate": {"value": "{{{interpolate|monotone}}}"} |
||
} |
} |
||
} |
} |
||
Line 59: | Line 96: | ||
"type": "area", |
"type": "area", |
||
"from": {"data": "pageviews"}, |
"from": {"data": "pageviews"}, |
||
" |
"encode": { |
||
"enter": { |
"enter": { |
||
"x": {"scale": "x","field": "date"}, |
"x": {"scale": "x","field": "date"}, |
||
"y": {"scale": "y","value": 0}, |
"y": {"scale": "y","value": 0}, |
||
"y2": {"scale": "y","field": "views"}, |
"y2": {"scale": "y","field": "views"}, |
||
"fill": {"value": "# |
"fill": {"value": "{{{color|#36c}}}"}, |
||
"fillOpacity": {"value": 0.35}, |
"fillOpacity": {"value": 0.35}, |
||
"interpolate": {"value": "monotone"} |
"interpolate": {"value": "{{{interpolate|monotone}}}"} |
||
} |
} |
||
} |
} |
||
} |
} |
||
] |
], |
||
"config": { |
|||
} |
|||
"axis": { |
|||
}} |
|||
"labelColor": "#54595d", |
|||
</includeonly><noinclude> |
|||
"tickColor": "#54595d", |
|||
"tickWidth": 1.5, |
|||
'''This graph's main version resides at [https://en.wikipedia.org/wiki/Template:Graph:PageViews enwiki Template:Graph:PageViews]. Please make all the changes there and copy it everywhere else (until the copying is automated)''' |
|||
"gridColor": "#a2a9b1", |
|||
"gridOpacity": 0.4, |
|||
''Example Usage. Without params shows 30 days for the current page:'' |
|||
"gridWidth": 2, |
|||
"domainWidth": 2 |
|||
<nowiki>{{ </nowiki>{{#if: {{ns:484}} |Template:}}Graph:PageViews | 90 | Main Page | en.wikipedia.org <nowiki>}}</nowiki> |
|||
} |
|||
{{ Template:Graph:PageViews | 90 | Main Page | en.wikipedia.org }} |
|||
} |
|||
<templatedata> |
|||
{ |
|||
"params": { |
|||
"1": { |
|||
"type": "number", |
|||
"default": "30", |
|||
"suggested": true, |
|||
"description": "Number of days back" |
|||
}, |
|||
"2": { |
|||
"label": "Page Title", |
|||
"description": "Title of the page, with namespace, including needed spaces", |
|||
"type": "wiki-page-name", |
|||
"default": "Name of the current article page (even if on talk page)", |
|||
"example": "Main Page" |
|||
}, |
|||
"3": { |
|||
"description": "Domain", |
|||
"default": "Current wiki", |
|||
"example": "en.wikipedia.org", |
|||
"type": "string" |
|||
} |
|||
}, |
|||
"paramOrder": [ |
|||
"1", |
|||
"2", |
|||
"3" |
|||
], |
|||
"format": "inline", |
|||
"description": "Inserts a graph with the page views statistics for the past N days of a page." |
|||
} |
} |
||
<includeonly>}}</includeonly><noinclude>|lang=javascript}}<syntaxhighlight lang=html></graph></syntaxhighlight></noinclude> |
|||
</templatedata> |
|||
</noinclude> |
Latest revision as of 10:52, 10 May 2023
This graph's main version resides at mediawiki Template:Graph:PageViews. Please make all the changes there and copy it everywhere else (until the copying is automated)
- {{ Graph:PageViews }}
30 days for the current page (if there is data)
- {{ Graph:PageViews | 90 | Main Page | en.wikipedia.org }}
90 days for Main Page on English Wikipedia
- {{ Graph:PageViews | 180 | _ }}
Monthly visitors to the current wiki (last 6 months)
- {{ Graph:PageViews | 180 | _ | all-projects | granularity = daily }}
Daily visitors to all worldwide wikis (last 6 months)
- {{ Graph:PageViews | 30 | Main Page | en.wikipedia.org}}
30 days for Main Page on English Wikipedia
- {{ Graph:PageViews | 30 | Main Page | en.wikipedia.org | platform = desktop}}
30 days for Main Page on English Wikipedia - desktop computer browsers
- {{ Graph:PageViews | 30 | Main Page | en.wikipedia.org | platform = mobile-web}}
30 days for Main Page on English Wikipedia - mobile browsers
- {{ Graph:PageViews | 30 | Main Page | en.wikipedia.org | platform = mobile-app}}
30 days for Main Page on English Wikipedia - mobile applications
- {{ Graph:PageViews | 30 | Main Page | en.wikipedia.org | agent = spider}}
30 days for Main Page on English Wikipedia - 'spider' agent
Template may be used with different parameter order. For example, in English Wikipedia
{{Graph:PageViews|90|Main Page}}
{{Graph:PageViews|Main Page|90}}
{{Graph:PageViews|Main Page|en.wikipedia.org|90}}
will give the same output.
TemplateData
[edit]Inserts a graph with the page views statistics for the past N days of a page.
Parameter | Description | Type | Status | |
---|---|---|---|---|
Number of days back | 1 | Number of days back to show in the chart
| Number | optional |
Page Title | 2 | Title of the page, with namespace, including needed spaces. If '_' is given, shows the total for the whole site
| Page name | optional |
Domain | 3 | Domain from which to find page views for the given title, if not this wiki. If '_' is given as parameter 2, 'all-projects' can be used here for all wiki sites summary data
| Line | optional |
Agent | agent | If you want to filter by agent type, use one of user, automated or spider. If you are interested in pageviews regardless of agent type, use all-agents.
| Line | optional |
Graph color | color | Shade with which to highlight the data in the chart
| Line | optional |
Graph scale | scale | Scaling could be one of these: linear, log, pow, sqrt, quantile, quantize, and threshold
| Line | optional |
Maximum Y value axis | max | This optional value might be useful to align multiple graphs side-by-side
| Number | optional |
Width | width | Width for the chart in pixels, if different from the default.
| Number | optional |
Height | height | Height for the chart in pixels, if different from the default.
| Number | optional |
Platform | platform | Computer platform could be one of these: all-access (all platforms together), desktop (regular browsers), mobile-web (mobile browsers), mobile-app (mobile wiki applications)
| Line | optional |
Granularity | granularity | If the 2nd parameter is '_' (shows site stats), set data granularity monthly, daily, or hourly
| Line | optional |
Interpolate | interpolate | Type of line interpolation. See https://vega.github.io/vega/docs/marks/line/
| Line | optional |
<graph>
{
//
// ATTENTION: This code is maintained at https://www.mediawiki.org/wiki/Template:Graph:PageViews
// Please do not modify it anywhere else, as it may get copied and override your changes.
// Suggestions can be made at https://www.mediawiki.org/wiki/Template_talk:Graph:PageViews
// The graph uses PageViews API https://wikitech.wikimedia.org/wiki/Analytics/AQS/Pageviews
//
"$schema": "https://vega.github.io/schema/vega/v5.json",
"width": 800,
"height": 200,
"autosize": {
"type": "fit",
"resize": false,
"contains": "padding"
},
// The data for this graph comes from the PageView API. The request is made for N days back up to now.
"data": [
{
"name": "pageviews",
"url": "https://wikimedia.org/api/rest_v1/metrics/pageviews/per-article/mediawiki.org/all-access/user/Template%3AGraph%3APageViews/daily/2024072700/2024082600",
"format": {
"type": "json",
"property": "items"
},
// The response is parsed here, converting date strings of form "20160223" into date 2016-02-23
"transform": [
{ "type": "formula", "as": "year", "expr": "parseInt(substring(datum.timestamp,0,4))" },
{ "type": "formula", "as": "month", "expr": "parseInt(substring(datum.timestamp,4,6))" },
{ "type": "formula", "as": "day", "expr": "parseInt(substring(datum.timestamp,6,8))" },
{ "type": "formula", "as": "date", "expr": "datetime(datum.year,datum.month-1,datum.day)" }
]
}
],
"scales": [
// The dates are scaled to the "x" axis - the width of the graph
{
"name": "x",
"type": "time",
"range": "width",
"domain": {"data": "pageviews","fields": ["date"]}
},
// The pageviews are scaled to the "y" axis - the height of the graph
// Optional scale parameter can change "linear" to other scales like log
// Optional max parameter can fix the upper bound of the graph
{
"name": "y",
"type": "linear",
"range": "height",
"domain": {"data": "pageviews","fields": ["views"]},
"clamp": true,
"nice": true
}
],
// Simple axis with horizontal grid lines
"axes": [
{
"orient": "bottom",
"scale": "x",
"tickCount": 5
},
{
"orient": "left",
"scale": "y",
"grid": true,
"tickCount": 5
}
],
// The graph is drawn with two elements a thick line at the top, and a semi-transparent area below
"marks": [
{
"type": "line",
"from": {"data": "pageviews"},
"encode": {
"enter": {
"x": {"scale": "x","field": "date"},
"y": {"scale": "y","field": "views"},
"stroke": {"value": "#36c"},
"strokeWidth": {"value": 3},
"interpolate": {"value": "monotone"}
}
}
},
{
"type": "area",
"from": {"data": "pageviews"},
"encode": {
"enter": {
"x": {"scale": "x","field": "date"},
"y": {"scale": "y","value": 0},
"y2": {"scale": "y","field": "views"},
"fill": {"value": "#36c"},
"fillOpacity": {"value": 0.35},
"interpolate": {"value": "monotone"}
}
}
}
],
"config": {
"axis": {
"labelColor": "#54595d",
"tickColor": "#54595d",
"tickWidth": 1.5,
"gridColor": "#a2a9b1",
"gridOpacity": 0.4,
"gridWidth": 2,
"domainWidth": 2
}
}
}
</graph>