TernaryListPlot
✖
TernaryListPlot
plots a list of points with specified u, v and w coordinates in a barycentric coordinate system.
Details and Options




- Ternary plots are also known as triangle plots or triaxial plots.
- Ternary plots are typically used to show relative proportions among three components in a whole, such as composition of soil in geology, elements in a mixture in chemistry or sources of calories in nutrition.
- Each point {ui,vi,wi} is normalized by using ui/ti, vi/ti and wi/ti, where ti=ui+vi+wi.
- Points with negative or nonreal coordinates will be taken as missing data.
- The transformation from the point {u,v,w} in barycentric coordinates to {x,y} in Cartesian coordinates is given by {x=v+
w, y=
w}.
- TernaryListPlot draws points inside an equilateral triangle, with the u, v and w coordinates corresponding respectively to the bottom, right and left edges.
- Coordinates ui, vi and wi can be given in the following forms:
-
ui a real-valued number Quantity[ui,unit] a quantity with a unit - Values that are not of the form shown previously are taken to be missing and are not shown.
- The datai have the following forms and interpretations:
-
<"k1"{u1,v1,w1},"k2"{u2,v2,w2},… > values {y1,y2,…} {{u1,v1,w1}"lbl1",{u1,v1,w1}"lbl2",…}, {{u1,v1,w1},{u1,v1,w1},…}{"lbl1","lbl2",…} values {y1,y2,…} with labels {lbl1,lbl2,…} SparseArray values as a normal array TimeSeries, EventSeries time-value pairs QuantityArray magnitudes NumericArray values as a normal array WeightedData unweighted values - TernaryListPlot[Tabular[…]cspec] extracts and plots values from the tabular object using the column specification cspec.
- The following forms of column specifications cspec are allowed for plotting tabular data:
-
{colu,colv,colw} plot the data from columns colu, colv and colw {{colu1,colv1,colw1},{colu2,colv2,colw2},…} plot columns colu1, colv1 and colw1 as a set, etc. - The following wrappers w can be used for the datai:
-
Annotation[datai,label] provide an annotation for the data Button[datai,action] define an action to execute when the data is clicked Callout[datai,label] label the data with a callout Callout[datai,label,pos] place the callout at relative position pos EventHandler[datai,…] define a general event handler for the data Hyperlink[datai,uri] make the data a hyperlink Labeled[datai,label] label the data Labeled[datai,label,pos] place the label at relative position pos Legended[datai,label] identify the data in a legend PopupWindow[datai,cont] attach a popup window to the data StatusArea[datai,label] display in the status area on mouseover Style[datai,styles] show the data using the specified styles Tooltip[datai,label] attach a tooltip to the data Tooltip[datai] use data values as tooltips - Wrappers w can be applied at multiple levels:
-
{…,w[{ui,vi,wi}],…} wrap the point {ui,vi,wi} w[datai] wrap the data w[{data1,…}] wrap a collection of datai w1[w2[…]] use nested wrappers - Callout, Labeled and Placed can use the following positions pos:
-
Automatic automatically placed labels Above positions above data or points Below positions below data or points Before positions before data or points After positions after data or points {pos,epos} epos in label placed at relative position pos of the data - TernaryListPlot has the same options as Graphics, with the following additions and changes: [List of all options]
-
AspectRatio Automatic ratio of width to height ColorFunction None how to determine the coloring of points ColorFunctionScaling True whether to scale arguments to ColorFunction Frame True whether to put a frame around the plot GridLines Automatic grid lines to draw GridLinesStyle {} how to style grid lines Joined False whether to join points LabelingFunction Automatic how to label points LabelingSize Automatic maximum size of callouts and labels PerformanceGoal $PerformanceGoal aspects of performance to try to optimize PlotLabel None overall label for the plot PlotLabels None labels for data PlotLegends None legends for data PlotMarkers None markers to use to indicate each point PlotRange Automatic range of values to include PlotStyle Automatic graphics directives to determine styles of points PlotTheme $PlotTheme overall theme for the plot TargetUnits Automatic units to display in the plot TernaryPlotCorners Automatic how to position the plot corners - The setting PlotRange{rangeu,rangev,rangew} uses the given ranges for each of the three axes. The ranges will be extended to ensure a whole triangle is shown.
- Options that apply to each coordinate dimension, such as Axes, Frame and GridLines, can take the following forms:
-
s use regular setting s for each dimension {su,sv,sw} use setting su for the u direction etc. - The setting GridLinesStyleAutomatic will inherit the style used by axes or frames to draw the corresponding grid lines.
- The arguments to ColorFunction are
,
and
. By default, they are scaled so that the smallest values are zero and the largest values are one.
- Setting ColorFunctionScalingFalse uses the unscaled, normalized values for the points.
- When using data with units, the units for all components must be compatible.
- TargetUnitsunit specifies what unit to use.
-
AlignmentPoint Center the default point in the graphic to align with AspectRatio Automatic ratio of width to height Axes False whether to draw axes AxesLabel None axes labels AxesOrigin Automatic where axes should cross AxesStyle {} style specifications for the axes Background None background color for the plot BaselinePosition Automatic how to align with a surrounding text baseline BaseStyle {} base style specifications for the graphic ColorFunction None how to determine the coloring of points ColorFunctionScaling True whether to scale arguments to ColorFunction ContentSelectable Automatic whether to allow contents to be selected CoordinatesToolOptions Automatic detailed behavior of the coordinates tool Epilog {} primitives rendered after the main plot FormatType TraditionalForm the default format type for text Frame True whether to put a frame around the plot FrameLabel None frame labels FrameStyle {} style specifications for the frame FrameTicks Automatic frame ticks FrameTicksStyle {} style specifications for frame ticks GridLines Automatic grid lines to draw GridLinesStyle {} how to style grid lines ImageMargins 0. the margins to leave around the graphic ImagePadding All what extra padding to allow for labels etc. ImageSize Automatic the absolute size at which to render the graphic Joined False whether to join points LabelingFunction Automatic how to label points LabelingSize Automatic maximum size of callouts and labels LabelStyle {} style specifications for labels Method Automatic details of graphics methods to use PerformanceGoal $PerformanceGoal aspects of performance to try to optimize PlotLabel None overall label for the plot PlotLabels None labels for data PlotLegends None legends for data PlotMarkers None markers to use to indicate each point PlotRange Automatic range of values to include PlotRangeClipping False whether to clip at the plot range PlotRangePadding Automatic how much to pad the range of values PlotRegion Automatic the final display region to be filled PlotStyle Automatic graphics directives to determine styles of points PlotTheme $PlotTheme overall theme for the plot PreserveImageOptions Automatic whether to preserve image options when displaying new versions of the same graphic Prolog {} primitives rendered before the main plot RotateLabel True whether to rotate y labels on the frame TargetUnits Automatic units to display in the plot TernaryPlotCorners Automatic how to position the plot corners Ticks Automatic axes ticks TicksStyle {} style specifications for axes ticks

List of all options




Examples
open allclose allBasic Examples (4)Summary of the most common use cases
Generate a ternary plot for a list of points whose values add up to 1:

https://wolfram.com/xid/0ixdyejje72vc2a-rgluza


https://wolfram.com/xid/0ixdyejje72vc2a-9stsxn


https://wolfram.com/xid/0ixdyejje72vc2a-1mxmjt

Use plot markers to identify different sets:

https://wolfram.com/xid/0ixdyejje72vc2a-dflzd6

Scope (35)Survey of the scope of standard use cases
General Data (5)
Plot sets corresponding to fixed fractions of the first element "A":

https://wolfram.com/xid/0ixdyejje72vc2a-0vfle9


https://wolfram.com/xid/0ixdyejje72vc2a-pw1na


https://wolfram.com/xid/0ixdyejje72vc2a-i5q5va

Plot sets corresponding to fixed ratios of the element "B" to "C":

https://wolfram.com/xid/0ixdyejje72vc2a-1kkjw0


https://wolfram.com/xid/0ixdyejje72vc2a-lzkdw9


https://wolfram.com/xid/0ixdyejje72vc2a-b7xpt

Each data point is independently normalized so the elements sum to 1:

https://wolfram.com/xid/0ixdyejje72vc2a-yj1e8p


https://wolfram.com/xid/0ixdyejje72vc2a-pbal9m


https://wolfram.com/xid/0ixdyejje72vc2a-vi24dp


https://wolfram.com/xid/0ixdyejje72vc2a-zxubzj


https://wolfram.com/xid/0ixdyejje72vc2a-0zh7qo

Nonreal and negative data is taken to be missing:

https://wolfram.com/xid/0ixdyejje72vc2a-bpbb2q


https://wolfram.com/xid/0ixdyejje72vc2a-zsntla

Multiple datasets are styled differently:

https://wolfram.com/xid/0ixdyejje72vc2a-6628q8

Tabular Data (1)
Get tabular data about grams of certain nutrients per 100 grams of different foods:

https://wolfram.com/xid/0ixdyejje72vc2a-cxnvul

Plot a TernaryListPlot with grams of fat, protein and carbohydrates per each food:

https://wolfram.com/xid/0ixdyejje72vc2a-jvoexk

Use PivotToColumns to create columns of fat, carbs and protein per food type:

https://wolfram.com/xid/0ixdyejje72vc2a-dn1edd

Plot fats, proteins and carbs for each type of food:

https://wolfram.com/xid/0ixdyejje72vc2a-dajsof

Special Data (4)

https://wolfram.com/xid/0ixdyejje72vc2a-reimob

https://wolfram.com/xid/0ixdyejje72vc2a-o7saum

Specify the desired target units:

https://wolfram.com/xid/0ixdyejje72vc2a-u4m2ah


https://wolfram.com/xid/0ixdyejje72vc2a-35kvht

Specify strings to use as labels:

https://wolfram.com/xid/0ixdyejje72vc2a-f7qtlp

Specify a location for labels:

https://wolfram.com/xid/0ixdyejje72vc2a-elltnt

Data Wrappers (5)
Use wrappers on individual data, datasets or collections of datasets:

https://wolfram.com/xid/0ixdyejje72vc2a-znv2w8


https://wolfram.com/xid/0ixdyejje72vc2a-k9e6kd


https://wolfram.com/xid/0ixdyejje72vc2a-mjhrpz

Set a Style for each dataset:

https://wolfram.com/xid/0ixdyejje72vc2a-hal3j8


https://wolfram.com/xid/0ixdyejje72vc2a-6opxg0

Labeling and Legending (12)

https://wolfram.com/xid/0ixdyejje72vc2a-g0rqbu


https://wolfram.com/xid/0ixdyejje72vc2a-8g59j2

Label data with Labeled:

https://wolfram.com/xid/0ixdyejje72vc2a-g1qihr

Label data with PlotLabels:

https://wolfram.com/xid/0ixdyejje72vc2a-82o0aj

Label data with Callout:

https://wolfram.com/xid/0ixdyejje72vc2a-zola5j

Use Placed to control label positions:

https://wolfram.com/xid/0ixdyejje72vc2a-572osb

https://wolfram.com/xid/0ixdyejje72vc2a-1vxhlr

Label points at automatically optimized positions:

https://wolfram.com/xid/0ixdyejje72vc2a-ji64kq

https://wolfram.com/xid/0ixdyejje72vc2a-dr9gq0

Specify PlotLegends for each dataset:

https://wolfram.com/xid/0ixdyejje72vc2a-17twzf

Specify the maximum size of labels:

https://wolfram.com/xid/0ixdyejje72vc2a-6djdco

https://wolfram.com/xid/0ixdyejje72vc2a-f8xlw1


https://wolfram.com/xid/0ixdyejje72vc2a-cwg3m9

For dense sets of points, some labels may be turned into tooltips by default:

https://wolfram.com/xid/0ixdyejje72vc2a-o4137g

https://wolfram.com/xid/0ixdyejje72vc2a-1usbmj

Increasing the size of the plot will show more labels:

https://wolfram.com/xid/0ixdyejje72vc2a-4pybdi

Include legends for each dataset:

https://wolfram.com/xid/0ixdyejje72vc2a-tcaohx

Use Legended to provide a legend to a specific dataset:

https://wolfram.com/xid/0ixdyejje72vc2a-fergyt

https://wolfram.com/xid/0ixdyejje72vc2a-y3lbxw

Use Placed to change the legend location:

https://wolfram.com/xid/0ixdyejje72vc2a-2n4ok9

Use association keys as labels:

https://wolfram.com/xid/0ixdyejje72vc2a-ou2cdm

Presentation (8)
Multiple sets are automatically colored to be distinct:

https://wolfram.com/xid/0ixdyejje72vc2a-i807jr

https://wolfram.com/xid/0ixdyejje72vc2a-4jyov5

Provide explicit styling to different sets:

https://wolfram.com/xid/0ixdyejje72vc2a-3mikdq

Color points with ColorFunction:

https://wolfram.com/xid/0ixdyejje72vc2a-m10cmf

https://wolfram.com/xid/0ixdyejje72vc2a-2r79iy


https://wolfram.com/xid/0ixdyejje72vc2a-obulu9

Color by bottom, right and left coordinates:

https://wolfram.com/xid/0ixdyejje72vc2a-5nv87v


https://wolfram.com/xid/0ixdyejje72vc2a-95mx5


https://wolfram.com/xid/0ixdyejje72vc2a-uvrpp9


https://wolfram.com/xid/0ixdyejje72vc2a-093nvm

https://wolfram.com/xid/0ixdyejje72vc2a-39az5f

Style datasets or collections of datasets:

https://wolfram.com/xid/0ixdyejje72vc2a-z1vxn7

https://wolfram.com/xid/0ixdyejje72vc2a-dkdyld


https://wolfram.com/xid/0ixdyejje72vc2a-q5eqn


https://wolfram.com/xid/0ixdyejje72vc2a-b3i76u

https://wolfram.com/xid/0ixdyejje72vc2a-vfq23v

Set FrameTicksStyle:

https://wolfram.com/xid/0ixdyejje72vc2a-733pxo


https://wolfram.com/xid/0ixdyejje72vc2a-k3cuas


https://wolfram.com/xid/0ixdyejje72vc2a-31rnph

Show axes and set the frame off to show the 0% lines:

https://wolfram.com/xid/0ixdyejje72vc2a-onx1p

Options (36)Common values & functionality for each option
Axes (1)
Background (1)
ColorFunction (3)
Color points by the x direction value:

https://wolfram.com/xid/0ixdyejje72vc2a-lmyk69

https://wolfram.com/xid/0ixdyejje72vc2a-fry767


https://wolfram.com/xid/0ixdyejje72vc2a-b0rz7o

Color by bottom, right and left coordinates:

https://wolfram.com/xid/0ixdyejje72vc2a-pevjgv

https://wolfram.com/xid/0ixdyejje72vc2a-u1f88w

ColorFunction overrides PlotStyle:

https://wolfram.com/xid/0ixdyejje72vc2a-1n4r3s

https://wolfram.com/xid/0ixdyejje72vc2a-bclw93

ColorFunctionScaling (2)
Use ColorFunctionScaling False to get an unscaled value:

https://wolfram.com/xid/0ixdyejje72vc2a-nqizr7

ColorFunctionScaling by default is True:

https://wolfram.com/xid/0ixdyejje72vc2a-ko75uq

Frame (1)

https://wolfram.com/xid/0ixdyejje72vc2a-ntjt4m

https://wolfram.com/xid/0ixdyejje72vc2a-i05fq7


https://wolfram.com/xid/0ixdyejje72vc2a-8f6kt0


https://wolfram.com/xid/0ixdyejje72vc2a-lg7odl

Show the 0% lines when the frame is off:

https://wolfram.com/xid/0ixdyejje72vc2a-2jwwfq

FrameLabel (1)
FrameStyle (1)

https://wolfram.com/xid/0ixdyejje72vc2a-fj0faz

https://wolfram.com/xid/0ixdyejje72vc2a-c34rnh

Automatic GridLinesStyle are inherited from FrameStyle:

https://wolfram.com/xid/0ixdyejje72vc2a-zydep


https://wolfram.com/xid/0ixdyejje72vc2a-uh5j9y

FrameTicks (1)
FrameTicksStyle (1)
GridLines (2)

https://wolfram.com/xid/0ixdyejje72vc2a-6hscd5

https://wolfram.com/xid/0ixdyejje72vc2a-9g99s4


https://wolfram.com/xid/0ixdyejje72vc2a-r22bx6

Draw grid lines at specific positions:

https://wolfram.com/xid/0ixdyejje72vc2a-t4pkga

https://wolfram.com/xid/0ixdyejje72vc2a-lon9mx


https://wolfram.com/xid/0ixdyejje72vc2a-2qnlpi


https://wolfram.com/xid/0ixdyejje72vc2a-7icrlw

GridLines overrides GridLinesStyle:

https://wolfram.com/xid/0ixdyejje72vc2a-ntidqq

GridLinesStyle (1)
Joined (2)
Method (5)

https://wolfram.com/xid/0ixdyejje72vc2a-ki13ml


https://wolfram.com/xid/0ixdyejje72vc2a-s0jd6j

Use highlighting for axes and frames:

https://wolfram.com/xid/0ixdyejje72vc2a-wim367

Change the background color of the area with data:

https://wolfram.com/xid/0ixdyejje72vc2a-u9xmax

The backdrop area is associated with PlotRange:

https://wolfram.com/xid/0ixdyejje72vc2a-w64lnb

PlotLabels (3)
Label points at automatically optimized positions:

https://wolfram.com/xid/0ixdyejje72vc2a-6p5uwt

Use Placed to control label positions:

https://wolfram.com/xid/0ixdyejje72vc2a-e9c74o

https://wolfram.com/xid/0ixdyejje72vc2a-c6b9jy


https://wolfram.com/xid/0ixdyejje72vc2a-lppqr5

https://wolfram.com/xid/0ixdyejje72vc2a-zq2h35

PlotLegends (1)
Show Automatic legends for different datasets:

https://wolfram.com/xid/0ixdyejje72vc2a-u7xavt

https://wolfram.com/xid/0ixdyejje72vc2a-6u5viy

https://wolfram.com/xid/0ixdyejje72vc2a-ubbbyy

Specify legends for each dataset:

https://wolfram.com/xid/0ixdyejje72vc2a-9f9rf2

Specify legends for each dataset using PlotMarkers:

https://wolfram.com/xid/0ixdyejje72vc2a-koz7r1

PlotMarkers (3)
Use a default sequence of shapes to distinguish datasets:

https://wolfram.com/xid/0ixdyejje72vc2a-t40zl4


https://wolfram.com/xid/0ixdyejje72vc2a-wlglyy

Use text or typeset labels to distinguish datasets:

https://wolfram.com/xid/0ixdyejje72vc2a-lftcwp


https://wolfram.com/xid/0ixdyejje72vc2a-5ci9uj

Use any graphic to distinguish datasets:

https://wolfram.com/xid/0ixdyejje72vc2a-yucnf3

Control font sizes for text markers:

https://wolfram.com/xid/0ixdyejje72vc2a-gnm2by

Control sizes for graphics markers relative to the plot:

https://wolfram.com/xid/0ixdyejje72vc2a-lay2y0

Control absolute sizes for graphics markers:

https://wolfram.com/xid/0ixdyejje72vc2a-1t4aty

Use preset names to control graphics marker size:

https://wolfram.com/xid/0ixdyejje72vc2a-d07diw

PlotRange (1)
PlotStyle (3)
TargetUnits (1)
TernaryPlotCorners (1)
By default, the plot corners are positioned anticlockwise:

https://wolfram.com/xid/0ixdyejje72vc2a-dp40tj

https://wolfram.com/xid/0ixdyejje72vc2a-qudjj1

Position the plot corners clockwise:

https://wolfram.com/xid/0ixdyejje72vc2a-x8yrus

Place the corners at given coordinates:

https://wolfram.com/xid/0ixdyejje72vc2a-xirl4n

Applications (7)Sample problems that can be solved with this function
Geology (2)
Agriculture (2)
Other (3)
Show the sources of electricity for countries around the world:

https://wolfram.com/xid/0ixdyejje72vc2a-9plip4

Show the fraction of child, adult and elderly populations around the world:

https://wolfram.com/xid/0ixdyejje72vc2a-xn8xua

Show the fractions of fat, carbohydrates and proteins in a variety of foods:

https://wolfram.com/xid/0ixdyejje72vc2a-bv5ymh

Wolfram Research (2022), TernaryListPlot, Wolfram Language function, https://reference.wolfram.com/language/ref/TernaryListPlot.html (updated 2025).
Text
Wolfram Research (2022), TernaryListPlot, Wolfram Language function, https://reference.wolfram.com/language/ref/TernaryListPlot.html (updated 2025).
Wolfram Research (2022), TernaryListPlot, Wolfram Language function, https://reference.wolfram.com/language/ref/TernaryListPlot.html (updated 2025).
CMS
Wolfram Language. 2022. "TernaryListPlot." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2025. https://reference.wolfram.com/language/ref/TernaryListPlot.html.
Wolfram Language. 2022. "TernaryListPlot." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2025. https://reference.wolfram.com/language/ref/TernaryListPlot.html.
APA
Wolfram Language. (2022). TernaryListPlot. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/TernaryListPlot.html
Wolfram Language. (2022). TernaryListPlot. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/TernaryListPlot.html
BibTeX
@misc{reference.wolfram_2025_ternarylistplot, author="Wolfram Research", title="{TernaryListPlot}", year="2025", howpublished="\url{https://reference.wolfram.com/language/ref/TernaryListPlot.html}", note=[Accessed: 30-April-2025
]}
BibLaTeX
@online{reference.wolfram_2025_ternarylistplot, organization={Wolfram Research}, title={TernaryListPlot}, year={2025}, url={https://reference.wolfram.com/language/ref/TernaryListPlot.html}, note=[Accessed: 30-April-2025
]}