---
title: "ListPlot"
language: "en"
type: "Symbol"
summary: "ListPlot[{y1, ..., yn}] plots regularly spaced points {i, yi}. ListPlot[{{x1, y1}, ..., {xn, yn}}] generates a scatter plot with points {xi, yi}. ListPlot[{data1, data2, ...}] plots points from all the datai. ListPlot[{..., w[datai, ...], ...}] plots datai with features defined by the symbolic wrapper w."
keywords: 
- point plot
- scatter plot
- 2D scatter plot
- plotting discrete data
- plotting time series data
- plotting sampled data
- plotting imported data
- stem plot
- sequence plot
- scaled list plot
- reverse list plot
- reciprocal list plot
- PLOT
- listplot
- pointplot
- scatter
- stem
canonical_url: "https://reference.wolfram.com/language/ref/ListPlot.html"
source: "Wolfram Language Documentation"
related_guides: 
  - 
    title: "Data Visualization"
    link: "https://reference.wolfram.com/language/guide/DataVisualization.en.md"
  - 
    title: "GPU Computing"
    link: "https://reference.wolfram.com/language/guide/GPUComputing.en.md"
  - 
    title: "Numbers with Uncertainty"
    link: "https://reference.wolfram.com/language/guide/NumbersWithUncertainty.en.md"
  - 
    title: "Tabular Visualization"
    link: "https://reference.wolfram.com/language/guide/TabularVisualization.en.md"
  - 
    title: "Discrete Calculus"
    link: "https://reference.wolfram.com/language/guide/DiscreteCalculus.en.md"
  - 
    title: "Charting and Information Visualization"
    link: "https://reference.wolfram.com/language/guide/ChartingAndInformationVisualization.en.md"
  - 
    title: "Scientific Data Analysis"
    link: "https://reference.wolfram.com/language/guide/ScientificDataAnalysis.en.md"
  - 
    title: "Tabular Processing Overview"
    link: "https://reference.wolfram.com/language/guide/TabularProcessing.en.md"
  - 
    title: "Tabular Communication"
    link: "https://reference.wolfram.com/language/guide/TabularCommunication.en.md"
  - 
    title: "Signal Visualization & Analysis"
    link: "https://reference.wolfram.com/language/guide/SignalAnalysis.en.md"
  - 
    title: "Handling Arrays of Data"
    link: "https://reference.wolfram.com/language/guide/HandlingArraysOfData.en.md"
  - 
    title: "Statistical Visualization"
    link: "https://reference.wolfram.com/language/guide/StatisticalVisualization.en.md"
  - 
    title: "Numerical Data"
    link: "https://reference.wolfram.com/language/guide/NumericalData.en.md"
  - 
    title: "Financial Visualization"
    link: "https://reference.wolfram.com/language/guide/FinancialVisualization.en.md"
  - 
    title: "Function Visualization"
    link: "https://reference.wolfram.com/language/guide/FunctionVisualization.en.md"
  - 
    title: "Associations"
    link: "https://reference.wolfram.com/language/guide/Associations.en.md"
  - 
    title: "Spatial Point Collections"
    link: "https://reference.wolfram.com/language/guide/SpatialPointCollections.en.md"
  - 
    title: "Probability & Statistics with Quantities"
    link: "https://reference.wolfram.com/language/guide/ProbabilityWithQuantities.en.md"
  - 
    title: "Audio Representation"
    link: "https://reference.wolfram.com/language/guide/AudioRepresentation.en.md"
related_workflows: 
  - 
    title: "Change the Style of Points in a 2D Scatter Plot"
    link: "https://reference.wolfram.com/language/workflow/ChangeTheStyleOfPointsInA2DScatterPlot.en.md"
related_functions: 
  - 
    title: "ListLinePlot"
    link: "https://reference.wolfram.com/language/ref/ListLinePlot.en.md"
  - 
    title: "DiscretePlot"
    link: "https://reference.wolfram.com/language/ref/DiscretePlot.en.md"
  - 
    title: "Plot"
    link: "https://reference.wolfram.com/language/ref/Plot.en.md"
  - 
    title: "ListLogPlot"
    link: "https://reference.wolfram.com/language/ref/ListLogPlot.en.md"
  - 
    title: "DateListPlot"
    link: "https://reference.wolfram.com/language/ref/DateListPlot.en.md"
  - 
    title: "ListPolarPlot"
    link: "https://reference.wolfram.com/language/ref/ListPolarPlot.en.md"
  - 
    title: "StackedListPlot"
    link: "https://reference.wolfram.com/language/ref/StackedListPlot.en.md"
  - 
    title: "ListPointPlot3D"
    link: "https://reference.wolfram.com/language/ref/ListPointPlot3D.en.md"
  - 
    title: "ListLinePlot3D"
    link: "https://reference.wolfram.com/language/ref/ListLinePlot3D.en.md"
  - 
    title: "ListPlot3D"
    link: "https://reference.wolfram.com/language/ref/ListPlot3D.en.md"
  - 
    title: "NumberLinePlot"
    link: "https://reference.wolfram.com/language/ref/NumberLinePlot.en.md"
  - 
    title: "Graphics"
    link: "https://reference.wolfram.com/language/ref/Graphics.en.md"
  - 
    title: "Point"
    link: "https://reference.wolfram.com/language/ref/Point.en.md"
  - 
    title: "Fit"
    link: "https://reference.wolfram.com/language/ref/Fit.en.md"
related_tutorials: 
  - 
    title: "Plotting Lists of Data"
    link: "https://reference.wolfram.com/language/tutorial/GraphicsAndSound.en.md#11224"
---
# ListPlot

ListPlot[{y1, …, yn}] plots regularly spaced points {i, yi}.

ListPlot[{{x1, y1}, …, {xn, yn}}] generates a scatter plot with points {xi, yi}.

ListPlot[{data1, data2, …}] plots points from all the datai.

ListPlot[{…, w[datai, …], …}] plots datai with features defined by the symbolic wrapper w.

## Details and Options

* ``ListPlot`` is also known as a scatter plot or point plot when given a list of heights ``yi``.

* Regular data ``{y1, …, yn}`` is plotted as the points ``{i, yi}``.

* Irregular data ``{{x1, y1}, …, {xn, yn}}`` is plotted as points ``{xi, yi}``.

[image]

* Data values ``xi`` and ``yi`` can be given in the following forms:

|                        |                               |
| ---------------------- | ----------------------------- |
| xi                     | a real-valued number          |
| Quantity[xi, unit]     | a quantity with a unit        |
| Around[xi, ei]         | value xi with uncertainty ei  |
| Interval[{xmin, xmax}] | values between xmin and xmax  |

* Values ``xi`` and ``yi`` that are not of the form above are taken to be missing and are not shown.

* The ``datai`` have the following forms and interpretations:

<\|"Subscript[k, 1]"->Subscript[y, 1],"Subscript[k, 2]"->Subscript[y, 2],\[Ellipsis]\|>	values {Subscript[y, 1],Subscript[y, 2],\[Ellipsis]}
      	<\|Subscript[x, 1]->Subscript[y, 1],Subscript[x, 2]->Subscript[y, 2],\[Ellipsis]\|>	key-value pairs {{Subscript[x, 1],Subscript[y, 1]},{Subscript[x, 2],Subscript[y, 2]},\[Ellipsis]}
      	{Subscript[y, 1]->"Subscript[lbl, 1]",Subscript[y, 2]->"Subscript[lbl, 2]",\[Ellipsis]}, {Subscript[y, 1],Subscript[y, 2],\[Ellipsis]}->{"Subscript[lbl, 1]","Subscript[lbl, 2]",\[Ellipsis]}	values {Subscript[y, 1],Subscript[y, 2],\[Ellipsis]} with labels {Subscript[lbl, 1],Subscript[lbl, 2],\[Ellipsis]}
      	SparseArray	values as a normal array
      	TimeSeries, EventSeries	time-value pairs
      	QuantityArray	magnitudes
      	WeightedData	unweighted values

* ``ListPlot[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:

|                                     |                                                    |
| ----------------------------------- | -------------------------------------------------- |
| {colx, coly}                        | plot column y against column x                     |
| {{colx1, coly1}, {colx2, coly2}, …} | plot column y1 against column x1, y2 against x2, … |
| coly, {coly}                        | plot column y as a sequence of values              |
| {{coly1}, …, {colyi}, …}            | plot columns y1, y2, … as sequences of values      |

* The ``colx`` can also be ``Automatic``, in which case, sequential values are generated using ``DataRange``.

* 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            |
| Highlighted[datai, effect]              | dynamically highlight fi with an effect                |
| Highlighted[datai, Placed[effect, pos]] | statically highlight fi with an effect at position pos |
| 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[yi], …}       | wrap the value yi in data  |
| {…, w[{xi, yi}], …} | wrap the point {xi, yi}    |
| 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                               |
| [image] | Above       | positions above data or point                             |
| [image] | Below       | positions below data or point                             |
| [image] | Before      | positions before data or point                            |
| [image] | After       | positions after data or point                             |
| [image] | {pos, epos} | epos in label placed at relative position pos of the data |

* ``ListPlot`` has the same options as ``Graphics``, with the following additions and changes:  []

|                       |                     |                                                    |
| :-------------------- | :------------------ | :------------------------------------------------- |
| AspectRatio           | 1 / GoldenRatio     | ratio of height to width                           |
| Axes                  | True                | whether to draw axes                               |
| DataRange             | Automatic           | the range of x values to assume for data           |
| IntervalMarkers       | Automatic           | how to render uncertainty                          |
| IntervalMarkersStyle  | Automatic           | style for uncertainty elements                     |
| Filling               | None                | how to fill in stems for each point                |
| FillingStyle          | Automatic           | style to use for filling                           |
| Joined                | False               | whether to join points                             |
| LabelingFunction      | Automatic           | how to label points                                |
| LabelingSize          | Automatic           | maximum size of callouts and labels                |
| LabelingTarget        | Automatic           | how to determine automatic label positions         |
| MultiaxisArrangement  | None                | how to arrange multiple axes for data              |
| PerformanceGoal       | \$PerformanceGoal   | aspects of performance to try to optimize          |
| PlotFit               | None                | how to fit a curve to the points                   |
| PlotFitElements       | Automatic           | fitted elements to show in the plot                |
| PlotHighlighting      | Automatic           | highlighting effect for curves                     |
| PlotInteractivity     | \$PlotInteractivity | whether to allow interactive elements              |
| PlotLabel             | None                | overall label for the plot                         |
| PlotLabels            | None                | labels for data                                    |
| PlotLayout            | "Overlaid"          | how to position data                               |
| PlotLegends           | None                | legends for data                                   |
| PlotMarkers           | None                | markers to use to indicate each point              |
| PlotRange             | Automatic           | range of values to include                         |
| PlotRangeClipping     | True                | whether to clip at the plot range                  |
| PlotStyle             | Automatic           | graphics directives to determine styles of points  |
| PlotTheme             | \$PlotTheme         | overall theme for the plot                         |
| ScalingFunctions      | None                | how to scale individual coordinates                |
| TargetUnits           | Automatic           | units to display in the plot                       |

* ``DataRange`` determines how values ``{y1, …, yn}`` are interpreted into ``{{x1, y1}, …, {xn, yn}}``. Possible settings include:

|                |                           |
| -------------- | ------------------------- |
| Automatic, All | uniform from 1 to n       |
| {xmin, xmax}   | uniform from xmin to xmax |

* In general a list of pairs ``{{x1, y1}, {x2, y2}, …}`` is interpreted as a list of points, but the setting ``DataRange -> All`` forces it to be interpreted as multiple ``datai`` ``{{y11, y12}, {y21, y23}, …}``.  »

* ``LabelingFunction -> f`` specifies that each point should have a label given by ``f[value, index, lbls]``, where ``value`` is the value associated with the point, ``index`` is its position in the ``data``, and ``lbls`` is the list of relevant labels.

* Possible settings for ``PlotLayout`` that show multiple curves in a single plot panel include:

|         |              |                                   |
| ------- | ------------ | --------------------------------- |
| [image] | "Overlaid"   | show all the data overlapping     |
| [image] | "Stacked"    | accumulate the data               |
| [image] | "Percentile" | accumulate and normalize the data |

* Possible settings for ``PlotLayout`` that show single curves in multiple plot panels include:

|                                       |                                          |
| ------------------------------------- | ---------------------------------------- |
| "Column"                              | use separate plots in a column of panels |
| "Row"                                 | use separate plots in a row of panels    |
| {"Column", k}, {"Row", k}             | use k columns or rows                    |
| {"Column", UpTo[k]}, {"Row", UpTo[k]} | use at most k columns or rows            |

[image]

* Possible highlighting effects for ``Highlighted`` and ``PlotHighlighting`` include:

|         |                     |                                                                            |
| ------- | ------------------- | -------------------------------------------------------------------------- |
| [image] | style               | highlight the indicated data                                               |
| [image] | "Ball"              | highlight and label the indicated point in data                            |
| [image] | "Dropline"          | highlight and label the indicated point in data with droplines to the axes |
| [image] | "XSlice"            | highlight and label all points along a vertical slice                      |
| [image] | "YSlice"            | highlight and label all points along a horizontal slice                    |
| [image] | Placed[effect, pos] | statically highlight the given position pos                                |

* Highlight position specifications ``pos`` include:

|                 |                                              |
| --------------- | -------------------------------------------- |
| x, {x}          | effect at {x, y} with y chosen automatically |
| {x, y}          | effect at {x, y}                             |
| {pos1, pos2, …} | multiple positions posi                      |

* Typical settings for ``PlotLegends`` include:

|                  |                                    |
| ---------------- | ---------------------------------- |
| None             | no legend                          |
| Automatic        | automatically determine legend     |
| {lbl1, lbl2, …}  | use lbl1, lbl2, … as legend labels |
| Placed[lspec, …] | specify placement for legend       |

* ``ColorData["DefaultPlotColors"]`` gives the default sequence of colors used by ``PlotStyle``.

* ``ScalingFunctions -> "scale"`` scales the $y$ coordinate; ``ScalingFunctions -> {"scalex", "scaley"}`` scales both the $x$ and $y$ coordinates.

### List of all options

|                        |                     |                                                                                    |
| ---------------------- | ------------------- | ---------------------------------------------------------------------------------- |
| AlignmentPoint         | Center              | the default point in the graphic to align with                                     |
| AspectRatio            | 1 / GoldenRatio     | ratio of height to width                                                           |
| Axes                   | True                | 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                                          |
| ContentSelectable      | Automatic           | whether to allow contents to be selected                                           |
| CoordinatesToolOptions | Automatic           | detailed behavior of the coordinates tool                                          |
| DataRange              | Automatic           | the range of x values to assume for data                                           |
| Epilog                 | {}                  | primitives rendered after the main plot                                            |
| Filling                | None                | how to fill in stems for each point                                                |
| FillingStyle           | Automatic           | style to use for filling                                                           |
| FormatType             | TraditionalForm     | the default format type for text                                                   |
| Frame                  | False               | 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              | None                | grid lines to draw                                                                 |
| GridLinesStyle         | {}                  | style specifications for 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                                   |
| IntervalMarkers        | Automatic           | how to render uncertainty                                                          |
| IntervalMarkersStyle   | Automatic           | style for uncertainty elements                                                     |
| Joined                 | False               | whether to join points                                                             |
| LabelingFunction       | Automatic           | how to label points                                                                |
| LabelingSize           | Automatic           | maximum size of callouts and labels                                                |
| LabelingTarget         | Automatic           | how to determine automatic label positions                                         |
| LabelStyle             | {}                  | style specifications for labels                                                    |
| Method                 | Automatic           | details of graphics methods to use                                                 |
| MultiaxisArrangement   | None                | how to arrange multiple axes for data                                              |
| PerformanceGoal        | \$PerformanceGoal   | aspects of performance to try to optimize                                          |
| PlotFit                | None                | how to fit a curve to the points                                                   |
| PlotFitElements        | Automatic           | fitted elements to show in the plot                                                |
| PlotHighlighting       | Automatic           | highlighting effect for curves                                                     |
| PlotInteractivity      | \$PlotInteractivity | whether to allow interactive elements                                              |
| PlotLabel              | None                | overall label for the plot                                                         |
| PlotLabels             | None                | labels for data                                                                    |
| PlotLayout             | "Overlaid"          | how to position data                                                               |
| PlotLegends            | None                | legends for data                                                                   |
| PlotMarkers            | None                | markers to use to indicate each point                                              |
| PlotRange              | Automatic           | range of values to include                                                         |
| PlotRangeClipping      | True                | 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                                            |
| ScalingFunctions       | None                | how to scale individual coordinates                                                |
| TargetUnits            | Automatic           | units to display in the plot                                                       |
| Ticks                  | Automatic           | axes ticks                                                                         |
| TicksStyle             | {}                  | style specifications for axes ticks                                                |

---

## Examples (262)

### Basic Examples (7)

Plot a list of $y$ values:

```wl
In[1]:= ListPlot[Prime[Range[25]]]

Out[1]= [image]
```

---

Plot a list of $x$, $y$ pairs:

```wl
In[1]:= ListPlot[RandomVariate[BinormalDistribution[{4, 4}, {1, 1}, 0.5], 750]]

Out[1]= [image]
```

---

Plot several ``datai`` with a legend:

```wl
In[1]:= ListPlot[Table[{k, PDF[BinomialDistribution[50, p], k]}, {p, {0.3, 0.5, 0.8}}, {k, 0, 50}], Filling -> Axis, PlotLegends -> {0.3, 0.5, 0.8}]

Out[1]= [image]
```

---

Label each point:

```wl
In[1]:= ListPlot[Labeled[#, #]& /@ Table[Prime[n], {n, 10}], PlotStyle -> PointSize[Medium]]

Out[1]= [image]
```

---

Label each ``datai`` :

```wl
In[1]:= ListPlot[{Labeled[Sqrt[Range[40]], "sqrt"], Labeled[Log[Range[40, 80]], "log"]}]

Out[1]= [image]
```

---

Plot multiple datasets in a row of panels:

```wl
In[1]:= ListPlot[{Labeled[Sqrt[Range[40]], "sqrt"], Labeled[Log[Range[40, 80]], "log"]}, PlotLayout -> "Row"]

Out[1]= [image]
```

---

Use individual colors for each point:

```wl
In[1]:= ListPlot[Table[Style[{Cos[t], Sin[2t]}, Hue[t / (2Pi)]], {t, 0, 2Pi, Pi / 20}], PlotStyle -> PointSize[Medium]]

Out[1]= [image]
```

### Scope (60)

#### General Data (11)

For regular data consisting of $y$ values, the $x$ data range is taken to be integer values:

```wl
In[1]:= ListPlot[Sqrt[Range[40]]]

Out[1]= [image]
```

---

Provide an explicit $x$ data range by using ``DataRange``:

```wl
In[1]:= ListPlot[Sqrt[Range[40]], DataRange -> {0, 1}]

Out[1]= [image]
```

---

Plot multiple sets of regular data:

```wl
In[1]:= ListPlot[{Sqrt[Range[40]], Log[Range[40, 80]]}]

Out[1]= [image]
```

---

Include units with the data:

```wl
In[1]:= ListPlot[Quantity[Sqrt[Range[10]], "Meters"]]

Out[1]= [image]
```

---

For irregular data consisting of $\{x,y\}$ value pairs, the $x$ data range is inferred from data:

```wl
In[1]:= data = Last[Reap[NIntegrate[Sin[x] ^ 2, {x, 0, 2Pi}, EvaluationMonitor :> Sow[{x, Sin[x] ^ 2}]]]];

In[2]:= ListPlot[data]

Out[2]= [image]
```

---

Plot multiple sets of irregular data:

```wl
In[1]:=
data1 = Table[{x, Sin[x]}, {x, RandomReal[2Pi, 50]}];
data2 = Table[{x, Cos[x]}, {x, RandomReal[2Pi, 250]}];

In[2]:= ListPlot[{data1, data2}]

Out[2]= [image]
```

---

Plot multiple sets of data, regular or irregular, using ``DataRange`` to map them to the same $x$ range:

```wl
In[1]:=
data1 = Table[Sin[x], {x, 0, 2Pi, 0.1}];
data2 = Table[{x, Cos[x]}, {x, RandomReal[2Pi, 100]}];

In[2]:= ListPlot[{data1, data2}, DataRange -> {0, 2Pi}]

Out[2]= [image]
```

---

Ranges where the data is nonreal are excluded:

```wl
In[1]:= ListPlot[{1, 1 + I, 3, None, 5, 6, Missing["NotAvailable"], 8, 9}]

Out[1]= [image]

In[2]:= ListPlot[Sqrt[Sin[Range[0, 3Pi, 0.1]]]]

Out[2]= [image]
```

---

Use ``MaxPlotPoints`` to limit the number of points used:

```wl
In[1]:= Table[ListPlot[Table[Sin[2Pi n / 10], {n, 100}], MaxPlotPoints -> mp, Joined -> True], {mp, {Infinity, 50, 30}}]

Out[1]= {[image], [image], [image]}
```

---

``PlotRange`` is selected automatically:

```wl
In[1]:= {ListPlot[{2 ^ Range[15], Fibonacci[Range[15]]}], ListPlot[{2 ^ Range[15], Fibonacci[Range[15]]}, PlotRange -> All]}

Out[1]= {[image], [image]}

In[2]:= {ListPlot[{0, 1, 2, 3, 100, 5, 6, 7}], ListPlot[{0, 1, 2, 3, 100, 5, 6, 7}, PlotRange -> All]}

Out[2]= {[image], [image]}
```

Use ``PlotRange`` to focus on areas of interest:

```wl
In[3]:= {ListPlot[Table[x ^ 4 - x ^ 2 + 1, {x, -2, 2, 0.1}]], ListPlot[Table[x ^ 4 - x ^ 2 + 1, {x, -2, 2, 0.1}], PlotRange -> {0, 2}]}

Out[3]= {[image], [image]}
```

---

Use ``ScalingFunctions`` to scale the axes:

```wl
In[1]:= ListPlot[Factorial[Range[20]], ScalingFunctions -> "Log"]

Out[1]= [image]
```

#### Tabular Data (1)

Get tabular data:

```wl
In[1]:= tabular = Tabular[ResourceData["Sample Data: Fisher's Irises"]]

Out[1]=
Tabular[Association["RawSchema" -> Association["ColumnProperties" -> 
     Association["Species" -> Association["ElementType" -> "String"], 
      "SepalLength" -> Association["ElementType" -> TypeSpecifier["Quantity"]["Real64", 
          "Centime ...     Quantity[2.3, "Centimeters"], Quantity[2.5, "Centimeters"], Quantity[2.3, 
             "Centimeters"], Quantity[1.9, "Centimeters"], Quantity[2., "Centimeters"], 
            Quantity[2.3, "Centimeters"], Quantity[1.8, "Centimeters"]}]]}}]]]]
```

Plot sepal widths against sepal lengths:

```wl
In[2]:= ListPlot[tabular -> {"SepalLength", "SepalWidth"}]

Out[2]= [image]
```

Use ``PivotToColumns`` to create columns of sepal length for each species:

```wl
In[3]:= pivot = PivotToColumns[tabular, "Species" -> "PetalLength"]

Out[3]=
Tabular[Association["RawSchema" -> Association["ColumnProperties" -> 
     Association["SepalLength" -> Association["ElementType" -> TypeSpecifier["Quantity"]["Real64", 
          "Centimeters"]], "SepalWidth" -> Association["ElementType" -> TypeSp ... , None}}, 
            DataStructure["BitVector", {"Data" -> ByteArray["AAAAAAAAAAAAAAAA8P///////w=="], 
              "Capacity" -> 150, "BitCount" -> 50}]}, "ElementType" -> TypeSpecifier["Quantity"][
            "Real64", "Centimeters"]]]}}]]]]
```

Plot petal length against width for each of the species of iris:

```wl
In[4]:= ListPlot[pivot -> {{"PetalWidth", ExtendedKey["PetalLength", "setosa"]}, {"PetalWidth", ExtendedKey["PetalLength", "versicolor"]}, {"PetalWidth", ExtendedKey["PetalLength", "virginica"]}}]

Out[4]= [image]
```

Use abbreviated names for extended keys when the elements are unique:

```wl
In[5]:= ListPlot[pivot -> {{"PetalWidth", "setosa"}, {"PetalWidth", "versicolor"}, {"PetalWidth", "virginica"}}]

Out[5]= [image]
```

Create a dot plot of petal lengths for each species:

```wl
In[6]:= ListPlot[tabular -> {"Species", "PetalLength"}, ScalingFunctions -> {NominalScale[Automatic], None}]

Out[6]= [image]
```

#### Special Data (9)

Use ``Quantity`` to include units with the data:

```wl
In[1]:= ListPlot[Quantity[Sqrt[Range[10]], "Meters"], AxesLabel -> Automatic]

Out[1]= [image]
```

Include different units for the ``x`` and ``y`` coordinates:

```wl
In[2]:= data = EntityValue[EntityClass["Element", All], {"AtomicMass", "MeltingPoint"}];

In[3]:= ListPlot[data, AxesLabel -> Automatic]

Out[3]= [image]
```

---

Plot data in a ``QuantityArray`` :

```wl
In[1]:= data = QuantityArray[EntityValue[EntityClass["Element", All], {"AtomicMass", "MeltingPoint"}]]

Out[1]=
QuantityArray[StructuredArray`StructuredData[{118, 2}, 
  {{{1.008`4., -259.14`5.}, {4.002602`7., Missing["NotApplicable"]}, {6.94`3., 180.54`5.}, 
    {9.0121831`8., 1287.`4.}, {10.81`4., 2075.`4.}, {12.011`5., 3550.`4.}, {14.007`5., -210.1`4.}, 
 ... nlessUnit"}, 
    {"AtomicMassUnit", "DimensionlessUnit"}, {"AtomicMassUnit", "DimensionlessUnit"}, 
    {"AtomicMassUnit", "DimensionlessUnit"}, {"AtomicMassUnit", "DimensionlessUnit"}, 
    {"AtomicMassUnit", "DimensionlessUnit"}}, {{1}, {2}}}]]

In[2]:= ListPlot[data, AxesLabel -> Automatic]

Out[2]= [image]
```

Specify the units used with ``TargetUnits`` :

```wl
In[3]:= ListPlot[data, TargetUnits -> {Automatic, "Kelvin"}, AxesLabel -> Automatic]

Out[3]= [image]
```

---

Plot data with uncertainty:

```wl
In[1]:= ListPlot[Table[Around[RandomReal[5], RandomReal[0.5]], 20]]

Out[1]= [image]
```

Use intervals:

```wl
In[2]:= ListPlot[Table[Interval[RandomReal[5] + {-0.5, 0.5}], 20]]

Out[2]= [image]
```

---

Specify strings to use as labels:

```wl
In[1]:= ListPlot[{2 -> "a", 3 -> "b", 5 -> "c", 7 -> "d", 11 -> "e", 13 -> "f", 17 -> "g"}]

Out[1]= [image]

In[2]:= ListPlot[{2, 3, 5, 7, 11, 13, 17} -> {"a", "b", "c", "d", "e", "f", "g"}]

Out[2]= [image]
```

---

Specify a location for labels:

```wl
In[1]:= ListPlot[{2, 3, 5, 7, 11, 13, 17} -> {"a", "b", "c", "d", "e", "f", "g"}, LabelingFunction -> Above]

Out[1]= [image]
```

---

Numeric values in an ``Association`` are used as the $y$ coordinates:

```wl
In[1]:= ListPlot[<|"a" -> 2, "b" -> 3, "c" -> 5, "d" -> 7, "e" -> 11, "f" -> 13|>]

Out[1]= [image]
```

Numeric keys and values in an ``Association`` are used as the $x$ and $y$ coordinates:

```wl
In[2]:= ListPlot[<|2 -> 1, 3 -> 2, 5 -> 3, 7 -> 4, 11 -> 5, 13 -> 6|>]

Out[2]= [image]
```

---

Plot ``TimeSeries`` directly with automatic date ticks:

```wl
In[1]:= data = CountryData["UnitedStates", {{"Population"}, {1988, 2013}}]

Out[1]=
TemporalData[TimeSeries, 
 {{QuantityArray[StructuredArray`StructuredData[{26}, 
     {{247372258, 249725809, 252120309, 254539371, 256990608, 259532130, 262241204, 265163741, 
       268335008, 271713634, 275175309, 278548148, 281710914, 284607992 ...  
  {TemporalData`DateSpecification[{1988, 1, 1, 0, 0, 0}, {2013, 1, 1, 0, 0, 0}, {1, "Year"}]}, 1, 
  {"Continuous", 1}, {"Discrete", 1}, 1, 
  {ResamplingMethod -> {"Interpolation", InterpolationOrder -> 1}, ValueDimensions -> 1}}, True, 
 13.2]

In[2]:= ListPlot[data, AxesLabel -> Automatic]

Out[2]= [image]
```

---

Plot data in a ``SparseArray`` :

```wl
In[1]:= ListPlot[SparseArray[Table[Prime[i] -> 1, {i, 25}]]]

Out[1]= [image]
```

---

The weights in ``WeightedData`` are ignored:

```wl
In[1]:= ListPlot[WeightedData[{2, 3, 5, 7, 11, 13, 17, 19, 23, 29}, {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}]]

Out[1]= [image]
```

#### Data Wrappers (6)

Use wrappers on individual data, datasets, or collections of datasets:

```wl
In[1]:= {ListPlot[{{1, Style[2, Red], 3}, {4, 5, 6}}, PlotStyle -> PointSize[0.05]], ListPlot[{Style[{1, 2, 3}, Green], {4, 5, 6}}, PlotStyle -> PointSize[0.05]], ListPlot[Style[{{1, 2, 3}, {4, 5, 6}}, Blue], PlotStyle -> PointSize[0.05]]}

Out[1]= {[image], [image], [image]}
```

---

Wrappers can be nested:

```wl
In[1]:= {ListPlot[{{1, Style[2, Red], 3}, {4, 5, 6}}, PlotStyle -> PointSize[0.05]], ListPlot[{Style[{1, Style[2, Red], 3}, Green], {4, 5, 6}}, PlotStyle -> PointSize[0.05]], ListPlot[Style[{Style[{1, Style[2, Red], 3}, Green], {4, 5, 6}}, Blue], PlotStyle -> PointSize[0.05]]}

Out[1]= {[image], [image], [image]}
```

---

Use the value of each point as a tooltip:

```wl
In[1]:= ListPlot[Tooltip[Prime[Range[100]]]]

Out[1]= [image]
```

Use a specific label for all the points:

```wl
In[2]:= ListPlot[Tooltip[Prime[Range[100]], "primes"]]

Out[2]= [image]
```

---

Labels points with automatically positioned text:

```wl
In[1]:= ListPlot[Table[Labeled[RandomReal[1, 2], i], {i, 20}], PlotStyle -> PointSize[Medium], ImageSize -> 300]

Out[1]= [image]
```

---

Use ``PopupWindow`` to provide additional drilldown information:

```wl
In[1]:= ListPlot[{1, PopupWindow[2, DateListPlot[FinancialData["IBM", "Jan. 1, 2004"]]], 3}, PlotStyle -> PointSize[0.05]]

Out[1]= [image]
```

---

``Button`` can be used to trigger any action:

```wl
In[1]:= ListPlot[{1, Button[2, Speak[2]], 3}, PlotStyle -> PointSize[0.05]]

Out[1]= [image]
```

#### Labeling and Legending (16)

Label points with automatically positioned text:

```wl
In[1]:= ListPlot[Table[Labeled[RandomReal[1, 2], i], {i, 20}]]

Out[1]= [image]
```

Place the labels relative to the points:

```wl
In[2]:= Table[ListPlot[Table[Labeled[RandomReal[1, 2], i, p], {i, 5}], PlotLabel -> p], {p, {Above, Below, Before, After}}]

Out[2]= {[image], [image], [image], [image]}
```

---

Label data with ``Labeled`` :

```wl
In[1]:= data = Table[Table[{x, f}, {x, 0, 2Pi, 0.1}], {f, {Sin[x], Sin[2x]}}];

In[2]:= ListPlot[MapThread[Labeled[#1, #2]&, {data, {Sin[x], Sin[2x]}}]]

Out[2]= [image]
```

---

Label data with ``PlotLabels`` :

```wl
In[1]:= data = Table[Table[{x, f}, {x, 0, 2Pi, 0.1}], {f, {Sin[x], Sin[2x]}}];

In[2]:= ListPlot[data, PlotLabels -> {Sin[x], Sin[2x]}]

Out[2]= [image]
```

---

Place the label near the points at a ``x`` value:

```wl
In[1]:= ListPlot[Labeled[Table[{x, Sin[x]}, {x, 0, 2Pi, 0.1}], "sin(x)", 3]]

Out[1]= [image]
```

---

Use a scaled position:

```wl
In[1]:= ListPlot[Labeled[Table[{x, Sin[x]}, {x, 0, 2Pi, 0.1}], "sin(x)", Scaled[0.25]]]

Out[1]= [image]
```

Specify the text position relative to the point:

```wl
In[2]:= ListPlot[Labeled[Table[{x, Sin[x]}, {x, 0, 2Pi, 0.1}], Sin[x], {Scaled[0.25], Above}]]

Out[2]= [image]
```

---

Label data automatically with ``Callout`` :

```wl
In[1]:= ListPlot[{Callout[Table[PartitionsQ[n], {n, 18}], PartitionsQ[n]], Callout[Table[n, {n, 18}], n]}]

Out[1]= [image]
```

---

Place a label with a specific location:

```wl
In[1]:= ListPlot[Callout[Table[n ^ Sin[n], {n, 1, 10, 0.25}], "label", Above]]

Out[1]= [image]

In[2]:= ListPlot[Callout[Table[n ^ Sin[n], {n, 1, 10, 0.25}], "label", 5]]

Out[2]= [image]
```

---

Specify label names with ``LabelingFunction`` :

```wl
In[1]:= ListPlot[Prime[Range[10]], LabelingFunction -> (#1 &)]

Out[1]= [image]
```

---

Specify the maximum size of labels:

```wl
In[1]:= data = Table[Labeled[Prime[i], RandomWord[]], {i, 10}];

In[2]:= ListPlot[data, LabelingSize -> 30]

Out[2]= [image]
```

Use the full label:

```wl
In[3]:= ListPlot[data, LabelingSize -> Full]

Out[3]= [image]
```

---

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

```wl
In[1]:= data = Table[Callout[RandomReal[1, 2], i], {i, 100}];

In[2]:= ListPlot[data]

Out[2]= [image]
```

Increasing the size of the plot will show more labels:

```wl
In[3]:= ListPlot[data, ImageSize -> 400]

Out[3]= [image]
```

---

Include legends for each curve:

```wl
In[1]:= data = Table[Table[{x, f}, {x, 0, 2Pi, 0.1}], {f, {Sin[x], Sin[2x]}}];

In[2]:= ListPlot[data, PlotLegends -> {Sin[x], Sin[2x]}]

Out[2]= [image]
```

---

Use ``Legended`` to provide a legend for a specific dataset:

```wl
In[1]:=
upper = RandomReal[{1.5, 2}, 50];
lower = RandomReal[0.5, 50];

In[2]:= ListPlot[{lower, Legended[Mean[{lower, upper}], "average"], upper}]

Out[2]= [image]
```

Use ``Placed`` to change the legend location:

```wl
In[3]:= ListPlot[{lower, Legended[Mean[{lower, upper}], Placed["average", Below]], upper}]

Out[3]= [image]
```

---

Use association keys as labels:

```wl
In[1]:= ListPlot[<|"fibonacci" -> Fibonacci[Range[10]], "primes" -> Prime[Range[10]]|>, PlotLabels -> Automatic, PlotLegends -> None]

Out[1]= [image]
```

---

Plots usually have interactive callouts showing the coordinates when you mouse over them:

```wl
In[1]:= ListPlot[{...}]

Out[1]= [image]
```

Including specific wrappers or interactions, such as tooltips, turns off the interactive features:

```wl
In[2]:= ListPlot[Callout[{...}, "hello", 13]]

Out[2]= [image]
```

---

Choose from multiple interactive highlighting effects:

```wl
In[1]:= {ListPlot[{{...}, {...}}, PlotHighlighting -> "Dropline"], ListPlot[{{...}, {...}}, PlotHighlighting -> "XSlice"]}

Out[1]= {[image], [image]}
```

---

Use ``Highlighted`` to emphasize specific points in a plot:

```wl
In[1]:= ListPlot[Highlighted[{...}, Placed["Ball", 7]]]

Out[1]= [image]
```

Highlight multiple points:

```wl
In[2]:= ListPlot[Highlighted[{...}, Placed["Ball", {{7}, {17}}]]]

Out[2]= [image]
```

#### Presentation (17)

Multiple datasets are automatically colored to be distinct:

```wl
In[1]:= data = Table[Table[{x, f}, {x, 0, 2Pi, 0.1}], {f, {Sin[x], Sin[2x]}}];

In[2]:= ListPlot[data]

Out[2]= [image]
```

---

Provide explicit styling to different sets:

```wl
In[1]:= data = Table[Table[{x, f}, {x, 0, 2Pi, 0.1}], {f, {Sin[x], Sin[2x]}}];

In[2]:= ListPlot[data, PlotStyle -> {Blue, Red}]

Out[2]= [image]
```

---

Use a plot theme:

```wl
In[1]:= ListPlot[Table[{Sin[3t + Pi / 2], Sin[t]}, {t, 0, 2Pi, .05}], PlotTheme -> "Marketing", AspectRatio -> 1]

Out[1]= [image]
```

---

Label data with ``Callout`` :

```wl
In[1]:= ListPlot[Table[Callout[Table[{x, f}, {x, 0, 2Pi, 0.1}], f], {f, {Sin[x], Sin[2x]}}]]

Out[1]= [image]
```

---

Include legends for each curve:

```wl
In[1]:= data = Table[Table[{x, f}, {x, 0, 2Pi, 0.1}], {f, {Sin[x], Sin[2x]}}];

In[2]:= ListPlot[data, PlotLegends -> {Sin[x], Sin[2x]}]

Out[2]= [image]
```

---

Use ``Legended`` to provide a legend for a specific dataset:

```wl
In[1]:=
upper = RandomReal[{1.5, 2}, 50];
lower = RandomReal[0.5, 50];

In[2]:= ListPlot[{lower, Legended[Mean[{lower, upper}], "average"], upper}]

Out[2]= [image]
```

---

Add labels:

```wl
In[1]:= ListPlot[Table[{k, Binomial[15, k]}, {k, 0, 15}], AxesLabel -> {k, None}, PlotLabel -> Binomial[15, k], PlotStyle -> Directive[PointSize[Medium], Purple]]

Out[1]= [image]
```

---

Provide an interactive ``Tooltip`` for the data:

```wl
In[1]:= ListPlot[Tooltip[Table[If[PrimeQ[x], Tooltip[x, Row[{"prime: ", x}]], x], {x, 1, 25}]], PlotStyle -> Directive[PointSize[Medium], Orange]]

Out[1]= [image]

In[2]:= ListPlot[{Tooltip[(3 / 2) ^ Range[15], TraditionalForm[(3 / 2) ^ k]], Tooltip[Fibonacci[Range[15]], TraditionalForm[Fibonacci[k]]]}, PlotStyle -> PointSize[Medium]]

Out[2]= [image]
```

---

Create filled plots:

```wl
In[1]:= ListPlot[{Table[Sin[x], {x, 0, 2Pi, 0.1}], Table[Sinc[x], {x, 0, 2Pi, 0.1}]}, Filling -> {1 -> {2}}, FillingStyle -> {Red, Blue}]

Out[1]= [image]
```

---

Use shapes to distinguish different datasets:

```wl
In[1]:= ListPlot[{{1, 2, 3, 5, 8}, {2, 3, 6, 9, 10}, {4, 5, 7, 10, 12}}, PlotMarkers -> Automatic]

Out[1]= [image]
```

---

Use labels to distinguish different datasets:

```wl
In[1]:= ListPlot[{{1, 2, 3, 5, 8}, {2, 3, 6, 9, 10}, {4, 5, 7, 10, 12}}, PlotMarkers -> {"1", "2", "3"}]

Out[1]= [image]
```

---

Use ``Joined`` to connect datasets with lines:

```wl
In[1]:= ListPlot[{1, 2, 4, 7, 3, 5, 8, 10, 9}, Joined -> True, PlotStyle -> Orange]

Out[1]= [image]
```

---

Use ``InterpolationOrder`` to smooth joined data:

```wl
In[1]:= Table[ListPlot[{1, 2, 4, 7, 3, 5, 8, 10, 9}, Joined -> True, InterpolationOrder -> io, PlotStyle -> Dashed], {io, {0, 1, 2, 3}}]

Out[1]= {[image], [image], [image], [image]}
```

---

Show multiple sets in a row of separate panels:

```wl
In[1]:= ListPlot[{IconizedObject[«[image]»], IconizedObject[«[image]»]}, PlotLayout -> "Row", AspectRatio -> 1, PlotStyle -> AbsolutePointSize[2]]

Out[1]= [image]
```

Use a column instead of a row:

```wl
In[2]:= ListPlot[{IconizedObject[«[image]»], IconizedObject[«[image]»]}, PlotLayout -> "Column", AspectRatio -> 1, PlotStyle -> AbsolutePointSize[2]]

Out[2]= [image]
```

Use multiple rows or columns:

```wl
In[3]:= ListPlot[{IconizedObject[«[image]»], IconizedObject[«[image]»], IconizedObject[«[image]»], IconizedObject[«[image]»]}, PlotLayout -> {"Row", 2}, AspectRatio -> 1, PlotStyle -> AbsolutePointSize[2]]

Out[3]= [image]
```

---

Plot the data in a stacked layout:

```wl
In[1]:= data = {{10, 9, 4, 3, 5, 3, 5, 5, 2, 6}, {2, 10, 5, 6, 9, 4, 9, 3, 7, 2}, {7, 8, 3, 4, 4, 2, 6, 3, 8, 7}};

In[2]:= ListPlot[data, PlotLayout -> "Stacked", Joined -> True]

Out[2]= [image]
```

Plot the data as percentiles of the total of the values:

```wl
In[3]:= ListPlot[data, PlotLayout -> "Percentile", Joined -> True]

Out[3]= [image]
```

---

Use different axes for the different items:

```wl
In[1]:= ListPlot[{Prime[Range[10]], Range[10] ^ 2}, MultiaxisArrangement -> All]

Out[1]= [image]
```

---

Specify where the axes should be placed:

```wl
In[1]:= ListPlot[{Range[10], Prime[Range[10]], Range[10] ^ 2}, MultiaxisArrangement -> {Right -> {1, 2}, Left -> 3}]

Out[1]= [image]
```

Place shared axes as well:

```wl
In[2]:= ListPlot[{Range[10], Prime[Range[10]], Range[10] ^ 2}, MultiaxisArrangement -> {Right -> {{1, 2}}, Left -> 3}]

Out[2]= [image]
```

### Options (172)

#### ClippingStyle (6)

``ClippingStyle`` requires at least one dataset to be ``Joined`` :

```wl
In[1]:= {ListPlot[Table[{x, Sin[x] / x ^ 2}, {x, -10, 10, 0.2}], ClippingStyle -> Red], ListPlot[Table[{x, Sin[x] / x ^ 2}, {x, -10, 10, 0.2}], ClippingStyle -> Red, Joined -> True]}//Quiet

Out[1]= {[image], [image]}
```

---

Omit clipped regions of the plot:

```wl
In[1]:= ListPlot[Table[{x, Sin[x] / x ^ 2}, {x, -10, 10, 0.2}], Joined -> True, Joined -> True, ClippingStyle -> None]//Quiet

Out[1]= [image]
```

---

Show clipped regions like the rest of the curve:

```wl
In[1]:= ListPlot[Table[{x, Sin[x] / x ^ 2}, {x, -10, 10, 0.2}], Joined -> True, ClippingStyle -> Automatic, PlotStyle -> Thick]//Quiet

Out[1]= [image]
```

---

Show clipped regions with red lines:

```wl
In[1]:= ListPlot[Table[{x, Sin[x] / x ^ 2}, {x, -10, 10, 0.2}], Joined -> True, ClippingStyle -> Red]//Quiet

Out[1]= [image]
```

---

Show clipped regions as red at the bottom and thick at the top:

```wl
In[1]:= ListPlot[Table[{x, Sin[x] / x ^ 2}, {x, -10, 10, 0.2}], Joined -> True, ClippingStyle -> {Red, Thick}]//Quiet

Out[1]= [image]
```

---

Show clipped regions as red and thick:

```wl
In[1]:= ListPlot[Table[{x, Sin[x] / x ^ 2}, {x, -10, 10, 0.2}], Joined -> True, ClippingStyle -> Directive[Red, Thick]]//Quiet

Out[1]= [image]
```

#### ColorFunction (6)

Use a color function to color points by their values:

```wl
In[1]:= ListPlot[Sinc[Range[0, 10, 0.2]], ColorFunction -> "Rainbow"]

Out[1]= [image]
```

---

Color by scaled $x$ and $y$ coordinates:

```wl
In[1]:= Table[ListPlot[Sinc[Range[0, 10, 0.2]], ColorFunction -> f, PlotLabel -> f[x, y], PlotStyle -> Thick], {f, {Hue[#]&, Hue[#2]&}}]

Out[1]= {[image], [image]}
```

---

Color with a named color scheme:

```wl
In[1]:= ListPlot[Sinc[Range[0, 10, 0.2]], ColorFunction -> "DarkRainbow"]

Out[1]= [image]
```

---

Fill with the color used for the curve:

```wl
In[1]:= ListPlot[Sinc[Range[0, 10, 0.1]], ColorFunction -> Function[{x, y}, Hue[x]], Filling -> Axis]

Out[1]= [image]

In[2]:= ListPlot[Array[Prime, 100], Joined -> True, ColorFunction -> Function[{x, y}, Blend[{Yellow, Red}, x]], Filling -> Axis]

Out[2]= [image]
```

---

``ColorFunction`` has higher priority than ``PlotStyle`` for coloring the curve:

```wl
In[1]:= ListPlot[Sinc[Range[0, 10, 0.1]], Joined -> True, ColorFunction -> "DarkRainbow", PlotStyle -> Directive[Red, Thick]]

Out[1]= [image]
```

---

Use ``Automatic`` in ``MeshShading`` to use ``ColorFunction`` :

```wl
In[1]:= ListPlot[Sin[Range[0, 10, 0.1]], Joined -> True, ColorFunction -> "Rainbow", PlotStyle -> Directive[Red, Thick], Mesh -> 10, MeshShading -> {Automatic, Black}, MeshStyle -> None]

Out[1]= [image]
```

#### ColorFunctionScaling (2)

Color the line based on the scaled $y$ value:

```wl
In[1]:= ListPlot[Table[x ^ 2Exp[-x ^ 2], {x, -5, 5, 0.1}], Joined -> True, ColorFunction -> Function[{x, y}, Hue[y]], PlotStyle -> Thick, ColorFunctionScaling -> True]

Out[1]= [image]
```

---

Color the line based on the unscaled $y$ value:

```wl
In[1]:= ListPlot[Table[x ^ 2Exp[-x ^ 2], {x, -5, 5, 0.1}], Joined -> True, ColorFunction -> Function[{x, y}, Hue[y]], PlotStyle -> Thick, ColorFunctionScaling -> False]

Out[1]= [image]
```

#### DataRange (5)

Lists of height values are displayed against the number of elements:

```wl
In[1]:= ListPlot[Table[Sin[x], {x, 0, 2Pi, 0.1}]]

Out[1]= [image]
```

---

Rescale to the sampling space:

```wl
In[1]:= ListPlot[Table[Sin[x], {x, 0, 2Pi, 0.1}], DataRange -> {0, 2Pi}]

Out[1]= [image]
```

---

Each dataset is scaled to the same domain:

```wl
In[1]:= ListPlot[{Sqrt[Range[1, 20]], Log[Range[10, 40]]}, DataRange -> {1, 5}]

Out[1]= [image]
```

---

Pairs are interpreted as $x$, $y$ coordinates:

```wl
In[1]:= ListPlot[Table[{i + 10, i}, {i, 25}], AxesOrigin -> {0, 0}]

Out[1]= [image]
```

Specifying ``DataRange`` in this case has no effect, since $x$ values are part of the data:

```wl
In[2]:= ListPlot[Table[{i + 10, i}, {i, 25}], AxesOrigin -> {0, 0}, DataRange -> {0, 1}]

Out[2]= [image]
```

---

Force interpretation as multiple datasets:

```wl
In[1]:= ListPlot[{{1, 1}, {2, 2}, {3, 3}}, DataRange -> All, AxesOrigin -> {0, 0}, Joined -> True]

Out[1]= [image]
```

#### Filling (8)

Use symbolic or explicit values for "stem" filling:

```wl
In[1]:= Table[ListPlot[Table[Prime[n], {n, 30}], Filling -> c], {c, {Top, Bottom, Axis, Prime[15]}}]

Out[1]= {[image], [image], [image], [image]}
```

---

Fill between corresponding points in two datasets:

```wl
In[1]:= ListPlot[{Range[20], Table[Prime[n], {n, 20}]}, Filling -> {1 -> {2}}]

Out[1]= [image]
```

---

Fill between datasets using a particular style:

```wl
In[1]:= ListPlot[{Range[20], Table[Prime[n], {n, 20}]}, Filling -> {1 -> {{2}, Directive[Orange, Dashed]}}]

Out[1]= [image]
```

---

Fill between datasets 1 and 2; use red when 1 is less than 2 and blue otherwise:

```wl
In[1]:=
data1 = Sqrt[Range[40]] - 2;
data2 = Log[Range[40]];

In[2]:= ListPlot[{data1, data2}, Filling -> {1 -> {{2}, {Red, Blue}}}]

Out[2]= [image]
```

---

Fill to the axis for irregularly sampled data:

```wl
In[1]:= data = Last[Reap[Plot[Sin[x], {x, 0, 2Pi}, EvaluationMonitor :> Sow[{x, Sin[x]}]]]];

In[2]:= ListPlot[data, Filling -> Axis]

Out[2]= [image]
```

---

Use several irregular datasets; filling between them will use the first as the reference:

```wl
In[1]:=
data1 = First@Last[Reap[Plot[Sin[x], {x, 0, 2Pi}, EvaluationMonitor :> Sow[{x, Sin[x]}]]]];
data2 = First@Last[Reap[Plot[Cos[x], {x, 0, 2Pi}, EvaluationMonitor :> Sow[{x, Cos[x]}]]]];

In[2]:= ListPlot[{Sort@data1, Sort@data2}, Filling -> {1 -> {2}}]

Out[2]= [image]
```

---

``Joined`` datasets fill with solid areas:

```wl
In[1]:= ListPlot[{Range[20], Table[{n + 1 / 2, Prime[n]}, {n, 20}]}, Filling -> {1 -> {2}}, Joined -> True]

Out[1]= [image]
```

---

The type of filling depends on whether the first set is joined:

```wl
In[1]:= Table[ListPlot[{Range[20], Range[20] / 2}, Joined -> {True, False}, Filling -> f, PlotLabel -> f], {f, {1 -> {2}, 2 -> {1}}}]

Out[1]= {[image], [image]}
```

#### FillingStyle (4)

Fill with blue "stems":

```wl
In[1]:= ListPlot[Table[Prime[n], {n, 20}], Filling -> Axis, FillingStyle -> Blue]

Out[1]= [image]
```

---

Fill with dashed magenta "stems":

```wl
In[1]:= ListPlot[Table[Prime[n], {n, 20}], Filling -> Axis, FillingStyle -> Directive[Magenta, Dashed]]

Out[1]= [image]
```

---

Fill with red below the axis, and with blue above:

```wl
In[1]:= ListPlot[Table[{x, Sin[x]}, {x, 0, 2Pi, 0.2}], Filling -> Axis, FillingStyle -> {Red, Blue}]

Out[1]= [image]
```

---

Filling is solid when ``Joined -> True``:

```wl
In[1]:= ListPlot[Table[{x, Sin[x]}, {x, 0, 2Pi, 0.2}], Filling -> Axis, Joined -> True]

Out[1]= [image]
```

#### Frame (3)

Draw a frame around the plot:

```wl
In[1]:= ListPlot[Table[ Sin[x], {x, 0, 2 Pi, Pi / 30}], Frame -> True]

Out[1]= [image]
```

---

Draw a frame on the left and right edges:

```wl
In[1]:= ListPlot[Table[ Sin[x], {x, 0, 2 Pi, Pi / 30}], Frame -> {{True, True}, {False, False}}]

Out[1]= [image]
```

---

Draw a frame on the left and bottom edges:

```wl
In[1]:= ListPlot[Table[ Sin[x], {x, 0, 2 Pi, Pi / 30}], Frame -> {{True, False}, {True, False}}]

Out[1]= [image]
```

#### FrameLabel (4)

Place a label along the bottom frame of a plot:

```wl
In[1]:= ListPlot[Table[ Sin[x], {x, 0, 2 Pi, Pi / 30}], Frame -> True, FrameLabel -> {"label"}]

Out[1]= [image]
```

---

Frame labels are placed on the bottom and left frame edges by default:

```wl
In[1]:= ListPlot[Table[ Sin[x], {x, 0, 2 Pi, Pi / 30}], Frame -> True, FrameLabel -> {"bottom", "left"}]

Out[1]= [image]
```

---

Place labels on each of the edges in the frame:

```wl
In[1]:= ListPlot[Table[ Sin[x], {x, 0, 2 Pi, Pi / 30}], Frame -> True, FrameLabel -> {{"left", "right"}, {"bottom", "top"}}]

Out[1]= [image]
```

---

Use a customized style for both labels & frame tick labels:

```wl
In[1]:= ListPlot[Table[ Sin[x], {x, 0, 2 Pi, Pi / 30}], Frame -> True, FrameLabel -> {{x, x2}, {y, y2}}, LabelStyle -> Directive[Bold, Black]]

Out[1]= [image]
```

#### FrameStyle (2)

Specify the style of the frame:

```wl
In[1]:= ListPlot[Table[ Sin[x], {x, 0, 2 Pi, Pi / 30}], Frame -> True, FrameStyle -> Directive[Black, Thick]]

Out[1]= [image]
```

---

Specify the style for each frame edge:

```wl
In[1]:= ListPlot[Table[ Sin[x], {x, 0, 2 Pi, Pi / 30}], Frame -> True, FrameStyle -> {{Directive[Black, Thick], Red}, {Directive[Gray, Thick], Blue}}]

Out[1]= [image]
```

#### FrameTicks (9)

Frame ticks are placed automatically by default:

```wl
In[1]:= ListPlot[Table[ Sin[x], {x, 0, 2 Pi, Pi / 30}], Frame -> True]

Out[1]= [image]
```

---

Use a frame with no ticks:

```wl
In[1]:= ListPlot[Table[ Sin[x], {x, 0, 2 Pi, Pi / 30}], Frame -> True, FrameTicks -> None]

Out[1]= [image]
```

---

Use frame ticks on the bottom edge:

```wl
In[1]:= ListPlot[Table[ Sin[x], {x, 0, 2 Pi, Pi / 180}], Frame -> True, FrameTicks -> {{None, None}, {Automatic, None}}]

Out[1]= [image]
```

---

By default, the top and right edges have tick marks but no tick labels:

```wl
In[1]:= ListPlot[Table[ Sin[x], {x, 0, 2 Pi, Pi / 180}], Frame -> True, FrameTicks -> Automatic]

Out[1]= [image]
```

Use ``All`` to include tick labels on all edges:

```wl
In[2]:= ListPlot[Table[ Sin[x], {x, 0, 2 Pi, Pi / 180}], Frame -> True, FrameTicks -> All]

Out[2]= [image]
```

---

Place tick marks at specific positions:

```wl
In[1]:= ListPlot[Table[ Sin[x], {x, 0, 2 Pi, Pi / 180}], Frame -> True, FrameTicks -> {{{-1, 0, 1}, {-1, 0, 1}}, {{0, 180, 360 }, {0, 180, 360 }}}]

Out[1]= [image]
```

---

Draw frame tick marks at specified positions with specific labels:

```wl
In[1]:= ListPlot[Table[ Sin[x], {x, 0, 2 Pi, Pi / 180}], Frame -> True, FrameTicks -> {{{{-1, -a}, {0, 0}, {1, a}}, {-1, 0, 1}}, {{{0, 0}, {180, b}, {360, c} }, {0, 180, 360 }}}]

Out[1]= [image]
```

---

Specify the lengths for tick marks as a fraction of the graphics size:

```wl
In[1]:= ListPlot[Table[ Sin[x], {x, 0, 2 Pi, Pi / 180}], Joined -> True, Frame -> {{True, True}, {True, True}}, FrameTicks -> {{Automatic, Automatic}, {{{50, a, .1}, {180, b, .1}, {300, c, .1} }, Automatic}}]

Out[1]= [image]
```

Use different sizes in the positive and negative directions for each tick mark:

```wl
In[2]:= ListPlot[Table[ Sin[x], {x, 0, 2 Pi, Pi / 180}], Frame -> True, FrameTicks -> {{Automatic, Automatic}, {{{50, a, 0.1}, {180, b, 0.1}, {300, c, 0.1} }, {{50, a, {0.2, 0.1}}, {180, b, {0.2, 0.1}}, {300, c, {0.2, 0.1}} }}}]

Out[2]= [image]
```

---

Specify a style for each frame tick:

```wl
In[1]:= ListPlot[Table[ Sin[x], {x, 0, 2 Pi, Pi / 180}], Frame -> True, FrameTicks -> {{Automatic, Automatic}, {{{50, a, 0.1, Red}, {180, b, 0.1, Blue}, {300, c, 0.1, Darker@Green} }, Automatic}}]

Out[1]= [image]
```

---

Construct a function that places ticks at the midpoint and extremes of the frame edge:

```wl
In[1]:= minMeanMax[min_, max_] := {{min, min}, {(max + min) / 2, (max + min) / 2}, {max, max}}

In[2]:= ListPlot[Table[ Sin[x], {x, 0, 2 Pi, Pi / 180}], Frame -> True, Joined -> True, FrameTicks -> {{minMeanMax, None}, {minMeanMax, None}}, PlotRangePadding -> None]

Out[2]= [image]
```

#### FrameTicksStyle (3)

By default, the frame ticks and frame tick labels use the same styles as the frame:

```wl
In[1]:= ListPlot[Table[ Sin[x], {x, 0, 2 Pi, Pi / 180}], Joined -> True, Frame -> True, FrameStyle -> Directive[Red]]

Out[1]= [image]
```

---

Specify an overall style for the ticks, including the labels:

```wl
In[1]:=
ListPlot[Table[ Sin[x], {x, 0, 2 Pi, Pi / 180}], Frame -> True, 
	FrameStyle -> Red, FrameTicksStyle -> Directive[Blue, Thick]]

Out[1]= [image]
```

---

Use different style for the different frame edges:

```wl
In[1]:= ListPlot[Table[ Sin[x], {x, 0, 2 Pi, Pi / 180}], Frame -> True, FrameTicks -> All, FrameTicksStyle -> {{Purple, Blue}, {Thick, Red}}]

Out[1]= [image]
```

#### ImageSize (1)

The number of points that are labeled directly may depend on the image size:

```wl
In[1]:= data = RandomReal[10, {100, 2}] -> Range[100];

In[2]:= ListPlot[data, ImageSize -> Medium]

Out[2]= [image]
```

Smaller graphics will have fewer labeled points:

```wl
In[3]:= ListPlot[data, ImageSize -> 200]

Out[3]= [image]
```

Larger graphics will have more labeled points:

```wl
In[4]:= ListPlot[data, ImageSize -> 500]

Out[4]= [image]
```

#### InterpolationOrder (5)

``Joined`` lines can be interpolated:

```wl
In[1]:= ListPlot[{{1, 4, 2, 3, 10, 8, 2}}, Joined -> True, InterpolationOrder -> 2]

Out[1]= [image]
```

---

By default, linear interpolation is used:

```wl
In[1]:= ListPlot[{{1, 4, 2, 3, 10, 8, 2}}, Joined -> True, InterpolationOrder -> None, Mesh -> Full]

Out[1]= [image]
```

---

Use zero-order or piecewise-constant interpolation:

```wl
In[1]:= ListPlot[{{1, 4, 2, 3, 10, 8, 2}}, Joined -> True, InterpolationOrder -> 0, Mesh -> Full]

Out[1]= [image]
```

---

Use third-order spline interpolation:

```wl
In[1]:= ListPlot[{{1, 4, 2, 3, 10, 8, 2}}, Joined -> True, InterpolationOrder -> 3, Mesh -> Full]

Out[1]= [image]
```

---

Interpolation order 0 to 5:

```wl
In[1]:= Table[ListPlot[{{1, 4, 2, 3, 10, 8, 2}}, Joined -> True, InterpolationOrder -> i, Mesh -> Full, PlotLabel -> i], {i, 0, 5}]

Out[1]= {[image], [image], [image], [image], [image], [image]}
```

#### IntervalMarkers (3)

By default, uncertainties are capped:

```wl
In[1]:= ListPlot[Table[Around[RandomReal[], RandomReal[.1]], 10]]

Out[1]= [image]
```

---

Use bars to denote uncertainties without caps:

```wl
In[1]:= ListPlot[Table[Around[RandomReal[], RandomReal[.1]], 10], IntervalMarkers -> "Bars"]

Out[1]= [image]
```

---

Use bands to represent uncertainties:

```wl
In[1]:= ListPlot[Table[Around[RandomReal[], RandomReal[.1]], 10], IntervalMarkers -> "Bands"]

Out[1]= [image]
```

#### IntervalMarkersStyle (2)

Uncertainties automatically inherit the plot style:

```wl
In[1]:= ListPlot[{Table[Around[RandomReal[20], 1], 10], Table[Around[RandomReal[20], 1], 10]}, PlotStyle -> {Red, Blue}]

Out[1]= [image]
```

---

Specify the style for uncertainties:

```wl
In[1]:= ListPlot[{Table[Around[RandomReal[20], 1], 10], Table[Around[RandomReal[20], 1], 10]}, IntervalMarkersStyle -> Gray]

Out[1]= [image]
```

#### Joined (4)

Join the dataset with a line:

```wl
In[1]:= ListPlot[Table[Prime[n], {n, 20}], Joined -> True]

Out[1]= [image]
```

---

Join the first dataset with a line, but use points for the second dataset:

```wl
In[1]:= ListPlot[{Range[20], Table[Prime[n], {n, 20}]}, Joined -> {True, False}]

Out[1]= [image]
```

---

Join the dataset with a line and show the original points:

```wl
In[1]:= ListPlot[Table[Prime[n], {n, 20}], Joined -> True, Mesh -> All]

Out[1]= [image]
```

---

The type of filling depends on whether the set is joined:

```wl
In[1]:= Table[ListPlot[{Range[20], Range[20] / 2}, Joined -> {True, False}, Filling -> f, PlotLabel -> f], {f, {1 -> {2}, 2 -> {1}}}]

Out[1]= {[image], [image]}
```

#### LabelingFunction (6)

By default, points are automatically labeled with strings:

```wl
In[1]:= ListPlot[{1, 1, 2, 3, 5, 8} -> {"a", "b", "c", "d", "e", "f"}]

Out[1]= [image]
```

---

Use ``LabelingFunction -> None`` to suppress the labels:

```wl
In[1]:= ListPlot[{1, 1, 2, 3, 5, 8} -> {"a", "b", "c", "d", "e", "f"}, LabelingFunction -> None]

Out[1]= [image]
```

---

Put the labels above the points:

```wl
In[1]:= ListPlot[{1, 1, 2, 3, 5, 8} -> {"a", "b", "c", "d", "e", "f"}, LabelingFunction -> Above]

Out[1]= [image]
```

Put them in a tooltip:

```wl
In[2]:= ListPlot[{1, 1, 2, 3, 5, 8} -> {"a", "b", "c", "d", "e", "f"}, LabelingFunction -> Tooltip]

Out[2]= [image]
```

---

Use callouts to label the points:

```wl
In[1]:= ListPlot[{1, 1, 2, 3, 5, 8} -> {"a", "b", "c", "d", "e", "f"}, LabelingFunction -> Callout[Automatic, Automatic]]

Out[1]= [image]
```

---

Label the points with their values:

```wl
In[1]:= ListPlot[{1, 1, 2, 3, 5, 8} -> {"a", "b", "c", "d", "e", "f"}, LabelingFunction -> (#1&)]

Out[1]= [image]
```

---

Label the points with their indices:

```wl
In[1]:= ListPlot[{1, 1, 2, 3, 5, 8} -> {"a", "b", "c", "d", "e", "f"}, LabelingFunction -> (#2&)]

Out[1]= [image]
```

#### LabelingSize (4)

Textual labels are shown at their actual sizes:

```wl
In[1]:= ListPlot[{1, 1, 2, 3, 5, 8} -> {"healthfulness", "obstreperous", "spectrogram", "vestige", "coinage", "limey"}, ImageSize -> Medium]

Out[1]= [image]
```

---

Image labels are automatically resized:

```wl
In[1]:= ListPlot[{1, 1, 2, 3, 5, 8} -> {[image], [image], [image], [image], [image], [image]}, ImageSize -> Medium]

Out[1]= [image]
```

---

Specify a maximum size for textual labels:

```wl
In[1]:= ListPlot[{1, 1, 2, 3, 5, 8} -> {"healthfulness", "obstreperous", "spectrogram", "vestige", "coinage", "limey"}, ImageSize -> Medium, LabelingSize -> 30]

Out[1]= [image]
```

Specify a maximum size for image labels:

```wl
In[2]:= ListPlot[{1, 1, 2, 3, 5, 8} -> {[image], [image], [image], [image], [image], [image]}, ImageSize -> Medium, LabelingSize -> 20]

Out[2]= [image]
```

---

Show image labels at their natural sizes:

```wl
In[1]:= ListPlot[{1, 1, 2, 3, 5, 8} -> {[image], [image], [image], [image], [image], [image]}, ImageSize -> Medium, LabelingSize -> Full]

Out[1]= [image]
```

#### LabelingTarget (7)

Labels are automatically placed to maximize readability:

```wl
In[1]:= ListPlot[IconizedObject[«data»]]

Out[1]= [image]
```

---

Show all labels:

```wl
In[1]:= ListPlot[IconizedObject[«data»], LabelingTarget -> All]

Out[1]= [image]
```

---

Use a denser layout for the labels:

```wl
In[1]:= ListPlot[IconizedObject[«data»], LabelingTarget -> "Dense"]

Out[1]= [image]
```

---

Show the quarter of the labels that are easiest to read:

```wl
In[1]:= ListPlot[IconizedObject[«data»], LabelingTarget -> 0.25]

Out[1]= [image]
```

---

Only allow labels that are orthogonal to the points:

```wl
In[1]:= ListPlot[IconizedObject[«data»], LabelingTarget -> <|"AllowedLabelingPositions" -> "Sides"|>]

Out[1]= [image]
```

Only allow labels that are diagonal to the points:

```wl
In[2]:= ListPlot[IconizedObject[«data»], LabelingTarget -> <|"AllowedLabelingPositions" -> "Corners"|>]

Out[2]= [image]
```

Restrict labels to be above or to the right of the points:

```wl
In[3]:= ListPlot[IconizedObject[«data»], LabelingTarget -> <|"AllowedLabelingPositions" -> {"Right", "Top"}|>]

Out[3]= [image]
```

---

Allow labels to obscure other points:

```wl
In[1]:= ListPlot[IconizedObject[«data»], LabelingTarget -> <|"AllowedOverlaps" -> {"Points"}|>]

Out[1]= [image]
```

---

Allow labels to be clipped by the edges of the plot:

```wl
In[1]:= ListPlot[IconizedObject[«data»], LabelingTarget -> <|"AllowLabelClipping" -> True|>]

Out[1]= [image]
```

#### MaxPlotPoints (1)

```wl
In[1]:= Table[ListPlot[Table[{n, Sin[2Pi n / 10]}, {n, 100.}], MaxPlotPoints -> mp, Joined -> True], {mp, {Infinity, 50, 30}}]

Out[1]= {[image], [image], [image]}

In[2]:= Table[ListPlot[Table[{Sqrt[n]Cos[n / 5], Sqrt[n]Sin[n / 5]}, {n, 100.}], MaxPlotPoints -> mp, Joined -> True], {mp, {Infinity, 50, 30}}]

Out[2]= {[image], [image], [image]}
```

#### Mesh (6)

``Mesh`` requires at least one dataset to be ``Joined`` :

```wl
In[1]:= {ListPlot[Table[Sin[x], {x, 8}], Mesh -> 10], ListPlot[Table[Sin[x], {x, 8}], Mesh -> 10, Joined -> True]}

Out[1]= {[image], [image]}
```

---

The initial and final sampling meshes are typically the same:

```wl
In[1]:= {ListPlot[Table[Sin[x], {x, 8}], Mesh -> Full, Joined -> True], ListPlot[Table[Sin[x], {x, 8}], Mesh -> All, Joined -> True]}

Out[1]= {[image], [image]}
```

---

Interpolated data may introduce points:

```wl
In[1]:= {ListPlot[Table[Sin[x], {x, 8}], Mesh -> Full, InterpolationOrder -> 2, Joined -> True], ListPlot[Table[Sin[x], {x, 8}], Mesh -> All, InterpolationOrder -> 2, Joined -> True]}

Out[1]= {[image], [image]}
```

---

Use 20 mesh levels evenly spaced in the $x$ direction:

```wl
In[1]:= ListPlot[Table[Sin[x], {x, 8}], Mesh -> 20, Joined -> True]

Out[1]= [image]
```

---

Use an explicit list of values for the mesh in the $x$ direction:

```wl
In[1]:= ListPlot[Table[{x, Sin[x]}, {x, 0, 2Pi, 0.1}], Mesh -> {Range[0, 2Pi, Pi / 4]}, MeshStyle -> PointSize[Medium], Joined -> True]

Out[1]= [image]
```

---

Use explicit styles at specific points:

```wl
In[1]:= ListPlot[Table[{x, Sin[x]}, {x, 0, 2Pi, 2Pi / 20}], Mesh -> {Table[{x, Directive[Hue[x / (2Pi)], PointSize[Medium]]}, {x, 0., 2Pi, 2Pi / 8}]}, Joined -> True]

Out[1]= [image]
```

#### MeshFunctions (3)

``MeshFunctions`` requires at least one dataset to be ``Joined`` :

```wl
In[1]:= {ListPlot[Table[Binomial[15, k], {k, 0, 15}], Mesh -> 10, MeshFunctions -> {#1&}], ListPlot[Table[Binomial[15, k], {k, 0, 15}], Mesh -> 10, MeshFunctions -> {#1&}, Joined -> True]}

Out[1]= {[image], [image]}
```

---

Use a mesh evenly spaced in the $x$ and $y$ directions:

```wl
In[1]:= Table[ListPlot[Table[Binomial[15, k], {k, 0, 15}], MeshFunctions -> {Function[{x, y}, Evaluate[f]]}, Mesh -> 9, PlotLabel -> f, Joined -> True], {f, {x, y}}]

Out[1]= {[image], [image]}
```

---

Show 5 mesh levels in the $x$ direction (red) and 10 in the $y$ direction (blue):

```wl
In[1]:= ListPlot[Table[Binomial[15, k], {k, 0, 15}], Mesh -> {5, 10}, MeshFunctions -> {#1&, #2&}, MeshStyle -> {Directive[PointSize[Medium], Red], Blue}, Joined -> True]

Out[1]= [image]
```

#### MeshShading (7)

``MeshShading`` requires at least one dataset to be ``Joined`` :

```wl
In[1]:= {ListPlot[Table[Binomial[15, k], {k, 0, 15}], Mesh -> 10, MeshShading -> {Red, Blue}], ListPlot[Table[Binomial[15, k], {k, 0, 15}], Mesh -> 10, MeshShading -> {Red, Blue}, Joined -> True]}

Out[1]= {[image], [image]}
```

---

Alternate red and blue segments of equal width in the $x$ direction:

```wl
In[1]:= ListPlot[Table[Binomial[15, k], {k, 0, 15}], Mesh -> 10, MeshFunctions -> {#1&}, MeshShading -> {Red, Blue}, Joined -> True]

Out[1]= [image]
```

---

Use ``None`` to remove segments:

```wl
In[1]:= ListPlot[Table[Binomial[15, k], {k, 0, 15}], Mesh -> 10, MeshFunctions -> {#1&}, MeshShading -> {Red, None}, Joined -> True]

Out[1]= [image]
```

---

``MeshShading`` can be used with ``PlotStyle`` :

```wl
In[1]:= ListPlot[Table[Binomial[15, k], {k, 0, 15}], Mesh -> 10, PlotStyle -> Thick, MeshFunctions -> {#1&}, MeshShading -> {Red, Blue}, Joined -> True]

Out[1]= [image]
```

---

``MeshShading`` has higher priority than ``PlotStyle`` for styling the curve:

```wl
In[1]:= ListPlot[Table[Binomial[15, k], {k, 0, 15}], Mesh -> 10, PlotStyle -> Black, MeshFunctions -> {#1&}, MeshShading -> {Red, Blue}, Joined -> True]

Out[1]= [image]
```

---

Use ``PlotStyle`` for some segments by setting ``MeshShading`` to ``Automatic`` :

```wl
In[1]:= ListPlot[Table[Binomial[15, k], {k, 0, 15}], Mesh -> 10, PlotStyle -> Directive[Thick, Yellow], MeshFunctions -> {#1&}, MeshShading -> {Red, Automatic}, Joined -> True]

Out[1]= [image]
```

---

``MeshShading`` can be used with ``ColorFunction`` :

```wl
In[1]:=
ListPlot[Table[Binomial[15, k], {k, 0, 15}], Mesh -> 10, PlotStyle -> Thick, MeshFunctions -> {#1&}, MeshShading -> {Black, Automatic}, 
	ColorFunction -> Function[{x, y}, Hue[x]], Joined -> True]

Out[1]= [image]
```

#### MultiaxisArrangement (5)

By default, all items in a plot share the same scale:

```wl
In[1]:= ListPlot[{Range[10], Prime[Range[10]]}]

Out[1]= [image]
```

---

Use different axes for the different items:

```wl
In[1]:= ListPlot[{Range[10], Prime[Range[10]]}, MultiaxisArrangement -> All]

Out[1]= [image]
```

---

Any number of axes can be used:

```wl
In[1]:= ListPlot[{Range[10], Prime[Range[10]], Range[10] ^ 2}, MultiaxisArrangement -> All]

Out[1]= [image]
```

---

Have the first and second curves share an axis:

```wl
In[1]:= ListPlot[{Range[10], Prime[Range[10]], Range[10] ^ 2}, MultiaxisArrangement -> {{1, 2}, 3}]

Out[1]= [image]
```

---

Specify where the axes should be placed:

```wl
In[1]:= ListPlot[{Range[10], Prime[Range[10]], Range[10] ^ 2}, MultiaxisArrangement -> {Right -> {1, 2}, Left -> 3}]

Out[1]= [image]
```

Place shared axes as well:

```wl
In[2]:= ListPlot[{Range[10], Prime[Range[10]], Range[10] ^ 2}, MultiaxisArrangement -> {Right -> {{1, 2}}, Left -> 3}]

Out[2]= [image]
```

#### PlotFit (4)

Automatically fit a model to the data:

```wl
In[1]:= ListPlot[ResourceData["Sample Tabular Data: Car Models"] -> {"weight", "mpg"}, PlotFit -> Automatic]

Out[1]= [image]
```

---

Fit a straight line to the data:

```wl
In[1]:= ListPlot[ResourceData["Sample Tabular Data: Car Models"] -> {"weight", "mpg"}, PlotFit -> "Linear"]

Out[1]= [image]
```

---

Fit a quadratic curve to the data:

```wl
In[1]:= ListPlot[ResourceData["Sample Tabular Data: Car Models"] -> {"weight", "mpg"}, PlotFit -> "Quadratic"]

Out[1]= [image]
```

---

Use ``KernelModelFit`` to approximate the data:

```wl
In[1]:= ListPlot[ResourceData["Sample Tabular Data: Car Models"] -> {"weight", "mpg"}, PlotFit -> "Kernel"]

Out[1]= [image]
```

#### PlotFitElements (3)

By default, the fitted model is shown with the data points:

```wl
In[1]:= ListPlot[ResourceData["Sample Tabular Data: Car Models"] -> {"weight", "mpg"}, PlotFit -> Automatic]

Out[1]= [image]
```

---

Plot confidence bands for the data, with a default confidence level of 0.95:

```wl
In[1]:= ListPlot[ResourceData["Sample Tabular Data: Car Models"] -> {"weight", "mpg"}, PlotFit -> Automatic, PlotFitElements -> "BandCurves"]

Out[1]= [image]
```

Use a confidence level of 0.5 for the bands:

```wl
In[2]:= ListPlot[ResourceData["Sample Tabular Data: Car Models"] -> {"weight", "mpg"}, PlotFit -> Automatic, PlotFitElements -> {"BandCurves", <|"ConfidenceLevel" -> 0.5|>}]

Out[2]= [image]
```

---

Show residual lines from the data points to the fitted curve:

```wl
In[1]:= ListPlot[ResourceData["Sample Tabular Data: Car Models"] -> {"weight", "mpg"}, PlotFit -> Automatic, PlotFitElements -> "Residuals"]

Out[1]= [image]
```

Combine the original points with gray residual lines:

```wl
In[2]:= ListPlot[ResourceData["Sample Tabular Data: Car Models"] -> {"weight", "mpg"}, PlotFit -> Automatic, PlotFitElements -> {"DataPoints", {"Residuals", <|"Style" -> Gray|>}}]

Out[2]= [image]
```

#### PlotHighlighting (9)

Plots have interactive coordinate callouts with the default setting ``PlotHighlighting -> Automatic`` :

```wl
In[1]:= ListPlot[{IconizedObject[«primes»], IconizedObject[«squares»]}]

Out[1]= [image]
```

Use ``PlotHighlighting -> None`` to disable the highlighting for the entire plot:

```wl
In[2]:= ListPlot[{IconizedObject[«primes»], IconizedObject[«squares»]}, PlotHighlighting -> None]

Out[2]= [image]
```

Use ``Highlighted[…, None]`` to disable highlighting for a single set:

```wl
In[3]:= ListPlot[{IconizedObject[«primes»], Highlighted[IconizedObject[«squares»], None]}]

Out[3]= [image]
```

---

Move the mouse over a set of points to highlight it using arbitrary graphics directives:

```wl
In[1]:= ListPlot[{IconizedObject[«primes»], IconizedObject[«squares»]}, PlotHighlighting -> Directive[Red, AbsolutePointSize[10], DropShadowing[]]]

Out[1]= [image]
```

---

Move the mouse over the points to highlight them with balls and labels:

```wl
In[1]:= ListPlot[IconizedObject[«primes»], PlotHighlighting -> "Dropline"]

Out[1]= [image]
```

Use a ball and label to highlight a specific point on the plot:

```wl
In[2]:= ListPlot[Highlighted[IconizedObject[«primes»], Placed["Dropline", {{7}, {15}}]]]

Out[2]= [image]
```

---

Move the mouse over the curve to highlight it with a label and droplines to the axes:

```wl
In[1]:= ListPlot[IconizedObject[«primes»], PlotHighlighting -> "Dropline"]

Out[1]= [image]
```

Use a ball and label to highlight a specific point in the plot:

```wl
In[2]:= ListPlot[Highlighted[IconizedObject[«primes»], Placed["Dropline", 16]]]

Out[2]= [image]
```

---

Move the mouse over the plot to highlight it with a slice showing $y$ values corresponding to the $x$ position:

```wl
In[1]:= ListPlot[{IconizedObject[«primes»], IconizedObject[«squares»]}, PlotHighlighting -> "XSlice"]

Out[1]= [image]
```

Highlight a particular set of points at a fixed $x$ value:

```wl
In[2]:= ListPlot[{Highlighted[IconizedObject[«primes»], Placed["XSlice", 17]], IconizedObject[«squares»]}]

Out[2]= [image]
```

---

Move the mouse over the plot to highlight it with a slice showing $x$ values corresponding to the $y$ position:

```wl
In[1]:= ListPlot[{IconizedObject[«primes»], IconizedObject[«squares»]}, PlotHighlighting -> "YSlice"]

Out[1]= [image]
```

Highlight the curves at a fixed $y$ value:

```wl
In[2]:= ListPlot[{IconizedObject[«primes»], IconizedObject[«squares»]}, PlotHighlighting -> Placed["YSlice", 250]]

Out[2]= [image]
```

---

Use a component that shows the points on the plot closest to the $x$ position of the mouse cursor:

```wl
In[1]:= ListPlot[{IconizedObject[«primes»], IconizedObject[«squares»]}, PlotHighlighting -> "XNearestPoint"]

Out[1]= [image]
```

Specify the style for the points:

```wl
In[2]:= ListPlot[{IconizedObject[«primes»], IconizedObject[«squares»]}, PlotHighlighting -> {"XNearestPoint", <|"Style" -> Black|>}]

Out[2]= [image]
```

---

Use a component that shows the coordinates on the points closest to the mouse cursor:

```wl
In[1]:= ListPlot[{IconizedObject[«primes»], IconizedObject[«squares»]}, PlotHighlighting -> "XYLabel"]

Out[1]= [image]
```

Use ``Callout`` options to change the appearance of the label:

```wl
In[2]:= ListPlot[IconizedObject[«primes»], PlotHighlighting -> {"XYLabel", <|"Appearance" -> "Corners", "CalloutMarker" -> "Circle"|>}]

Out[2]= [image]
```

---

Combine components to create a custom effect:

```wl
In[1]:= ListPlot[IconizedObject[«primes»], PlotHighlighting -> {{"XNearestPoint", <|"Style" -> Black|>}, {"XYLabel", <|"Appearance" -> "Corners", "CalloutMarker" -> "Circle"|>}}]

Out[1]= [image]
```

#### PlotInteractivity (3)

Plots have interactive highlighting by default:

```wl
In[1]:= ListPlot[{2, 3, 5, 7, 11, 13, 17, 19, 23, 29}]

Out[1]= [image]
```

---

Turn off all the interactive elements:

```wl
In[1]:= ListPlot[{2, 3, 5, 7, 11, 13, 17, 19, 23, 29}, PlotInteractivity -> False]

Out[1]= [image]
```

---

Allow provided interactive elements and disable automatic ones:

```wl
In[1]:= ListPlot[{2, 3, 5, 7, 11, 13, 17, 19, 23, Tooltip[29, "hello"]}, PlotInteractivity -> <|"User" -> True, "System" -> False|>]

Out[1]= [image]
```

#### PlotLabel (1)

Add an overall label to the plot:

```wl
In[1]:= ListPlot[Prime[Range[100]], PlotLabel -> "prime numbers"]

Out[1]= [image]
```

#### PlotLabels (6)

Specify text to label sets of points:

```wl
In[1]:= ListPlot[{Sin[Range[0, 2Pi, 0.1]], Cos[Range[0, 2Pi, 0.1]]}, PlotLabels -> {"sine", "cosine"}]

Out[1]= [image]
```

---

Place the labels above the points:

```wl
In[1]:= ListPlot[{Sin[Range[0, 2Pi, 0.1]], Cos[Range[0, 2Pi, 0.1]]}, PlotLabels -> Placed[{"sine", "cosine"}, Above]]

Out[1]= [image]
```

---

Use callouts to identify the points:

```wl
In[1]:= ListPlot[{Sin[Range[0, 2Pi, 0.1]], Cos[Range[0, 2Pi, 0.1]]}, PlotLabels -> {Callout["sin", {Scaled[0.25], Above}], Callout["cos", {Scaled[0.5], Below}]}]

Out[1]= [image]
```

---

Use the keys from an ``Association`` as labels:

```wl
In[1]:= ListPlot[<|"sine" -> Sin[Range[0, 2Pi, 0.1]], "cosine" -> Cos[Range[0, 2Pi, 0.1]]|>, PlotLabels -> Automatic, PlotLegends -> None]

Out[1]= [image]
```

---

Use ``None`` to not add a label:

```wl
In[1]:= ListPlot[{Sin[Range[0, 2Pi, 0.1]], Cos[Range[0, 2Pi, 0.1]]}, PlotLabels -> {"sine", None}]

Out[1]= [image]
```

---

Label multiple curves with ``{x, y}`` pair values:

```wl
In[1]:= data1 = Table[{Cos[x], Sin[x]}, {x, 0, 2Pi, 0.1}];

In[2]:= data2 = Table[{Cos[x], Sin[3x]}, {x, 0, 2Pi, 0.1}];

In[3]:= ListPlot[{data1, data2}, Joined -> True, PlotLabels -> Callout[{"label1", "label2"}, After]]

Out[3]= [image]
```

#### PlotLayout (3)

By default, curves are overlaid on each other:

```wl
In[1]:= data = {{10, 9, 4, 3, 5, 3, 5, 5, 2, 6}, {2, 10, 5, 6, 9, 4, 9, 3, 7, 2}, {7, 8, 3, 4, 4, 2, 6, 3, 8, 7}};

In[2]:= ListPlot[data, Joined -> True]

Out[2]= [image]
```

Plot the data in a stacked layout:

```wl
In[3]:= ListPlot[data, PlotLayout -> "Stacked", Joined -> True]

Out[3]= [image]
```

Plot the data as percentiles of the total of the values:

```wl
In[4]:= ListPlot[data, PlotLayout -> "Percentile", Joined -> True]

Out[4]= [image]
```

Place each curve in a separate panel using shared axes:

```wl
In[5]:= ListPlot[data, PlotLayout -> "Column", Joined -> True, ImageSize -> Medium]

Out[5]= [image]
```

Use rows instead of columns:

```wl
In[6]:= ListPlot[data, PlotLayout -> "Row", Joined -> True, ImageSize -> Medium]

Out[6]= [image]
```

---

Use multiple columns or rows:

```wl
In[1]:= ListPlot[IconizedObject[«data»], ImageSize -> Medium, Joined -> True, PlotLayout -> {"Column", 4}]

Out[1]= [image]
```

Prefer full columns or rows:

```wl
In[2]:= ListPlot[IconizedObject[«data»], ImageSize -> Medium, Joined -> True, PlotLayout -> {"Column", UpTo[4]}]

Out[2]= [image]
```

---

Label the individual panels:

```wl
In[1]:= ListPlot[{{...}, {...}}, PlotLayout -> "Row", PlotLabels -> {"First", "Second"}, Filling -> Bottom]

Out[1]= [image]
```

#### PlotLegends (7)

No legend is used, by default:

```wl
In[1]:= ListPlot[{Sqrt[Range[40]], Log[Range[40]]}]

Out[1]= [image]
```

---

Generate a legend using labels:

```wl
In[1]:= ListPlot[{Sqrt[Range[40]], Log[Range[40]]}, PlotLegends -> {"sqrt", "log"}]

Out[1]= [image]
```

---

Generate a legend using placeholders:

```wl
In[1]:= ListPlot[{Sqrt[Range[40]], Log[Range[40]]}, PlotLegends -> Automatic]

Out[1]= [image]
```

---

Legends use the same styles as the plot:

```wl
In[1]:= ListPlot[{Sqrt[Range[40]], Log[Range[40]]}, PlotStyle -> {Red, Blue}, PlotLegends -> {"sqrt", "log"}]

Out[1]= [image]
```

---

Use ``Placed`` to specify the legend placement:

```wl
In[1]:= Table[ListPlot[{Sqrt[Range[40]], Log[Range[40]]}, PlotLabel -> pos, PlotLegends -> Placed[{"sqrt", "log"}, pos]], {pos, {Above, Below, Before, After}}]

Out[1]= {[image], [image], [image], [image]}
```

---

Place the legend inside the plot:

```wl
In[1]:= ListPlot[{Sqrt[Range[40]], Log[Range[40]]}, PlotStyle -> {Red, Blue}, PlotLegends -> Placed[{"sqrt", "log"}, {0.85, 0.25}]]

Out[1]= [image]
```

---

Use ``PointLegend`` to change the legend appearance:

```wl
In[1]:= ListPlot[{Sqrt[Range[40]], Log[Range[40]]}, PlotStyle -> {Red, Blue}, PlotLegends -> PointLegend[{"sqrt", "log"}, LegendMarkerSize -> 10, LegendFunction -> Frame]]

Out[1]= [image]
```

#### PlotMarkers (8)

``ListPlot`` normally uses distinct colors to distinguish different sets of data:

```wl
In[1]:= ListPlot[Table[n ^ (1 / p), {p, 4}, {n, 10}], PlotMarkers -> None]

Out[1]= [image]
```

---

Automatically use colors and shapes to distinguish sets of data:

```wl
In[1]:= ListPlot[Table[n ^ (1 / p), {p, 2, 4}, {n, 10}], PlotMarkers -> Automatic]

Out[1]= [image]
```

---

Use shapes only:

```wl
In[1]:= ListPlot[Table[n ^ (1 / p), {p, 4}, {n, 10}], PlotMarkers -> Automatic, PlotStyle -> Black]

Out[1]= [image]
```

---

Change the size of the default plot markers:

```wl
In[1]:= Table[ListPlot[Table[n ^ (1 / p), {p, 4}, {n, 5}], PlotMarkers -> {Automatic, s}], {s, {Small, Medium}}]

Out[1]= {[image], [image]}

In[2]:= ListPlot[Table[n ^ (1 / p), {p, 4}, {n, 5}], PlotMarkers -> {Automatic, Large}]

Out[2]= [image]
```

---

Use arbitrary text for plot markers:

```wl
In[1]:= ListPlot[Table[n ^ (1 / p), {p, 4}, {n, 10}], PlotMarkers -> {"1", "2", "3", "4"}]

Out[1]= [image]
```

---

Use explicit graphics for plot markers:

```wl
In[1]:= {m1, m2, m3, m4} = Graphics /@ {Circle[{0, 0}, 1], Disk[{0, 0}, 1], Line[{{-0.5, -0.5}, {0.5, -0.5}, {0.5, 0.5}, {-0.5, 0.5}, {-0.5, -0.5}}], Polygon[{{-0.5, -0.5}, {0.5, -0.5}, {0.5, 0.5}, {-0.5, 0.5}}]}

Out[1]= {[image], [image], [image], [image]}

In[2]:= ListPlot[Table[n ^ (1 / p), {p, 4}, {n, 10}], PlotMarkers -> Table[{s, 0.1}, {s, {m1, m2, m3, m4}}]]

Out[2]= [image]
```

---

Use the same symbol for all the sets of data:

```wl
In[1]:= ListPlot[Table[n ^ (1 / p), {p, 4}, {n, 10}], PlotMarkers -> "●"]

Out[1]= [image]
```

---

Explicitly use a symbol and size:

```wl
In[1]:= Table[ListPlot[Table[n ^ (1 / p), {p, 4}, {n, 10}], PlotMarkers -> {"●", s}], {s, {4, 8, 12}}]

Out[1]= {[image], [image], [image]}
```

#### PlotRange (2)

``PlotRange`` is automatically calculated:

```wl
In[1]:= ListPlot[Table[i + 100 KroneckerDelta[i - 5] + 50KroneckerDelta[i - 10], {i, 40}]]

Out[1]= [image]
```

---

Show the whole dataset:

```wl
In[1]:= ListPlot[Table[i + 100 KroneckerDelta[i - 5] + 50KroneckerDelta[i - 10], {i, 40}], PlotRange -> All]

Out[1]= [image]
```

#### PlotStyle (7)

Use different style directives:

```wl
In[1]:= Table[ListPlot[Table[Binomial[10, k], {k, 0, 10}], PlotStyle -> ps], {ps, {Red, PointSize[Large], Darker[Green], Directive[Red, PointSize[Large]]}}]

Out[1]= {[image], [image], [image], [image]}
```

---

By default, different styles are chosen for multiple datasets:

```wl
In[1]:= ListPlot[Table[Table[Sin[k x], {x, 0, 2Pi, 0.1}], {k, {1, 2, 3}}]]

Out[1]= [image]
```

---

Explicitly specify the style for different datasets:

```wl
In[1]:= ListPlot[Table[Table[Sin[k x], {x, 0, 2Pi, 0.1}], {k, {1, 2, 3}}], PlotStyle -> {Red, Green, Blue}]

Out[1]= [image]
```

---

``PlotStyle`` applies to both lines and points:

```wl
In[1]:= ListPlot[{{1, 2, 3, 4, 5}, {4, 2, 1, 2, 4}}, Joined -> {True, False}, PlotStyle -> Red]

Out[1]= [image]

In[2]:= ListPlot[{{1, 2, 3, 4, 5}, {4, 2, 1, 2, 4}}, Joined -> {True, False}, PlotStyle -> {Thick, PointSize[Large]}]

Out[2]= [image]
```

---

``PlotStyle`` can be combined with ``ColorFunction`` :

```wl
In[1]:= ListPlot[Table[Sin[x], {x, 0, 2Pi, 0.1}], Joined -> True, PlotStyle -> Thick, ColorFunction -> Function[{x, y}, Hue[y]]]

Out[1]= [image]
```

---

``PlotStyle`` can be combined with ``MeshShading`` :

```wl
In[1]:= ListLinePlot[Table[Sin[x], {x, 0, 2Pi, 0.1}], Joined -> True, PlotStyle -> Directive[Opacity[0.5], Thick], Mesh -> 10, MeshFunctions -> {#1&}, MeshShading -> {Red, Blue}]

Out[1]= [image]
```

---

``MeshStyle`` by default uses the same style as ``PlotStyle`` :

```wl
In[1]:= ListLinePlot[Table[Sin[x], {x, 0, 2Pi, 0.1}], PlotStyle -> Red, Mesh -> All]

Out[1]= [image]
```

#### PlotTheme (2)

Use a theme with simple ticks and grid lines in a bright color scheme:

```wl
In[1]:= ListPlot[{Table[Sin[x], {x, 0, 2Pi, 0.1}], Table[Cos[x], {x, 0, 2Pi, 0.1}]}, PlotTheme -> "Business"]

Out[1]= [image]
```

---

Change the color scheme:

```wl
In[1]:= ListPlot[{Table[Sin[x], {x, 0, 2Pi, 0.1}], Table[Cos[x], {x, 0, 2Pi, 0.1}]}, PlotTheme -> "Business", PlotStyle -> 96]

Out[1]= [image]
```

#### ScalingFunctions (9)

By default, plots have linear scales in each direction:

```wl
In[1]:= ListPlot[{1, 5, 10, 35, 60, 75, 140}]

Out[1]= [image]
```

---

Use a log scale in the $y$ direction:

```wl
In[1]:= ListPlot[{1, 5, 10, 35, 60, 75, 140}, ScalingFunctions -> "Log"]

Out[1]= [image]
```

---

Use a linear scale in the $y$ direction that shows smaller numbers at the top:

```wl
In[1]:= ListPlot[{1, 5, 10, 35, 60, 75, 140}, ScalingFunctions -> "Reverse"]

Out[1]= [image]
```

---

Use a reciprocal scale in the $y$ direction:

```wl
In[1]:= ListPlot[{1, 5, 10, 35, 60, 75, 140}, ScalingFunctions -> "Reciprocal"]

Out[1]= [image]
```

---

Use different scales in the $x$ and $y$ directions:

```wl
In[1]:= ListPlot[{1, 5, 10, 35, 60, 75, 140}, ScalingFunctions -> {"Reverse", "Log"}]

Out[1]= [image]
```

---

Reverse the $x$ axis without changing the $y$ axis:

```wl
In[1]:= ListPlot[{1, 5, 10, 35, 60, 75, 140}, ScalingFunctions -> {"Reverse", None}]

Out[1]= [image]
```

---

Use a scale defined by a function and its inverse:

```wl
In[1]:= ListPlot[{1, 5, 10, 35, 60, 75, 140}, ScalingFunctions -> {None, {-Log[#]&, Exp[-#]&}}]

Out[1]= [image]
```

---

Positions in ``Ticks`` and ``GridLines`` are automatically scaled:

```wl
In[1]:= ListPlot[{1, 5, 10, 35, 60, 75, 140}, ScalingFunctions -> "Log", Ticks -> {Automatic, 2 ^ Range[10]}, GridLines -> {None, 2 ^ Range[10]}]

Out[1]= [image]
```

---

``PlotRange`` and ``AxesOrigin`` are automatically scaled:

```wl
In[1]:= ListPlot[{1, 5, 10, 35, 60, 75, 140}, ScalingFunctions -> "Log", PlotRange -> {1, 100}, AxesOrigin -> {Automatic, 10}]

Out[1]= [image]
```

#### TargetUnits (2)

Automatically detect units:

```wl
In[1]:= ListPlot[Quantity[Range[10], "Hours"]]

Out[1]= [image]
```

---

Specify alternate units:

```wl
In[1]:= ListPlot[Quantity[Range[10], "Hours"], TargetUnits -> "Minutes"]

Out[1]= [image]
```

### Applications (9)

Compare the ``n``$$^{\text{th}}$$ prime to an estimate:

```wl
In[1]:= ListPlot[{Table[Prime[n], {n, 80}], Table[n Log[n], {n, 80}]}]

Out[1]= [image]
```

---

Show the evaluation points in the order used by a numerical function:

```wl
In[1]:= ListPlot[Reap[NIntegrate[1 / Abs[Sqrt[x]], {x, -1, 0, 1}, EvaluationMonitor :> Sow[x]]][[2, 1]], PlotRange -> All]

Out[1]= [image]
```

Show both evaluation points and value used by a numerical function:

```wl
In[2]:= ListPlot[Reap[NIntegrate[1 / Abs[Sqrt[x]], {x, -1, 0, 1}, EvaluationMonitor :> Sow[{x, 1 / Abs[Sqrt[x]]}]]][[2, 1]], Filling -> Axis]

Out[2]= [image]
```

---

Plot life expectancy against birth rates for all the countries:

```wl
In[1]:= ListPlot[Table[Tooltip[{CountryData[c, "BirthRateFraction"], CountryData[c, "LifeExpectancy"]}, c], {c, CountryData["Countries"]}]]

Out[1]= [image]
```

---

Show the linear relationship between enthalpy of vaporization and boiling point:

```wl
In[1]:= ListPlot[Table[{ElementData[z, "AbsoluteBoilingPoint"], ElementData[z, "VaporizationHeat"]}, {z, 118}]]

Out[1]= [image]
```

---

Plot a discrete-time signal and its spectrum:

```wl
In[1]:= signal = Table[Mod[i / 2, 10] / 10, {i, 100}];

In[2]:= {ListPlot[signal, Filling -> Axis], ListPlot[Abs[Fourier[signal]], DataRange -> {0, 2Pi}, Filling -> Axis, PlotRange -> All]}

Out[2]= {[image], [image]}
```

---

Plot the probability mass function for a distribution:

```wl
In[1]:= ListPlot[Table[{k, PDF[BinomialDistribution[50, 0.3], k]}, {k, 0, 40}], Filling -> Axis]

Out[1]= [image]
```

Plot the empirical probability mass function:

```wl
In[2]:= ListPlot[Tally[RandomInteger[BinomialDistribution[50, 0.3], 10 ^ 4]], PlotRange -> {{0, 40}, All}, Filling -> Axis]

Out[2]= [image]
```

---

Plot a solution sequence to a difference equation:

```wl
In[1]:= RSolve[x[n + 1] == 4x[n](1 - x[n]) && x[0] == 1 / 10, x, n]//Quiet

Out[1]= {{x -> Function[{n}, (1/2) (1 - Cos[2^n ArcCos[(4/5)]])]}}

In[2]:= ListPlot[Table[Evaluate[x[n] /. First[%]], {n, 0, 100}], Filling -> Axis]

Out[2]= [image]
```

---

Plot randomly sampled properties:

```wl
In[1]:= data = RandomReal[{-1, 1}, {1000, 2}];

In[2]:= Table[ListPlot[Cases[data, p_ /; Norm[p, n] < 1], AspectRatio -> Automatic], {n, {1, 2, 3}}]

Out[2]= {[image], [image], [image]}
```

---

Plot uncertainties in the mass and radius of exoplanets:

```wl
In[1]:= rmdata = EntityValue["Exoplanet", {EntityProperty["Exoplanet", "Mass", {"Uncertainty" -> "Around"}], EntityProperty["Exoplanet", "Radius", {"Uncertainty" -> "Around"}]}];

In[2]:= rmdata = DeleteMissing[rmdata, 1, 2];

In[3]:= ListPlot[rmdata, ...]

Out[3]= [image]
```

### Properties & Relations (14)

By default pairs are interpreted as $(x,y)$ values:

```wl
In[1]:= ListPlot[{{1, 2}, {3, 6}, {7, 5}}]

Out[1]= [image]
```

Interpret the data as multiple ``datai`` :

```wl
In[2]:= ListPlot[{{1, 2}, {3, 6}, {7, 5}}, DataRange -> All]

Out[2]= [image]
```

---

``ListLinePlot`` is a special case of ``ListPlot`` :

```wl
In[1]:=
{ListLinePlot[Table[Binomial[9, k], {k, 0, 9}]], 
	ListPlot[Table[Binomial[9, k], {k, 0, 9}], Joined -> True]}

Out[1]= {[image], [image]}
```

---

Use ``Plot`` for functions:

```wl
In[1]:= {Plot[Sin[x ^ 2], {x, 0, 5}], ListLinePlot[Table[{x, Sin[x ^ 2]}, {x, 0, 5, 0.1}]]}

Out[1]= {[image], [image]}
```

---

Use ``ListLogPlot``, ``ListLogLogPlot``, and ``ListLogLinearPlot`` for logarithmic plots:

```wl
In[1]:= ListLogPlot[Table[Binomial[25, k], {k, 0, 25}], Joined -> True]

Out[1]= [image]
```

---

Use ``ListPolarPlot`` for polar plots:

```wl
In[1]:= ListPolarPlot[Table[{x, Sqrt[x]}, {x, 0, 2Pi, 0.1}]]

Out[1]= [image]
```

---

Use ``DateListPlot`` to show data over time:

```wl
In[1]:= DateListPlot[{5, 11, 13, 24, 28, 31, 34, 39, 42, 47, 51, 66}, {2006, 1}, PlotStyle -> PointSize[Medium], Joined -> False]

Out[1]= [image]
```

---

Use ``ComplexListPlot`` to plot complex numbers using their real and imaginary parts:

```wl
In[1]:= data = RandomComplex[{-10 - 10I, 10 + 10I}, 100];

In[2]:= ComplexListPlot[data]

Out[2]= [image]

In[3]:= ListPlot[ReIm[data]]

Out[3]= [image]
```

---

Use ``ListPointPlot3D`` to show three-dimensional points:

```wl
In[1]:= ListPointPlot3D[Table[Sin[j ^ 2 + i], {i, 0, Pi, 0.1}, {j, 0, Pi, 0.1}]]

Out[1]= [image]
```

---

Use ``ListLinePlot3D`` to plot curves through lists of points:

```wl
In[1]:= ListLinePlot3D[Table[{Cos[t], Sin[t], Sin[5t]}, {t, 0, 2Pi, 0.1}]]

Out[1]= [image]
```

Plot curves through rows of heights in a table:

```wl
In[2]:= ListLinePlot3D[Table[Sin[j ^ 2 + i], {i, 0, 3, 0.25}, {j, 0, 3, 0.1}]]

Out[2]= [image]
```

---

Use ``ListPlot3D`` to create surfaces from data:

```wl
In[1]:= ListPlot3D[Table[Sin[j ^ 2 + i], {i, 0, Pi, 0.1}, {j, 0, Pi, 0.1}]]

Out[1]= [image]
```

---

Use ``ListContourPlot`` to create contours from continuous data:

```wl
In[1]:= ListContourPlot[Table[Sin[j ^ 2 + i], {i, 0, Pi, 0.1}, {j, 0, Pi, 0.1}]]

Out[1]= [image]
```

---

Use ``ListDensityPlot`` to create densities from continuous data:

```wl
In[1]:= ListDensityPlot[Table[Sin[j ^ 2 + i], {i, 0, Pi, 0.1}, {j, 0, Pi, 0.1}]]

Out[1]= [image]
```

---

Use ``ArrayPlot`` and ``MatrixPlot`` for arrays of discrete values:

```wl
In[1]:= ArrayPlot[Table[GCD[i, j], {i, 1, 20}, {j, 1, 20}]]

Out[1]= [image]
```

---

Use ``ParametricPlot`` for parametric curves:

```wl
In[1]:= {ParametricPlot[{Cos[θ], Sin[θ]}, {θ, 0, 2Pi}], ListLinePlot[Table[{Cos[θ], Sin[θ]}, {θ, 0, 2Pi, 0.1}], AspectRatio -> 1]}

Out[1]= {[image], [image]}
```

## See Also

* [`ListLinePlot`](https://reference.wolfram.com/language/ref/ListLinePlot.en.md)
* [`DiscretePlot`](https://reference.wolfram.com/language/ref/DiscretePlot.en.md)
* [`Plot`](https://reference.wolfram.com/language/ref/Plot.en.md)
* [`ListLogPlot`](https://reference.wolfram.com/language/ref/ListLogPlot.en.md)
* [`DateListPlot`](https://reference.wolfram.com/language/ref/DateListPlot.en.md)
* [`ListPolarPlot`](https://reference.wolfram.com/language/ref/ListPolarPlot.en.md)
* [`StackedListPlot`](https://reference.wolfram.com/language/ref/StackedListPlot.en.md)
* [`ListPointPlot3D`](https://reference.wolfram.com/language/ref/ListPointPlot3D.en.md)
* [`ListLinePlot3D`](https://reference.wolfram.com/language/ref/ListLinePlot3D.en.md)
* [`ListPlot3D`](https://reference.wolfram.com/language/ref/ListPlot3D.en.md)
* [`NumberLinePlot`](https://reference.wolfram.com/language/ref/NumberLinePlot.en.md)
* [`Graphics`](https://reference.wolfram.com/language/ref/Graphics.en.md)
* [`Point`](https://reference.wolfram.com/language/ref/Point.en.md)
* [`Fit`](https://reference.wolfram.com/language/ref/Fit.en.md)

## Tech Notes

* [Plotting Lists of Data](https://reference.wolfram.com/language/tutorial/GraphicsAndSound.en.md#11224)

## Related Guides

* [Data Visualization](https://reference.wolfram.com/language/guide/DataVisualization.en.md)
* [GPU Computing](https://reference.wolfram.com/language/guide/GPUComputing.en.md)
* [Numbers with Uncertainty](https://reference.wolfram.com/language/guide/NumbersWithUncertainty.en.md)
* [Tabular Visualization](https://reference.wolfram.com/language/guide/TabularVisualization.en.md)
* [Discrete Calculus](https://reference.wolfram.com/language/guide/DiscreteCalculus.en.md)
* [Charting and Information Visualization](https://reference.wolfram.com/language/guide/ChartingAndInformationVisualization.en.md)
* [Scientific Data Analysis](https://reference.wolfram.com/language/guide/ScientificDataAnalysis.en.md)
* [Tabular Processing Overview](https://reference.wolfram.com/language/guide/TabularProcessing.en.md)
* [Tabular Communication](https://reference.wolfram.com/language/guide/TabularCommunication.en.md)
* [Signal Visualization & Analysis](https://reference.wolfram.com/language/guide/SignalAnalysis.en.md)
* [Handling Arrays of Data](https://reference.wolfram.com/language/guide/HandlingArraysOfData.en.md)
* [Statistical Visualization](https://reference.wolfram.com/language/guide/StatisticalVisualization.en.md)
* [Numerical Data](https://reference.wolfram.com/language/guide/NumericalData.en.md)
* [Financial Visualization](https://reference.wolfram.com/language/guide/FinancialVisualization.en.md)
* [Function Visualization](https://reference.wolfram.com/language/guide/FunctionVisualization.en.md)
* [`Associations`](https://reference.wolfram.com/language/guide/Associations.en.md)
* [Spatial Point Collections](https://reference.wolfram.com/language/guide/SpatialPointCollections.en.md)
* [Probability & Statistics with Quantities](https://reference.wolfram.com/language/guide/ProbabilityWithQuantities.en.md)
* [Audio Representation](https://reference.wolfram.com/language/guide/AudioRepresentation.en.md)

## Related Workflows

* [Change the Style of Points in a 2D Scatter Plot](https://reference.wolfram.com/language/workflow/ChangeTheStyleOfPointsInA2DScatterPlot.en.md)

## Related Links

* [Fast Introduction for Programmers: Graphics](http://www.wolfram.com/language/fast-introduction-for-programmers/graphics/)
* [An Elementary Introduction to the Wolfram Language: First Look at Lists](https://www.wolfram.com/language/elementary-introduction/03-first-look-at-lists.html)
* [An Elementary Introduction to the Wolfram Language: Coordinates and Graphics](https://www.wolfram.com/language/elementary-introduction/14-coordinates-and-graphics.html)

## History

* Introduced in 1988 (1.0) \| [Updated in 2007 (6.0)](https://reference.wolfram.com/language/guide/SummaryOfNewFeaturesIn60.en.md) ▪ [2008 (7.0)](https://reference.wolfram.com/language/guide/SummaryOfNewFeaturesIn70.en.md) ▪ [2012 (9.0)](https://reference.wolfram.com/language/guide/SummaryOfNewFeaturesIn90.en.md) ▪ [2014 (10.0)](https://reference.wolfram.com/language/guide/SummaryOfNewFeaturesIn100.en.md) ▪ [2016 (10.4)](https://reference.wolfram.com/language/guide/SummaryOfNewFeaturesIn104.en.md) ▪ [2016 (11.0)](https://reference.wolfram.com/language/guide/SummaryOfNewFeaturesIn110.en.md) ▪ [2018 (11.3)](https://reference.wolfram.com/language/guide/SummaryOfNewFeaturesIn113.en.md) ▪ [2019 (12.0)](https://reference.wolfram.com/language/guide/SummaryOfNewFeaturesIn120.en.md) ▪ [2021 (13.0)](https://reference.wolfram.com/language/guide/SummaryOfNewFeaturesIn130.en.md) ▪ [2023 (13.3)](https://reference.wolfram.com/language/guide/SummaryOfNewFeaturesIn133.en.md) ▪ [2025 (14.2)](https://reference.wolfram.com/language/guide/SummaryOfNewFeaturesIn142.en.md) ▪ [2025 (14.3)](https://reference.wolfram.com/language/guide/SummaryOfNewFeaturesIn143.en.md)