Predloga:Tortni diagram/dok

This is a template that draws pie charts using a single image, a lot of (inline) CSS code generated by parser functions, and absolutely no JavaScript. Some details of how it works are given below.


The labels, values, and colors of up to 30 slices may be specified. All the parameters for six slices are included below; to include more slices, copy the code for one of the others, changing the digit at the end of each parameter name.

{{Pie chart
| thumb  = 
| radius = 
| caption= 
| footer = 
| label1 = 
| value1 = 
| color1 = 
| label2 = 
| value2 = 
| color2 = 
| label3 = 
| value3 = 
| color3 = 
| label4 = 
| value4 = 
| color4 = 
| label5 = 
| value5 = 
| color5 = 
| label6 = 
| value6 = 
| color6 = 
| other  = 
| other-color = 


<div style="border:solid transparent;position:absolute;width:100px;line-height:0;}}}
Circle frame.svg

Default colors

  #1F78B4 (7%)
  #33A02C (7%)
  #E31A1C (7%)
  #FF7F00 (7%)
  #6A3D9A (7%)
  #B15928 (7%)
  #A6CEE3 (7%)
  #B2DF8A (7%)
  #FB9A99 (7%)
  #FDBF6F (7%)
  #CAB2D6 (7%)
  #FFFF99 (7%)
  #FEEBE2 (7%)
  #A9A9A9 (7%)
  Drugo (2 %)
  • |thumb= specifies which side of the page the chart is floated to and defaults to right, as with image files. To make the chart appear on the left side of the page, specify |thumb=left.
  • |radius= specifies the radius of the pie chart in pixels. Do not include a "px" suffix. If omitted, it will default to 100.
  • |caption= specifies a string of text that appears on a line just before the legend.
  • |footer= specifies a string of text that appears below the legend.
  • |other=, if set equal to any visible string (even "0" or "no"), an "Other" item will appear in the legend, corresponding to the final slice that makes the values add up to 100. (If the total is already over 100, then the "Other" percentage will be negative.)
  • |other-color= can be used to override the default white color of the "Other" slice.
  • Each |labelN= is a string of text that appears in the legend entry for a slice. Omitting it will cause a legend entry to not be shown for that slice.
  • Each |valueN= is the percentage that the slice represents. Do not include the percent sign (e.g., for eighty percent, use the value "80", not "80%" or ".80"). Collectively, the values must add to 100 or less (in the latter case, a final slice completes the pie, whether |other= is specified or not). Also note that each value is shown in the legend exactly as written, without any rounding or other reformatting.
  • Each |colorN= is a CSS color code or name. If omitted, the default color palette seen in the pie chart to the right is used. If you need to graph more than 14 values (not counting the "Other" slice), then you should specify |color15= onwards in the template call.


  • Google Chrome and Safari do not appear to anti-alias borders, so the lines are a bit jagged. (For Chrome, this issue seems to be resolved, as of version 26.)
  • Due to how the graphing is implemented, it is not possible to save a copy of the chart using the browser's "Save Image" function (however, a screenshot can be taken).
  • If |other= is set, the final slice is always labeled as "Other" in the legend. This is not configurable. If you don't like that, just add to the template call another slice with the appropriate value (to sum to 100) and the desired label, and don't use |other=.
  • No labels can be put on the slices themselves.
  • The maximum number of slices that can be displayed is 30.
  • Currently the default colors used for slices 15 onwards are all the same as the default color of slice 14.
  • If the specified values add to 100 and |other= is set, the calculated percentage for that slice can sometimes turn out to be very strange (e.g., "1.4210854715202E-14%" instead of "0%")


The following code generates the pie chart shown at right. Note that the default chart size and colors are used, and the value of "1" for the "other" parameter is only used for its "truth value" as a visible string—i.e., to say, yes, we want an "Other" entry in the legend (the same chart would result if "0" were used).

Napaka v izrazu: Nepričakovano ločilo »{«.}}
Circle frame.svg
  One (42%)
  Two (32%)
  Three (12%)
  Four (3%)
  Five (2%)
  Six (1%)
  Drugo (8 %)
{{Pie chart
|value1 = 42
|label1 = One
|value2 = 32
|label2 = Two
|value3 = 12
|label3 = Three
|value4 = 3
|label4 = Four
|value5 = 2
|label5 = Five
|value6 = 1
|label6 = Six
|other = 1

Here's a more real-world example.

Napaka v izrazu: Nepričakovano ločilo »{«.}}
Circle frame.svg

Religion in the Czech Republic in 2001.

  Atheists and agnostics (59%)
  Catholics (26,8%)
  Protestants (2,5%)
  Drugo (11,7 %)
{{Pie chart
| caption= [[Religion in the Czech Republic]] in 2001.
| label1 = [[Atheist]]s and [[agnostic]]s
| value1 = 59
| color1 = darkgreen
| label2 = [[Catholic]]s
| value2 = 26,8
| color2 = brown
| label3 = [[Protestant]]s
| value3 = 2,5
| color3 = #08f
| other  = yes
| other-color = silver

How it worksUredi

This template uses a technique for drawing diagonal lines in CSS exploiting the fact that borders set on elements are miter joined. Thus, it is possible to set one border to an opaque color, with the others fully transparent, to form a diagonal line. The angle of the line can be controlled by adjusting the widths of two adjacent borders (one of them opaque) relative to each other.

Pie slices are drawn in clockwise order in a counterclockwise direction. These pie slices are positioned:

  • Inside a square element of (2 * radius)x(2 * radius) pixels
  • with border-radius: radiuspx for a circular shape
  • with a white (or other specified color) background visible in the empty space that occurs if the "other" slice is present
  • and with overflow: hidden; set.

This allows only the part of each slice that is inside the circle to be visible on the page.

Most of the code in {{Pie chart/slice}} is divided into five sections, the first four corresponding to quadrants of the circle and the last to cleanly cover the case in which one slice occupies 100% of the chart.

See alsoUredi

Formatted/colorized template source for Predloga:Tortni diagram

Napaka Lua v Modul:FormatTemplate v vrstici 94: attempt to index field '?' (a nil value).

Formatted/colorized template source for Predloga:Tortni diagram/rezina

<includeonly><div style="border:solid transparent;position:absolute;width:{{{radius|100}}}px;line-height:0;{{#switch:{{#expr:floor({{{2}}}/25)}} <!-- 0-25% -->
    |0= left:{{{radius|100}}}px; top:{{#expr:{{{radius|100}}}*(1-sin(pi/50*{{{2}}}))}}px; border-width:0 0 {{#expr:{{{radius|100}}}*sin(pi/50*{{{2}}})}}px {{#expr:{{{radius|100}}}*cos(pi/50*{{{2}}})}}px; border-bottom-color:{{{1}}} "></div> <!-- 25-50% -->
    |1= right:{{{radius|100}}}px; top:0; border-width:0 {{#expr:{{{radius|100}}}*tan(pi/50*({{{2}}}-25))}}px {{{radius|100}}}px 0; border-right-color:{{{1}}} "></div> <div style="position:absolute;line-height:0;border-style:solid;right:0;top:0;border-width:0 {{{radius|100}}}px {{{radius|100}}}px 0;border-color:{{{1}}}"></div> <!-- 50-75% -->
    |2= right:{{{radius|100}}}px; top:{{{radius|100}}}px; border-width:{{#expr:{{{radius|100}}}*sin(pi/50*({{{2}}}-50))}}px {{#expr:{{{radius|100}}}*cos(pi/50*({{{2}}}-50))}}px 0 0; border-top-color:{{{1}}} "></div> <div style="position:absolute;line-height:0;border-style:solid;left:0;top:0;border-width:0 {{#expr:2*{{{radius|100}}}}}px {{{radius|100}}}px 0;border-color:{{{1}}}"></div> <!-- 75%-100% -->
    |3= left:{{{radius|100}}}px; top:{{{radius|100}}}px; border-width:{{{radius|100}}}px 0 0 {{#expr:{{{radius|100}}}*tan(pi/50*({{{2}}}-25))}}px; border-left-color:{{{1}}} "></div> <div style="position:absolute;line-height:0;border-style:solid;left:0;top:0;border-width:0 {{#expr:2*{{{radius|100}}}}}px {{{radius|100}}}px 0;border-color:{{{1}}}"></div> <div style="position:absolute;line-height:0;border-style:solid;left:0;top:0;border-width:0 {{{radius|100}}}px {{#expr:2*{{{radius|100}}}}}px 0;border-color:{{{1}}}"></div> <!-- 100% -->
    |4= left:0; top:0; border-width:0 {{#expr:2*{{{radius|100}}}}}px {{#expr:2*{{{radius|100}}}}}px 0; border-color:{{{1}}} "></div> }}</includeonly><noinclude> {{dokumentacija}} <!-- Add categories and interwikis to the /doc subpage, not here! --> </noinclude>:

Formatted/colorized template source for Predloga:Legenda

<includeonly><div class="legend" style="-webkit-column-break-inside: avoid;page-break-inside: avoid;break-inside: avoid-column"><span class="legend-color" style="display:inline-block; width:1.5em; height:1.5em; margin:1px 0; border:{{{border|1px solid {{{outline|black}}}}}}; background-color:{{trim|{{{1|transparent}}}}}; color:{{{textcolor|black}}}; font-size:{{{size|100%}}}; text-align:center;">{{#if:{{{text|}}}
    |<span class="legend-text">{{{text}}}</span>
    | }}</span> {{{2|}}}</div></includeonly><noinclude> {{Documentation}} </noinclude>:

Formatted/colorized template source for Predloga:Trim

<includeonly>{{ {{{|safesubst:}}}#if:1|{{{x|{{{1|}}}}}}}}</includeonly><noinclude> {{Documentation}} </noinclude>: