---
title: "VectorPlot"
language: "en"
type: "Symbol"
summary: "VectorPlot[{vx, vy}, {x, xmin, xmax}, {y, ymin, ymax}] generates a vector plot of the vector field {vx, vy} as a function of x and y. VectorPlot[{{vx, vy}, {wx, wy}, ...}, {x, xmin, xmax}, {y, ymin, ymax}] plots several vector fields. VectorPlot[..., {x, y} \\[Element] reg] takes the variables {x, y} to be in the geometric region reg."
keywords: 
- quiver
- quiver plot
- hedgehog field
- vector field plot
- slope plot
- phase portrait
canonical_url: "https://reference.wolfram.com/language/ref/VectorPlot.html"
source: "Wolfram Language Documentation"
related_guides: 
  - 
    title: "Vector Visualization"
    link: "https://reference.wolfram.com/language/guide/VectorVisualization.en.md"
  - 
    title: "Function Visualization"
    link: "https://reference.wolfram.com/language/guide/FunctionVisualization.en.md"
  - 
    title: "Vector Analysis"
    link: "https://reference.wolfram.com/language/guide/VectorAnalysis.en.md"
  - 
    title: "Solvers over Regions"
    link: "https://reference.wolfram.com/language/guide/GeometricSolvers.en.md"
  - 
    title: "Differential Equations"
    link: "https://reference.wolfram.com/language/guide/DifferentialEquations.en.md"
related_functions: 
  - 
    title: "VectorDensityPlot"
    link: "https://reference.wolfram.com/language/ref/VectorDensityPlot.en.md"
  - 
    title: "StreamPlot"
    link: "https://reference.wolfram.com/language/ref/StreamPlot.en.md"
  - 
    title: "ListVectorPlot"
    link: "https://reference.wolfram.com/language/ref/ListVectorPlot.en.md"
  - 
    title: "LineIntegralConvolutionPlot"
    link: "https://reference.wolfram.com/language/ref/LineIntegralConvolutionPlot.en.md"
  - 
    title: "ParametricPlot"
    link: "https://reference.wolfram.com/language/ref/ParametricPlot.en.md"
  - 
    title: "ContourPlot"
    link: "https://reference.wolfram.com/language/ref/ContourPlot.en.md"
  - 
    title: "DensityPlot"
    link: "https://reference.wolfram.com/language/ref/DensityPlot.en.md"
  - 
    title: "Plot3D"
    link: "https://reference.wolfram.com/language/ref/Plot3D.en.md"
  - 
    title: "VectorPlot3D"
    link: "https://reference.wolfram.com/language/ref/VectorPlot3D.en.md"
  - 
    title: "SliceVectorPlot3D"
    link: "https://reference.wolfram.com/language/ref/SliceVectorPlot3D.en.md"
  - 
    title: "StreamPlot3D"
    link: "https://reference.wolfram.com/language/ref/StreamPlot3D.en.md"
  - 
    title: "GeoVectorPlot"
    link: "https://reference.wolfram.com/language/ref/GeoVectorPlot.en.md"
  - 
    title: "ComplexVectorPlot"
    link: "https://reference.wolfram.com/language/ref/ComplexVectorPlot.en.md"
---
# VectorPlot

VectorPlot[{vx, vy}, {x, xmin, xmax}, {y, ymin, ymax}] generates a vector plot of the vector field {vx, vy} as a function of x and y. 

VectorPlot[{{vx, vy}, {wx, wy}, …}, {x, xmin, xmax}, {y, ymin, ymax}] plots several vector fields. 

VectorPlot[…, {x, y}∈reg] takes the variables {x, y} to be in the geometric region reg.

## Details and Options

* ``VectorPlot`` is also known as field plot, quiver plot and direction plot.

* ``VectorPlot`` displays a vector field by drawing arrows normalized to a fixed length. The arrows are colored by default according to the magnitude $s=\left\| \left\{v_x,v_y\right\}\right\|$ of the vector field.

* The plot visualizes the set $\left\{\left.\left\{v_x,v_y\right\}\right|\{x,y\}\in \text{reg}\right\}$.

[image]

* ``VectorPlot`` omits any arrows for which the ``vi`` etc. do not evaluate to real numbers.

* The region ``reg`` can be any ``RegionQ`` object in 2D.

* ``VectorPlot`` treats the variables ``x`` and ``y`` as local, effectively using ``Block``.

* ``VectorPlot`` has attribute ``HoldAll``, and evaluates the ``vi`` etc. only after assigning specific numerical values to ``x`` and ``y``. In some cases it may be more efficient to use ``Evaluate`` to evaluate the ``vi`` etc. symbolically first.

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

|                             |                   |                                                      |
| --------------------------- | ----------------- | ---------------------------------------------------- |
| AspectRatio                 | 1                 | ratio of height to width                             |
| ClippingStyle               | Automatic         | how to display arrows outside the vector range       |
| EvaluationMonitor           | None              | expression to evaluate at every function evaluation  |
| Frame                       | True              | whether to draw a frame around the plot              |
| FrameTicks                  | Automatic         | frame tick marks                                     |
| Method                      | Automatic         | methods to use for the plot                          |
| PerformanceGoal             | \$PerformanceGoal | aspects of performance to try to optimize            |
| PlotLayout                  | Automatic         | how to position fields                               |
| PlotLegends                 | None              | legends to include                                   |
| PlotRange                   | {Full, Full}      | range of x, y values to include                      |
| PlotRangePadding            | Automatic         | how much to pad the range of values                  |
| PlotTheme                   | \$PlotTheme       | overall theme for the plot                           |
| RegionBoundaryStyle         | Automatic         | how to style plot region boundaries                  |
| RegionFillingStyle          | Automatic         | how to style plot region interiors                   |
| RegionFunction              | (True&)           | determine what region to include                     |
| ScalingFunctions            | None              | how to scale individual coordinates                  |
| VectorAspectRatio           | Automatic         | width to length ratio for arrows                     |
| VectorColorFunction         | Automatic         | how to color arrows                                  |
| VectorColorFunctionScaling  | True              | whether to scale the argument to VectorColorFunction |
| VectorMarkers               | Automatic         | shape to use for arrows                              |
| VectorPoints                | Automatic         | the number or placement of arrows                    |
| VectorRange                 | Automatic         | range of vector lengths to show                      |
| VectorScaling               | None              | how to scale the sizes of arrows                     |
| VectorSizes                 | Automatic         | sizes of displayed arrows                            |
| VectorStyle                 | Automatic         | how to style arrows                                  |
| WorkingPrecision            | MachinePrecision  | precision to use in internal computations            |

* The individual arrows are scaled to fit inside bounding circles around each point.

[image]

* ``VectorScaling`` scales the magnitudes of the vectors into the range of arrow sizes ``smin`` to ``smax`` given by ``VectorSizes``.

* ``VectorScaling -> Automatic`` will scale the arrow lengths depending on the vector magnitudes:

[image]

* Possible settings for ``PlotLayout`` that show single groups of vectors in multiple plot panels include:

|                                       |                                                      |
| ------------------------------------- | ---------------------------------------------------- |
| "Column"                              | use separate groups of vectors in a column of panels |
| "Row"                                 | use separate groups of vectors 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]

* The arrow markers given by ``VectorMarkers`` are drawn inside a box whose width and length are in the proportion $w/l$ specified by ``VectorAspectRatio``.

* Common markers include:

|         |           |                                             |
| ------- | --------- | ------------------------------------------- |
| [image] | "Segment" | line segment aligned in the field direction |
| [image] | "PinDart" | pin dart aligned along the field            |
| [image] | "Dart"    | dart-shaped marker                          |
| [image] | "Drop"    | drop-shaped marker                          |

* ``VectorColorFunction -> None`` will draw the arrows with the style specified by ``VectorStyle``.

* The arguments supplied to functions in ``RegionFunction`` and ``VectorColorFunction`` are ``x``, ``y``, ``vx``, ``vy``, ``Norm[{vx, vy}]``.

* Possible settings for ``ScalingFunctions`` are:

{Subscript[``s``, ``x``], Subscript[``s``, ``y``]}	scale ``x`` and ``y`` axes

* Common built-in scaling functions ``s`` include:

|             |         |                                                     |
| ----------- | ------- | --------------------------------------------------- |
| "Log"       | [image] | log scale with automatic tick labeling              |
| "Log10"     | [image] | base-10 log scale with powers of 10 for ticks       |
| "SignedLog" | [image] | log-like scale that includes 0 and negative numbers |
| "Reverse"   | [image] | reverse the coordinate direction                    |
| "Infinite"  | [image] | infinite scale                                      |

### List of all options

|                            |                   |                                                                                    |
| -------------------------- | ----------------- | ---------------------------------------------------------------------------------- |
| AlignmentPoint             | Center            | the default point in the graphic to align with                                     |
| AspectRatio                | 1                 | ratio of height to width                                                           |
| Axes                       | False             | whether to draw axes                                                               |
| AxesLabel                  | None              | axes labels                                                                        |
| AxesOrigin                 | Automatic         | where axes should cross                                                            |
| AxesStyle                  | {}                | style specifications for the axes                                                  |
| Background                 | None              | background color for the plot                                                      |
| BaselinePosition           | Automatic         | how to align with a surrounding text baseline                                      |
| BaseStyle                  | {}                | base style specifications for the graphic                                          |
| ClippingStyle              | Automatic         | how to display arrows outside the vector range                                     |
| ContentSelectable          | Automatic         | whether to allow contents to be selected                                           |
| CoordinatesToolOptions     | Automatic         | detailed behavior of the coordinates tool                                          |
| Epilog                     | {}                | primitives rendered after the main plot                                            |
| EvaluationMonitor          | None              | expression to evaluate at every function evaluation                                |
| FormatType                 | TraditionalForm   | the default format type for text                                                   |
| Frame                      | True              | whether to draw a frame around the plot                                            |
| FrameLabel                 | None              | frame labels                                                                       |
| FrameStyle                 | {}                | style specifications for the frame                                                 |
| FrameTicks                 | Automatic         | frame tick marks                                                                   |
| 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                                   |
| LabelStyle                 | {}                | style specifications for labels                                                    |
| Method                     | Automatic         | methods to use for the plot                                                        |
| PerformanceGoal            | \$PerformanceGoal | aspects of performance to try to optimize                                          |
| PlotLabel                  | None              | an overall label for the plot                                                      |
| PlotLayout                 | Automatic         | how to position fields                                                             |
| PlotLegends                | None              | legends to include                                                                 |
| PlotRange                  | {Full, Full}      | range of x, y values to include                                                    |
| PlotRangeClipping          | False             | whether to clip at the plot range                                                  |
| PlotRangePadding           | Automatic         | how much to pad the range of values                                                |
| PlotRegion                 | Automatic         | the final display region to be filled                                              |
| 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                                           |
| RegionBoundaryStyle        | Automatic         | how to style plot region boundaries                                                |
| RegionFillingStyle         | Automatic         | how to style plot region interiors                                                 |
| RegionFunction             | (True&)           | determine what region to include                                                   |
| RotateLabel                | True              | whether to rotate y labels on the frame                                            |
| ScalingFunctions           | None              | how to scale individual coordinates                                                |
| Ticks                      | Automatic         | axes ticks                                                                         |
| TicksStyle                 | {}                | style specifications for axes ticks                                                |
| VectorAspectRatio          | Automatic         | width to length ratio for arrows                                                   |
| VectorColorFunction        | Automatic         | how to color arrows                                                                |
| VectorColorFunctionScaling | True              | whether to scale the argument to VectorColorFunction                               |
| VectorMarkers              | Automatic         | shape to use for arrows                                                            |
| VectorPoints               | Automatic         | the number or placement of arrows                                                  |
| VectorRange                | Automatic         | range of vector lengths to show                                                    |
| VectorScaling              | None              | how to scale the sizes of arrows                                                   |
| VectorSizes                | Automatic         | sizes of displayed arrows                                                          |
| VectorStyle                | Automatic         | how to style arrows                                                                |
| WorkingPrecision           | MachinePrecision  | precision to use in internal computations                                          |

## Examples (147)

### Basic Examples (5)

Plot the vector field $\{y,-x\}$ with color indicating the vector magnitude:

```wl
In[1]:= VectorPlot[{y, -x}, {x, -3, 3}, {y, -3, 3}]

Out[1]= [image]
```

---

Include a legend for the vector magnitudes:

```wl
In[1]:= VectorPlot[{y, -x}, {x, -3, 3}, {y, -3, 3}, PlotLegends -> Automatic]

Out[1]= [image]
```

---

Use a drop-shaped marker to represent the vectors:

```wl
In[1]:= VectorPlot[{x + y, y - x}, {x, -3, 3}, {y, -3, 3}, VectorMarkers -> "Drop"]

Out[1]= [image]
```

---

Use a multi-panel layout to show multiple vector fields at the same time:

```wl
In[1]:= VectorPlot[{{x + y, y - x}, {y, x + y}}, {x, -3, 3}, {y, -3, 3}, PlotLayout -> "Row"]

Out[1]= [image]
```

---

Use a log scale for the ``x`` axis:

```wl
In[1]:= VectorPlot[{x, y}, {x, 1, 100}, {y, 1, 100}, ScalingFunctions -> {"Log", None}]

Out[1]= [image]
```

Reverse the ``y`` scale so it increases toward the bottom:

```wl
In[2]:= VectorPlot[{x, y}, {x, 1, 100}, {y, 1, 100}, ScalingFunctions -> {None, "Reverse"}]

Out[2]= [image]
```

### Scope (24)

#### Sampling (9)

Plot a vector field with vectors placed with specified densities:

```wl
In[1]:= {VectorPlot[{y, -x}, {x, -2, 2}, {y, -2, 2}, VectorPoints -> Coarse], VectorPlot[{y, -x}, {x, -2, 2}, {y, -2, 2}, VectorPoints -> Fine]}

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

---

Sample the vector field on a regular grid of points:

```wl
In[1]:= VectorPlot[{y, -x}, {x, -2, 2}, {y, -2, 2}, VectorPoints -> "Regular"]

Out[1]= [image]
```

Sample the vector field on an irregular mesh:

```wl
In[2]:= VectorPlot[{y, -x}, {x, -2, 2}, {y, -2, 2}, VectorPoints -> "Mesh"]

Out[2]= [image]
```

---

Specify how many vector points to use in each direction:

```wl
In[1]:= VectorPlot[{y, -x}, {x, -2, 2}, {y, -2, 2}, VectorPoints -> 10]

Out[1]= [image]
```

---

Plot the vectors that go through a set of seed points:

```wl
In[1]:= points = RandomReal[{-2, 2}, {30, 2}];

In[2]:= VectorPlot[{-1 - x ^ 2 + y, 1 + x - y ^ 2}, {x, -2, 2}, {y, -2, 2}, VectorPoints -> points, Epilog -> {Black, PointSize[Medium], Point[points]}]

Out[2]= [image]
```

---

Plot vectors over a specified region:

```wl
In[1]:= VectorPlot[{-1 - x ^ 2 + y, 1 + x - y ^ 2}, {x, -3, 3}, {y, -3, 3}, RegionFunction -> Function[{x, y}, 1 ≤ x^2 + y^2 ≤ 9]]

Out[1]= [image]
```

---

The domain may be specified by a region:

```wl
In[1]:= VectorPlot[{y, -x}, {x, y}∈Disk[]]

Out[1]= [image]
```

---

The domain may be specified by a ``MeshRegion`` :

```wl
In[1]:= \[ScriptCapitalD] = MeshRegion[{{0, 0}, {5, -2}, {3, 0}, {5, 2}}, Polygon[{1, 2, 3, 4}]];

In[2]:= VectorPlot[{Sin[x], Cos[y]}, {x, y}∈\[ScriptCapitalD]]

Out[2]= [image]
```

---

Plot multiple vector fields:

```wl
In[1]:= VectorPlot[{{x, y}, {y, -x}}, {x, -3, 3}, {y, -3, 3}, VectorColorFunction -> None]

Out[1]= [image]
```

---

Use ``Evaluate`` to evaluate the vector field symbolically before numeric assignment:

```wl
In[1]:= VectorPlot[Evaluate[D[Sin[x y], {{x, y}}]], {x, 0, 1}, {y, 0, 1}]

Out[1]= [image]
```

#### Presentation (15)

Plot a vector field with automatically scaled arrows:

```wl
In[1]:= VectorPlot[{x, -y ^ 2 + x + 2}, {x, -3, 3}, {y, -3, 3}, VectorScaling -> Automatic]

Out[1]= [image]
```

---

Use a single color for the arrows:

```wl
In[1]:= VectorPlot[{x, -y ^ 2 + x + 2}, {x, -3, 3}, {y, -3, 3}, VectorColorFunction -> None]

Out[1]= [image]
```

---

Plot a vector field with arrows of specified size:

```wl
In[1]:= Table[VectorPlot[{x, -y ^ 2 + x + 2}, {x, -3, 3}, {y, -3, 3}, PlotLabel -> s, VectorSizes -> s], {s, {Tiny, Small, Medium, Large}}]

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

---

Draw the arrows starting from the sample points:

```wl
In[1]:= pts = Tuples[Range[-3, 3], 2];

In[2]:= VectorPlot[{y, -x}, {x, -3, 3}, {y, -3, 3}, VectorMarkers -> Placed["Arrow", "Start"], VectorPoints -> pts, Epilog -> {AbsolutePointSize[5], Black, Point[pts]}]

Out[2]= [image]
```

---

Draw the arrows without the arrowheads:

```wl
In[1]:= VectorPlot[{x, -y}, {x, -3, 3}, {y, -3, 3}, VectorMarkers -> "Segment"]

Out[1]= [image]
```

---

Change the overall shape of the markers:

```wl
In[1]:= VectorPlot[{x, -y ^ 2 + x + 2}, {x, -3, 3}, {y, -3, 3}, VectorMarkers -> "Drop", VectorAspectRatio -> 0.5]

Out[1]= [image]
```

---

Change the default color function:

```wl
In[1]:= VectorPlot[{x, -y ^ 2 + x + 2}, {x, -3, 3}, {y, -3, 3}, VectorColorFunction -> "AvocadoColors"]

Out[1]= [image]
```

---

Include a legend:

```wl
In[1]:= VectorPlot[{x, -y ^ 2 + x + 2}, {x, -3, 3}, {y, -3, 3}, VectorColorFunction -> "AvocadoColors", PlotLegends -> Automatic]

Out[1]= [image]
```

---

Use no color:

```wl
In[1]:= VectorPlot[{y, -x}, {x, -3, 3}, {y, -3, 3}, VectorColorFunction -> None]

Out[1]= [image]
```

---

Show multiple functions as densities in separate panels:

```wl
In[1]:= VectorPlot[{{-1 - x ^ 2 + y, 1 + x - y ^ 2}, {-(1 + x - y ^ 2), -1 - x ^ 2 + y}}, {x, -3, 3}, {y, -3, 3}, PlotLayout -> "Row"]

Out[1]= [image]
```

Use a column instead of a row:

```wl
In[2]:= VectorPlot[{{-1 - x ^ 2 + y, 1 + x - y ^ 2}, {-(1 + x - y ^ 2), -1 - x ^ 2 + y}}, {x, -3, 3}, {y, -3, 3}, PlotLayout -> "Column"]

Out[2]= [image]
```

---

Set the style for multiple vector fields:

```wl
In[1]:= VectorPlot[{{-1 - x ^ 2 + y, 1 + x - y ^ 2}, {-(1 + x - y ^ 2), -1 - x ^ 2 + y}}, {x, -3, 3}, {y, -3, 3}, VectorColorFunction -> None, VectorStyle -> {{Orange, "Drop"}, {Green, "Dart"}}]

Out[1]= [image]
```

---

``VectorColorFunction`` takes precedence over colors in ``VectorStyle`` :

```wl
In[1]:= VectorPlot[{-1 - x ^ 2 + y, 1 + x - y ^ 2}, {x, -3, 3}, {y, -3, 3}, VectorStyle -> Orange]

Out[1]= [image]
```

Set ``VectorColorFunction -> None`` to specify colors with ``VectorStyle`` :

```wl
In[2]:= VectorPlot[{-1 - x ^ 2 + y, 1 + x - y ^ 2}, {x, -3, 3}, {y, -3, 3}, VectorColorFunction -> None, VectorStyle -> Orange]

Out[2]= [image]
```

---

Include a legend for multiple vector fields:

```wl
In[1]:= VectorPlot[{{y, -x}, {x, y}}, {x, -3, 3}, {y, -3, 3}, PlotLegends -> {"one", "two"}, VectorColorFunction -> None]

Out[1]= [image]
```

---

Use a theme with simple ticks and grid lines:

```wl
In[1]:= VectorPlot[{-1 - x ^ 2 + y, 1 + x - y ^ 2}, {x, -3, 3}, {y, -3, 3}, PlotTheme -> "Business"]

Out[1]= [image]
```

---

Use a log scale for the ``x`` axis:

```wl
In[1]:= VectorPlot[{x, y}, {x, 1, 100}, {y, 1, 100}, ScalingFunctions -> {"Log", None}]

Out[1]= [image]
```

Reverse the ``y`` scale so it increases toward the bottom:

```wl
In[2]:= VectorPlot[{x, y}, {x, 1, 100}, {y, 1, 100}, ScalingFunctions -> {None, "Reverse"}]

Out[2]= [image]
```

### Options (97)

#### AspectRatio (4)

By default, ``AspectRatio`` uses the same width and height:

```wl
In[1]:= VectorPlot[{-1 - x ^ 2 + y, 1 + x - y ^ 2}, {x, -3, 3}, {y, -2, 2}]

Out[1]= [image]
```

---

Use a numerical value to specify the height to width ratio:

```wl
In[1]:= VectorPlot[{-1 - x ^ 2 + y, 1 + x - y ^ 2}, {x, -3, 3}, {y, -2, 2}, AspectRatio -> 1 / 2]

Out[1]= [image]
```

---

``AspectRatio -> Automatic`` determines the ratio from the plot ranges:

```wl
In[1]:= VectorPlot[{-1 - x ^ 2 + y, 1 + x - y ^ 2}, {x, -3, 3}, {y, -2, 2}, AspectRatio -> Automatic]

Out[1]= [image]
```

---

``AspectRatio -> Full`` adjusts the height and width to tightly fit inside the image size:

```wl
In[1]:= VectorPlot[{-1 - x ^ 2 + y, 1 + x - y ^ 2}, {x, -3, 3}, {y, -3, 3}, AspectRatio -> Full, ImageSize -> {300, 150}]

Out[1]= [image]
```

#### Axes (4)

By default, ``Axes`` are not drawn:

```wl
In[1]:= VectorPlot[{-1 - x ^ 2 + y, 1 + x - y ^ 2}, {x, -3, 3}, {y, -3, 3}, Frame -> False]

Out[1]= [image]
```

---

Use ``Axes -> True`` to turn on axes:

```wl
In[1]:= VectorPlot[{-1 - x ^ 2 + y, 1 + x - y ^ 2}, {x, -3, 3}, {y, -3, 3}, Frame -> False, Axes -> True]

Out[1]= [image]
```

---

Use ``AxesOrigin`` to specify where the axes intersect:

```wl
In[1]:= VectorPlot[{-1 - x ^ 2 + y, 1 + x - y ^ 2}, {x, -3, 3}, {y, -3, 3}, Frame -> False, Axes -> True, AxesOrigin -> {1, 1}]

Out[1]= [image]
```

---

Turn each axis on individually:

```wl
In[1]:= {VectorPlot[{-1 - x ^ 2 + y, 1 + x - y ^ 2}, {x, -3, 3}, {y, -3, 3}, Frame -> False, Axes -> {True, False}], VectorPlot[{-1 - x ^ 2 + y, 1 + x - y ^ 2}, {x, -3, 3}, {y, -3, 3}, Frame -> False, Axes -> {False, True}]}

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

#### AxesLabel (3)

No axes labels are drawn by default:

```wl
In[1]:= VectorPlot[{-1 - x ^ 2 + y, 1 + x - y ^ 2}, {x, -3, 3}, {y, -3, 3}, Frame -> False, Axes -> True]

Out[1]= [image]
```

---

Place a label on the $y$ axis:

```wl
In[1]:= VectorPlot[{-1 - x ^ 2 + y, 1 + x - y ^ 2}, {x, -3, 3}, {y, -3, 3}, Frame -> False, Axes -> True, AxesLabel -> y]

Out[1]= [image]
```

---

Specify axes labels:

```wl
In[1]:= VectorPlot[{-1 - x ^ 2 + y, 1 + x - y ^ 2}, {x, -3, 3}, {y, -3, 3}, Frame -> False, Axes -> True, AxesLabel -> {x, y}]

Out[1]= [image]
```

#### AxesOrigin (2)

The position of the axes is determined automatically:

```wl
In[1]:= VectorPlot[{-1 - x ^ 2 + y, 1 + x - y ^ 2}, {x, -3, 3}, {y, -3, 3}, Frame -> False, Axes -> True]

Out[1]= [image]
```

---

Specify an explicit origin for the axes:

```wl
In[1]:= VectorPlot[{-1 - x ^ 2 + y, 1 + x - y ^ 2}, {x, -3, 3}, {y, -3, 3}, Frame -> False, Axes -> True, AxesOrigin -> {-1, -1}]

Out[1]= [image]
```

#### AxesStyle (4)

Change the style for the axes:

```wl
In[1]:= VectorPlot[{-1 - x ^ 2 + y, 1 + x - y ^ 2}, {x, 0, 3}, {y, 0, 3}, Frame -> False, Axes -> True, AxesStyle -> Red]

Out[1]= [image]
```

---

Specify the style of each axis:

```wl
In[1]:= VectorPlot[{-1 - x ^ 2 + y, 1 + x - y ^ 2}, {x, 0, 3}, {y, 0, 3}, Frame -> False, Axes -> True, AxesStyle -> {Red, Blue}]

Out[1]= [image]
```

---

Use different styles for the ticks and the axes:

```wl
In[1]:= VectorPlot[{-1 - x ^ 2 + y, 1 + x - y ^ 2}, {x, 0, 3}, {y, 0, 3}, Frame -> False, Axes -> True, AxesStyle -> Green, TicksStyle -> Black]

Out[1]= [image]
```

---

Use different styles for the labels and the axes:

```wl
In[1]:= VectorPlot[{-1 - x ^ 2 + y, 1 + x - y ^ 2}, {x, 0, 3}, {y, 0, 3}, Frame -> False, Axes -> True, AxesStyle -> Green, LabelStyle -> Black]

Out[1]= [image]
```

#### Background (1)

Use colored backgrounds:

```wl
In[1]:= VectorPlot[{-1 - x ^ 2 + y, 1 + x - y ^ 2}, {x, -3, 3}, {y, -3, 3}, Background -> LightGreen]

Out[1]= [image]
```

#### ClippingStyle (4)

Vectors are clipped via ``VectorRange``. The default clipping style is automatically chosen:

```wl
In[1]:= VectorPlot[({x, y}/Norm[{x, y}]^3), {x, -3, 3}, {y, -3, 3}, VectorRange -> {0.2, 0.8}]

Out[1]= [image]
```

---

Do not show clipped vectors:

```wl
In[1]:= VectorPlot[({x, y}/Norm[{x, y}]^3), {x, -3, 3}, {y, -3, 3}, VectorRange -> {0.2, 0.8}, ClippingStyle -> None]

Out[1]= [image]
```

---

Specify the style for clipped vectors:

```wl
In[1]:= VectorPlot[({x, y}/Norm[{x, y}]^3), {x, -3, 3}, {y, -3, 3}, VectorRange -> {0.2, 0.8}, ClippingStyle -> LightGray]

Out[1]= [image]
```

---

Color upper and lower clipped vectors differently:

```wl
In[1]:= VectorPlot[({x, y}/Norm[{x, y}]^3), {x, -3, 3}, {y, -3, 3}, VectorRange -> {0.2, 0.8}, ClippingStyle -> {LightGray, Cyan}]

Out[1]= [image]
```

#### EvaluationMonitor (2)

Show where the vector field function is sampled:

```wl
In[1]:= ListPlot[Reap[VectorPlot[{-1 - x ^ 2 + y, 1 + x - y ^ 2}, {x, -3, 3}, {y, -3, 3}, EvaluationMonitor :> Sow[{x, y}]]][[-1, 1]]]

Out[1]= [image]
```

---

Count the number of times the vector field function is evaluated:

```wl
In[1]:= Block[{k = 0}, VectorPlot[{-1 - x ^ 2 + y, 1 + x - y ^ 2}, {x, -3, 3}, {y, -3, 3}, EvaluationMonitor :> k++];k]

Out[1]= 250
```

#### ImageSize (5)

Use named sizes such as ``Tiny``, ``Small``, ``Medium`` and ``Large`` :

```wl
In[1]:= {VectorPlot[{-1 - x ^ 2 + y, 1 + x - y ^ 2}, {x, -3, 3}, {y, -3, 3}, ImageSize -> Tiny], VectorPlot[{-1 - x ^ 2 + y, 1 + x - y ^ 2}, {x, -3, 3}, {y, -3, 3}, ImageSize -> Small]}

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

---

Specify the width of the plot:

```wl
In[1]:= {VectorPlot[{-1 - x ^ 2 + y, 1 + x - y ^ 2}, {x, -3, 3}, {y, -3, 3}, ImageSize -> 150], VectorPlot[{-1 - x ^ 2 + y, 1 + x - y ^ 2}, {x, -3, 3}, {y, -3, 3}, AspectRatio -> 1.5, ImageSize -> 150]}

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

Specify the height of the plot:

```wl
In[2]:= {VectorPlot[{-1 - x ^ 2 + y, 1 + x - y ^ 2}, {x, -3, 3}, {y, -3, 3}, ImageSize -> {Automatic, 150}], VectorPlot[{-1 - x ^ 2 + y, 1 + x - y ^ 2}, {x, -3, 3}, {y, -3, 3}, AspectRatio -> 2, ImageSize -> {Automatic, 150}]}

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

---

Allow the width and height to be up to a certain size:

```wl
In[1]:= {VectorPlot[{-1 - x ^ 2 + y, 1 + x - y ^ 2}, {x, -3, 3}, {y, -3, 3}, ImageSize -> UpTo[200]], VectorPlot[{-1 - x ^ 2 + y, 1 + x - y ^ 2}, {x, -3, 3}, {y, -3, 3}, AspectRatio -> 2, ImageSize -> UpTo[200]]}

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

---

Specify the width and height for a graphic, padding with space if necessary:

```wl
In[1]:= VectorPlot[{-1 - x ^ 2 + y, 1 + x - y ^ 2}, {x, -3, 3}, {y, -3, 3}, ImageSize -> {300, 200}, Background -> LightBlue]

Out[1]= [image]
```

Setting ``AspectRatio -> Full`` will fill the image size:

```wl
In[2]:= VectorPlot[{-1 - x ^ 2 + y, 1 + x - y ^ 2}, {x, -3, 3}, {y, -3, 3}, AspectRatio -> Full, ImageSize -> {300, 200}, Background -> LightBlue]

Out[2]= [image]
```

---

Use maximum sizes for the width and height:

```wl
In[1]:= {VectorPlot[{-1 - x ^ 2 + y, 1 + x - y ^ 2}, {x, -3, 3}, {y, -3, 3}, ImageSize -> {UpTo[150], UpTo[100]}], VectorPlot[{-1 - x ^ 2 + y, 1 + x - y ^ 2}, {x, -3, 3}, {y, -3, 3}, AspectRatio -> 2, ImageSize -> {UpTo[150], UpTo[100]}]}

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

#### PlotLayout (2)

Place each group of vectors in a separate panel using shared axes:

```wl
In[1]:= VectorPlot[{{y, -x}, {x, y}}, {x, -3, 3}, {y, -3, 3}, ImageSize -> Medium, PlotLayout -> "Column"]

Out[1]= [image]
```

Use a row instead of a column:

```wl
In[2]:= VectorPlot[{{y, -x}, {x, y}}, {x, -3, 3}, {y, -3, 3}, ImageSize -> Medium, PlotLayout -> "Row"]

Out[2]= [image]
```

---

Use multiple columns or rows:

```wl
In[1]:= VectorPlot[{{y, -x}, {x, y}, {y, x + y}, {x, x - y}}, {x, -3, 3}, {y, -3, 3}, ImageSize -> Medium, PlotLayout -> {"Column", 2}]

Out[1]= [image]
```

Prefer full columns or rows:

```wl
In[2]:= VectorPlot[{{y, -x}, {x, y}, {y, x + y}, {x, x - y}, {x + y, x}, {y - x, x + y}}, {x, -3, 3}, {y, -3, 3}, ImageSize -> Medium, PlotLayout -> {"Column", UpTo[4]}]

Out[2]= [image]

In[3]:= VectorPlot[{{y, -x}, {x, y}, {y, x + y}, {x, x - y}, {x + y, x}, {y - x, x + y}}, {x, -3, 3}, {y, -3, 3}, ImageSize -> Medium, PlotLayout -> {"Column", 4}]

Out[3]= [image]
```

#### PlotLegends (4)

No legends are included by default:

```wl
In[1]:= VectorPlot[{y, Exp[-x]}, {x, -3, 3}, {y, -3, 3}]

Out[1]= [image]
```

---

Include a legend to show the color range of vector norms:

```wl
In[1]:= VectorPlot[{y, Exp[-x]}, {x, -3, 3}, {y, -3, 3}, PlotLegends -> Automatic]

Out[1]= [image]
```

---

Include a legend for multiple fields:

```wl
In[1]:= VectorPlot[{{x, y}, {y, -x}}, {x, -3, 3}, {y, -3, 3}, PlotLegends -> {"one", "two"}, VectorColorFunction -> None]

Out[1]= [image]
```

---

Control the placement of the legend:

```wl
In[1]:= VectorPlot[{y, Exp[-x]}, {x, -3, 3}, {y, -3, 3}, PlotLegends -> Placed[Automatic, Below]]

Out[1]= [image]
```

#### PlotRange (5)

The full plot range is used by default:

```wl
In[1]:= VectorPlot[{-1 - x ^ 2 + y, 1 + x - y ^ 2}, {x, -3, 3}, {y, -3, 3}, PlotRange -> Full]

Out[1]= [image]
```

---

Specify an explicit limit for both $x$ and $y$ ranges:

```wl
In[1]:= VectorPlot[{-1 - x ^ 2 + y, 1 + x - y ^ 2}, {x, -3, 3}, {y, -3, 3}, PlotRange -> 2]

Out[1]= [image]
```

---

Specify an explicit $x$ range:

```wl
In[1]:= VectorPlot[{-1 - x ^ 2 + y, 1 + x - y ^ 2}, {x, -3, 3}, {y, -3, 3}, PlotRange -> {{0, 2}, Full}]

Out[1]= [image]
```

---

Specify an explicit $x$ maximum range:

```wl
In[1]:= VectorPlot[{-1 - x ^ 2 + y, 1 + x - y ^ 2}, {x, -3, 3}, {y, -3, 3}, PlotRange -> {{Full, 4}, Full}]

Out[1]= [image]
```

---

Specify different $x$ and $y$ ranges:

```wl
In[1]:= VectorPlot[{-1 - x ^ 2 + y, 1 + x - y ^ 2}, {x, -3, 3}, {y, -3, 3}, PlotRange -> {{-2, 1.5}, {-1, 2}}]

Out[1]= [image]
```

#### PlotTheme (1)

Use a theme with detailed ticks and axes:

```wl
In[1]:= VectorPlot[{-1 - x ^ 2 + y, 1 + x - y ^ 2}, {x, -3, 3}, {y, -3, 3}, PlotTheme -> "Scientific"]

Out[1]= [image]
```

Add automatic ``GridLines`` :

```wl
In[2]:= VectorPlot[{-1 - x ^ 2 + y, 1 + x - y ^ 2}, {x, -3, 3}, {y, -3, 3}, PlotTheme -> "Scientific", GridLines -> Automatic]

Out[2]= [image]
```

#### RegionBoundaryStyle (6)

Show the region being plotted:

```wl
In[1]:= VectorPlot[{x, y}, {x, y}∈Disk[]]

Out[1]= [image]
```

---

Show the region defined by a region function:

```wl
In[1]:= VectorPlot[{x, y}, {x, -1, 1}, {y, -1, 1}, RegionFunction -> Function[{x, y}, x + y > 0]]

Out[1]= [image]
```

---

The boundaries of full rectangular regions are not shown:

```wl
In[1]:= VectorPlot[{x, y}, {x, -1, 1}, {y, -1, 1}]

Out[1]= [image]
```

---

Use ``None`` to not show the boundary:

```wl
In[1]:= VectorPlot[{x, y}, {x, y}∈Disk[], RegionBoundaryStyle -> None]

Out[1]= [image]
```

Omit the interior filling as well:

```wl
In[2]:= VectorPlot[{x, y}, {x, y}∈Disk[], RegionBoundaryStyle -> None, RegionFillingStyle -> None]

Out[2]= [image]
```

---

Specify a style for the boundary:

```wl
In[1]:= VectorPlot[{x, y}, {x, y}∈Disk[], RegionBoundaryStyle -> Red]

Out[1]= [image]
```

---

Specify a style for full rectangular regions:

```wl
In[1]:= VectorPlot[{x, y}, {x, -1, 1}, {y, -1, 1}, RegionBoundaryStyle -> Red]

Out[1]= [image]
```

#### RegionFillingStyle (6)

Show the region being plotted:

```wl
In[1]:= VectorPlot[{x, y}, {x, y}∈Disk[]]

Out[1]= [image]
```

---

Show the region defined by a region function:

```wl
In[1]:= VectorPlot[{x, y}, {x, -1, 1}, {y, -1, 1}, RegionFunction -> Function[{x, y}, x + y > 0]]

Out[1]= [image]
```

---

The interior of full rectangular regions are not shown:

```wl
In[1]:= VectorPlot[{x, y}, {x, -1, 1}, {y, -1, 1}]

Out[1]= [image]
```

---

Use ``None`` to not show the interior filling:

```wl
In[1]:= VectorPlot[{x, y}, {x, y}∈Disk[], RegionFillingStyle -> None]

Out[1]= [image]
```

Omit the boundary curve as well:

```wl
In[2]:= VectorPlot[{x, y}, {x, y}∈Disk[], RegionBoundaryStyle -> None, RegionFillingStyle -> None]

Out[2]= [image]
```

---

Specify a style for the interior filling:

```wl
In[1]:= VectorPlot[{x, y}, {x, y}∈Disk[], RegionFillingStyle -> Gray]

Out[1]= [image]
```

---

Specify a style for full rectangular region:

```wl
In[1]:= VectorPlot[{x, y}, {x, -1, 1}, {y, -1, 1}, RegionFillingStyle -> Gray]

Out[1]= [image]
```

#### RegionFunction (4)

Plot vectors only over a certain region:

```wl
In[1]:= VectorPlot[{-1 - x ^ 2 + y, 1 + x - y ^ 2}, {x, -3, 3}, {y, -3, 3}, RegionFunction -> Function[{x, y, vx, vy, n}, 1 ≤ x^2 + y^2 ≤ 9]]

Out[1]= [image]
```

---

Modify the method by which field points are generated to better reflect the boundary of the region:

```wl
In[1]:= Table[VectorPlot[{-1 - x ^ 2 + y, 1 + x - y ^ 2}, {x, -3, 3}, {y, -3, 3}, RegionFunction -> Function[{x, y, vx, vy, n}, 1 ≤ x^2 + y^2 ≤ 9], PlotLabel -> vp, VectorPoints -> vp], {vp, {"Hexagonal", "Regular", "Mesh", 25}}]

Out[1]= [image]
```

---

Plot vectors only over regions where the field magnitude is above a given threshold:

```wl
In[1]:= VectorPlot[{-1 - x ^ 2 + y, 1 + x - y ^ 2}, {x, -3, 3}, {y, -3, 3}, RegionFunction -> Function[{x, y, vx, vy, n}, n > 6]]

Out[1]= [image]
```

---

Use any logical combination of conditions:

```wl
In[1]:= VectorPlot[{-1 - x ^ 2 + y, 1 + x - y ^ 2}, {x, -3, 3}, {y, -3, 3}, RegionFunction -> Function[{x, y, vx, vy, n}, 4 < n < 9 || 0 < n < 2]]

Out[1]= [image]
```

#### ScalingFunctions (2)

Use a log scale for the ``x`` axis:

```wl
In[1]:= VectorPlot[{x, y}, {x, 1, 100}, {y, 1, 10}, ScalingFunctions -> {"Log", None}]

Out[1]= [image]
```

---

Reverse the ``y`` scale so it increases toward the bottom:

```wl
In[1]:= VectorPlot[{x, y}, {x, 1, 100}, {y, 1, 100}, ScalingFunctions -> {None, "Reverse"}]

Out[1]= [image]
```

#### VectorAspectRatio (2)

The default aspect ratio for a vector marker is 1/4:

```wl
In[1]:= VectorPlot[{y - x(1 - x^2 - y^2)^2, -x - y(1 - x^2 - y^2)^2}, {x, -3, 3}, {y, -3, 3}, VectorAspectRatio -> 1 / 4]

Out[1]= [image]
```

---

Increase the relative width of a vector marker:

```wl
In[1]:= VectorPlot[{y - x(1 - x^2 - y^2)^2, -x - y(1 - x^2 - y^2)^2}, {x, -3, 3}, {y, -3, 3}, VectorAspectRatio -> 1 / 2]

Out[1]= [image]
```

#### VectorColorFunction (4)

Color the vectors according to their norms:

```wl
In[1]:= VectorPlot[{y, -x }, {x, -3, 3}, {y, -3, 3}, VectorColorFunction -> Hue]

Out[1]= [image]
```

---

Use any named color gradient from ``ColorData``:

```wl
In[1]:= VectorPlot[{y, -x }, {x, -3, 3}, {y, -3, 3}, VectorColorFunction -> "Rainbow"]

Out[1]= [image]
```

---

Color the vectors according to their $x$ values:

```wl
In[1]:= VectorPlot[{y, -x }, {x, -3, 3}, {y, -3, 3}, VectorColorFunction -> Function[{x, y, vx, vy, n}, ColorData["ThermometerColors"][x]]]

Out[1]= [image]
```

---

Use ``VectorColorFunctionScaling -> False`` to get unscaled values:

```wl
In[1]:= VectorPlot[{y, -x }, {x, -3, 3}, {y, -3, 3}, VectorColorFunction -> Function[{x, y, vx, vy, n}, ColorData[22][Round[n]]], VectorColorFunctionScaling -> False]

Out[1]= [image]
```

#### VectorColorFunctionScaling (4)

By default, scaled values are used:

```wl
In[1]:= VectorPlot[{y, -x }, {x, -4, 4}, {y, -4, 4}, VectorColorFunction -> Hue]

Out[1]= [image]
```

---

Use ``VectorColorFunctionScaling -> False`` to get unscaled values:

```wl
In[1]:= VectorPlot[{y, -x }, {x, -4, 4}, {y, -4, 4}, VectorColorFunction -> Hue, VectorColorFunctionScaling -> False]

Out[1]= [image]
```

---

Use unscaled coordinates in the $x$ direction and scaled coordinates in the $y$ direction:

```wl
In[1]:= VectorPlot[{y, -x }, {x, -3, 3}, {y, -3, 3}, VectorColorFunction -> Function[{x, y, vx, vy, n}, Hue[x, y, 1]], VectorColorFunctionScaling -> {False, True}]

Out[1]= [image]
```

---

Explicitly specify the scaling for each color function argument:

```wl
In[1]:= VectorPlot[{y, -x }, {x, -3, 3}, {y, -3, 3}, VectorColorFunction -> Function[{x, y, vx, vy, n}, Hue[n, y, 1]], VectorColorFunctionScaling -> {True, True, True, True, False}]

Out[1]= [image]
```

#### VectorMarkers (4)

Vectors are drawn as arrows by default:

```wl
In[1]:= VectorPlot[{y, -x }, {x, -3, 3}, {y, -3, 3}]

Out[1]= [image]
```

---

Use a named appearance to draw the vectors:

```wl
In[1]:= VectorPlot[{y, -x }, {x, -3, 3}, {y, -3, 3}, VectorMarkers -> "Drop"]

Out[1]= [image]
```

---

Use different markers for different vector fields:

```wl
In[1]:= VectorPlot[{{y, -x }, {x, y}}, {x, -3, 3}, {y, -3, 3}, VectorMarkers -> {"Segment", "Dart"}]

Out[1]= [image]
```

---

By default, markers are centered on vector points:

```wl
In[1]:= pts = Tuples[Range[-3, 3], 2];

In[2]:= VectorPlot[{y, -x }, {x, -3, 3}, {y, -3, 3}, VectorPoints -> pts, Epilog -> {AbsolutePointSize[5], Black, Point[pts]}]

Out[2]= [image]
```

Start the vectors at the points:

```wl
In[3]:= VectorPlot[{y, -x }, {x, -3, 3}, {y, -3, 3}, VectorMarkers -> Placed["Arrow", "Start"], VectorPoints -> pts, Epilog -> {AbsolutePointSize[5], Black, Point[pts]}]

Out[3]= [image]
```

End the vectors at the points:

```wl
In[4]:= VectorPlot[{y, -x }, {x, -3, 3}, {y, -3, 3}, VectorMarkers -> Placed["Arrow", "End"], VectorPoints -> pts, Epilog -> {AbsolutePointSize[5], Black, Point[pts]}]

Out[4]= [image]
```

#### VectorPoints (10)

Use automatically determined vector points:

```wl
In[1]:= VectorPlot[{y, -x}, {x, -2, 2}, {y, -2, 2}, VectorPoints -> Automatic]

Out[1]= [image]
```

---

Use symbolic names to specify the set of field vectors:

```wl
In[1]:= Table[VectorPlot[{y, -x}, {x, -2, 2}, {y, -2, 2}, PlotLabel -> k, VectorPoints -> k], {k, {Fine, Coarse}}]

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

---

Create a hexagonal grid of field vectors with the same number of arrows for $x$ and $y$ :

```wl
In[1]:= VectorPlot[{y, -x}, {x, -3, 3}, {y, -3, 3}, VectorPoints -> 5]

Out[1]= [image]
```

---

Create a hexagonal grid of field vectors with a different number of arrows for $x$ and $y$ :

```wl
In[1]:= VectorPlot[{y, -x}, {x, -3, 3}, {y, -3, 3}, VectorPoints -> {4, 7}]

Out[1]= [image]
```

---

Specify a list of points for showing field vectors:

```wl
In[1]:= VectorPlot[{-1 - x ^ 2 + y, 1 + x - y ^ 2}, {x, -3, 3}, {y, -3, 3}, VectorPoints -> RandomReal[{-3, 3}, {300, 2}]]

Out[1]= [image]
```

---

Use a different number of field vectors on a hexagonal grid:

```wl
In[1]:= Table[VectorPlot[{y ^ 2, x ^ 2 - y ^ 2}, {x, -3, 3}, {y, -3, 3}, PlotLabel -> n, VectorPoints -> n], {n, 5, 20, 5}]

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

---

The location for vectors is given in the middle of the drawn vector:

```wl
In[1]:= points = {{-1, -1}, {-1, 1}, {0, 0}, {1, -1}, {1, 1}};

In[2]:= VectorPlot[{-1 - x ^ 2 + y, 1 + x - y ^ 2}, {x, -2, 2}, {y, -2, 2}, VectorPoints -> points, Epilog -> {Black, PointSize[Medium], Point[points]}]

Out[2]= [image]
```

---

Use a rectangular mesh instead of a hexagonal mesh:

```wl
In[1]:= VectorPlot[{-1 - x ^ 2 + y, 1 + x - y ^ 2}, {x, -2, 2}, {y, -2, 2}, VectorPoints -> "Regular"]

Out[1]= [image]
```

---

Use a mesh generated from a triangularization of the region:

```wl
In[1]:= VectorPlot[{-1 - x ^ 2 + y, 1 + x - y ^ 2}, {x, -2, 2}, {y, -2, 2}, VectorPoints -> "Mesh"]

Out[1]= [image]
```

---

Use "Mesh" to better represent the boundary of a region:

```wl
In[1]:= VectorPlot[{-1 - x ^ 2 + y, 1 + x - y ^ 2}, {x, -2, 2}, {y, -2, 2}, RegionFunction -> Function[{x, y}, x^2 + (y^2/4) ≥ 1], VectorPoints -> "Mesh"]

Out[1]= [image]
```

#### VectorRange (4)

The clipping of vectors with very small or very large magnitudes is done automatically:

```wl
In[1]:= VectorPlot[({x, y}/Norm[{x, y}]^3), {x, -3, 3}, {y, -3, 3}, VectorRange -> Automatic]

Out[1]= [image]
```

---

Specify the range of vector norms:

```wl
In[1]:= VectorPlot[({x, y}/Norm[{x, y}]^3), {x, -3, 3}, {y, -3, 3}, VectorRange -> {0.1, 2}]

Out[1]= [image]
```

---

Suppress the clipped vectors:

```wl
In[1]:= VectorPlot[({x, y}/Norm[{x, y}]^3), {x, -3, 3}, {y, -3, 3}, VectorRange -> {0.1, 2}, ClippingStyle -> None]

Out[1]= [image]
```

---

Show all the vectors:

```wl
In[1]:= VectorPlot[({x, y}/Norm[{x, y}]^3), {x, -3, 3}, {y, -3, 3}, VectorRange -> All]

Out[1]= [image]
```

#### VectorScaling (2)

Use automatically determined vector scales:

```wl
In[1]:= VectorPlot[{y, -x}, {x, -3, 3}, {y, -3, 3}, VectorScaling -> Automatic]

Out[1]= [image]
```

---

With the vector scaling function set to ``None``, all vectors have the same size:

```wl
In[1]:= VectorPlot[{y, -x}, {x, -3, 3}, {y, -3, 3}, VectorScaling -> None]

Out[1]= [image]
```

#### VectorSizes (2)

The sizes of the displayed vectors are determined automatically:

```wl
In[1]:= VectorPlot[{y - x(1 - x^2 - y^2)^2, -x - y(1 - x^2 - y^2)^2}, {x, -3, 3}, {y, -3, 3}, VectorScaling -> Automatic, VectorSizes -> Automatic]

Out[1]= [image]
```

---

Specify the range of arrow lengths:

```wl
In[1]:= VectorPlot[{y - x(1 - x^2 - y^2)^2, -x - y(1 - x^2 - y^2)^2}, {x, -3, 3}, {y, -3, 3}, VectorScaling -> Automatic, VectorSizes -> {0, 1}]

Out[1]= [image]
```

#### VectorStyle (6)

Set the style for the displayed vectors:

```wl
In[1]:= VectorPlot[{-1 - x ^ 2 + y, 1 + x - y ^ 2}, {x, -3, 3}, {y, -3, 3}, VectorColorFunction -> None, VectorStyle -> Red]

Out[1]= [image]
```

---

Set the style for multiple vector fields:

```wl
In[1]:= VectorPlot[{{-1 - x ^ 2 + y, 1 + x - y ^ 2}, {-(1 + x - y ^ 2), -1 - x ^ 2 + y}}, {x, -3, 3}, {y, -3, 3}, VectorColorFunction -> None, VectorStyle -> {Red, Blue}]

Out[1]= [image]
```

---

Use ``Arrowheads`` to specify an explicit style of the arrowheads:

```wl
In[1]:= VectorPlot[{x, y}, {x, -1, 1}, {y, -1, 1}, VectorPoints -> 8, PlotRange -> All, VectorStyle -> Arrowheads[{{0.03, Automatic, Graphics[Circle[]]}}]]

Out[1]= [image]
```

---

Specify both arrow tail and head:

```wl
In[1]:= VectorPlot[{x, y}, {x, -1, 1}, {y, -1, 1}, VectorPoints -> 8, PlotRange -> All, VectorStyle -> Arrowheads[{{0.03, Automatic, Graphics[Rectangle[{-0.5, -0.5}, {0.5, 0.5}]]}, {0.03, Automatic, Graphics[Circle[]]}}]]

Out[1]= [image]
```

---

Graphics primitives without ``Arrowheads`` are scaled based on the vector scale:

```wl
In[1]:= VectorPlot[{x, y}, {x, -1, 1}, {y, -1, 1}, VectorPoints -> 8, PlotRange -> All, VectorStyle -> Graphics[Circle[]]]

Out[1]= [image]
```

---

Change the scaling using the ``VectorScaling`` option:

```wl
In[1]:= VectorPlot[{x, y}, {x, -1, 1}, {y, -1, 1}, VectorPoints -> 8, PlotRange -> All, VectorStyle -> Graphics[Circle[]], VectorScaling -> Automatic]

Out[1]= [image]
```

### Applications (8)

Hamiltonian vector field of $\sin (x y)$ :

```wl
In[1]:= VectorPlot[Evaluate@{D[Sin[x y], {y}], -D[Sin[x y], {x}]}, {x, 0, 2Pi}, {y, 0, 2Pi}, VectorRange -> All]

Out[1]= [image]
```

#### Direction Fields (2)

Plot the direction field for the logistic differential equation $y'=y(1-y)$ :

```wl
In[1]:= VectorPlot[{1, y(1 - y)}, {x, 0, 2}, {y, 0, 2}, VectorMarkers -> "Segment"]

Out[1]= [image]
```

Give the segments a common color:

```wl
In[2]:= VectorPlot[{1, y(1 - y)}, {x, 0, 2}, {y, 0, 2}, VectorMarkers -> "Segment", VectorColorFunction -> None, VectorStyle -> Blue]

Out[2]= [image]
```

Add several solution curves with a uniform color:

```wl
In[3]:= VectorPlot[{1, y(1 - y)}, {x, 0, 2}, {y, 0, 2}, VectorMarkers -> "Segment", VectorColorFunction -> None, VectorStyle -> Blue, StreamPoints -> Coarse, StreamColorFunction -> None, StreamStyle -> Red, StreamScale -> None]

Out[3]= [image]
```

---

Plot the direction field for a differential equation that is only defined over a specific subset of the $x y$-plane, $y'=\sqrt{1-x^2-y^2}$ :

```wl
In[1]:= VectorPlot[{1, Sqrt[1 - x^2 - y^2]}, {x, -1, 1}, {y, -1, 1}, RegionFunction -> Function[{x, y}, x^2 + y^2 ≤ 1], VectorMarkers -> "Segment"]

Out[1]= [image]
```

#### Stability (2)

Characterize linear planar systems interactively:

```wl
In[1]:=
Manipulate[VectorPlot[Evaluate[m.{x, y}], {x, -1, 1}, {y, -1, 1}, PlotLabel -> Text["m"] == MatrixForm[m]], {{m, (|   |   |
| - | - |
| 1 | 0 |
| 0 | 2 |)}, {(|   |   |
| - | - |
| 1 | 0 |
| 0 | 2 |) -> "Nodal source", (|   |   |
| - | - |
| 1 | 1 |
| 0 | 1 |) -> "Degenerate source", (|    |   |
| -- | - |
| 0  | 1 |
| -1 | 1 |) -> "Spiral source", (|    |    |
| -- | -- |
| -1 | 0  |
| 0  | -2 |) -> "Nodal sink", (|    |    |
| -- | -- |
| -1 | 1  |
| 0  | -1 |) -> "Degenerate sink", (|    |    |
| -- | -- |
| 0  | 1  |
| -1 | -1 |) -> "Spiral sink", (|    |   |
| -- | - |
| 0  | 1 |
| -1 | 0 |) -> "Center", (|   |    |
| - | -- |
| 1 | 0  |
| 0 | -2 |) -> "Saddle"}}]

Out[1]= DynamicModule[«8»]
```

---

Use vectors to indicate the stability of a limit cycle:

```wl
In[1]:= field[{x_, y_}] = {α x - y - α x(x^2 + y^2), x + α y - α y(x^2 + y^2)};

In[2]:= Table[VectorPlot[Evaluate[field[{x, y}]], {x, -2, 2}, {y, -2, 2}, VectorPoints -> Flatten[Table[p = {Cos[2π t], Sin[2π t]};{(3 / 4) p, (5 / 4)p}, {t, Range[20] / 20.}], 1], StreamPoints -> {{{0.5, 0.5}}}, StreamStyle -> Black, StreamColorFunction -> None, StreamScale -> None], {α, -3, 3, 2}]

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

#### Gradients (1)

Gradient field of $\sin (x y)$ over the unit square:

```wl
In[1]:= VectorPlot[Evaluate[D[Sin[x y], {{x, y}}]], {x, 0, 1}, {y, 0, 1}]

Out[1]= [image]
```

#### Physics (2)

Show the direction field for a frictionless pendulum satisfying $\left(
\begin{array}{c}
 \theta  \\
 v \\
\end{array}
\right)'=\left(
\begin{array}{c}
 v \\
 -\sin (\theta ) \\
\end{array}
\right)$ :

```wl
In[1]:= VectorPlot[{v, -Sin[θ]}, {θ, -3π, 3π}, {v, -4, 4}, VectorPoints -> 24, StreamPoints -> Fine, StreamColorFunction -> None, StreamStyle -> {Black, "Segment"}, AspectRatio -> Automatic, ImageSize -> 400]

Out[1]= [image]
```

---

Display the electric field for two point charges:

In[1]:= Manipulate[VectorPlot[(q1{x-1,y})/Norm[{x-1,y}]^3+(q2{x+1,y})/Norm[{x+1,y}]^3,{x,-5,5},{y,-5,5}],{{q1,-1,"Subscript[q, 1]"},-3,3},{{q2,2.5,"Subscript[q, 2]"},-3,3}]

Out[1]=
Manipulate[VectorPlot[q1\*({x - 1, y}/Norm[{x - 1, y}]^3) + 
    q2\*({x + 1, y}/Norm[{x + 1, y}]^3), {x, -5, 5}, {y, -5, 5}], 
  {{q1, -2.7199999999999998, "\!\(\*SubscriptBox[\(q\), \(1\)]\)"}, -3, 3}, 
  {{q2, 2.17, "\!\(\*SubscriptBox[\(q\), \(2\)]\)"}, -3, 3}]

### Properties & Relations (13)

Use ``StreamPlot`` to plot with streamlines instead of vectors :

```wl
In[1]:= StreamPlot[{-1 - x ^ 2 + y, 1 + x - y ^ 2}, {x, -3, 3}, {y, -3, 3}]

Out[1]= [image]
```

---

Use ``ListVectorPlot`` or ``ListStreamPlot`` for plotting data:

```wl
In[1]:= data = Table[{-1 - x ^ 2 + y, 1 + x - y ^ 2}, {x, -3, 3, 0.2}, {y, -3, 3, 0.2}];

In[2]:= {ListVectorPlot[data], ListStreamPlot[data]}

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

---

Use ``VectorDensityPlot`` to add a density plot of the scalar field:

```wl
In[1]:= VectorDensityPlot[{-1 - x ^ 2 + y, 1 + x - y ^ 2}, {x, -3, 3}, {y, -3, 3}]

Out[1]= [image]
```

Use ``StreamDensityPlot`` to plot streamlines instead of vectors:

```wl
In[2]:= StreamDensityPlot[{-1 - x ^ 2 + y, 1 + x - y ^ 2}, {x, -3, 3}, {y, -3, 3}]

Out[2]= [image]
```

Use ``ListVectorDensityPlot`` or ``ListStreamDensityPlot`` for plotting data:

```wl
In[3]:= data = Table[{{x, y} = RandomReal[{-1.5, 1.5}, {2}], {{y, x - x ^ 3}, Abs[x + y]}}, {300}];

In[4]:= {ListVectorDensityPlot[data], ListStreamDensityPlot[data]}

Out[4]= [image]
```

---

Use ``LineIntegralConvolutionPlot`` to plot the line integral convolution of a vector field:

```wl
In[1]:= LineIntegralConvolutionPlot[{-1 - x ^ 2 + y, 1 + x - y ^ 2}, {x, -3, 3}, {y, -3, 3}]

Out[1]= [image]
```

---

Use ``VectorDisplacementPlot`` to visualize the effect of a displacement vector field on a specified region:

```wl
In[1]:= VectorDisplacementPlot[{-1 - x ^ 2 + y, 1 + x - y ^ 2}, {x, y}∈Annulus[], VectorPoints -> Automatic]

Out[1]= [image]
```

---

Use ``ListVectorDisplacementPlot`` to visualize the effect of displacement field data on a region:

```wl
In[1]:= data = Table[{{x, y}, {x + y, 1 + x - y}}, {x, -3, 3, 0.2}, {y, -3, 3, 0.2}];

In[2]:= ListVectorDisplacementPlot[data, Polygon[{{3, 3}, {0, 1}, {-3, 3}, {-3, -3}, {0, -1}, {3, -3}}], VectorPoints -> Automatic]

Out[2]= [image]
```

---

Use ``VectorPlot3D`` and ``StreamPlot3D`` to visualize 3D vector fields:

```wl
In[1]:= {VectorPlot3D[{z, x, x + y}, {x, -1, 1}, {y, -1, 1}, {z, -1, 1}], StreamPlot3D[{z, x, x + y}, {x, -1, 1}, {y, -1, 1}, {z, -1, 1}]}

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

Use ``ListVectorPlot3D`` or ``ListStreamPlot3D`` to plot with data:

```wl
In[2]:= data = Table[{z, x, x + y}, {x, -1, 1}, {y, -1, 1}, {z, -1, 1}];

In[3]:= {ListVectorPlot3D[data], ListStreamPlot3D[data]}

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

---

Plot vectors on surfaces with ``SliceVectorPlot3D`` :

```wl
In[1]:= SliceVectorPlot3D[{-y, x, z}, Sphere[], {x, -1, 1}, {y, -1, 1}, {z, -1, 1}]

Out[1]= [image]
```

---

Plot data vectors on surfaces with ``ListSliceVectorPlot3D`` :

```wl
In[1]:= data = Table[{z, x, x + y}, {x, -1, 1}, {y, -1, 1}, {z, -1, 1}];

In[2]:= ListSliceVectorPlot3D[data, "CenterPlanes"]

Out[2]= [image]
```

---

Plot complex functions as a vector field with ``ComplexVectorPlot`` :

```wl
In[1]:= ComplexVectorPlot[z + 1 / z, {z, 2}]

Out[1]= [image]
```

Plot streams instead of vectors with ``ComplexStreamPlot`` :

```wl
In[2]:= ComplexStreamPlot[z^2 + 1, {z, 2}]

Out[2]= [image]
```

---

Use ``VectorDisplacementPlot3D`` to visualize the effect of a displacement vector field on a specified 3D region:

```wl
In[1]:= VectorDisplacementPlot3D[{-y, x, x + z}, {x, -2, 2}, {y, -2, 2}, {z, -2, 2}, VectorPoints -> "Boundary"]

Out[1]= [image]
```

---

Use ``ListVectorDisplacementPlot3D`` to visualize the effect of 3D displacement vector field data on a specified region:

```wl
In[1]:= data = Table[{{x, y, z}, {-y, x, x + z}}, {x, -2, 2}, {y, -2, 2}, {z, -2, 2}];

In[2]:= ListVectorDisplacementPlot3D[data, VectorPoints -> "Boundary"]

Out[2]= [image]
```

---

Use ``GeoVectorPlot`` to generate a vector plot over the Earth:

```wl
In[1]:= coords = Flatten[Table[{lat, long}, {long, -180, 180, 30}, {lat, -75, 75, 15}], 1];

In[2]:= vects = Table[{RandomReal[], Quantity[RandomReal[{0, 360}], "AngularDegrees"]}, {Length[coords]}];

In[3]:= GeoVectorPlot[GeoVector[GeoPosition[coords] -> vects]]

Out[3]= [image]
```

Use ``GeoStreamPlot`` to use streams instead of vectors:

```wl
In[4]:= GeoStreamPlot[GeoVector[GeoPosition[coords] -> vects]]

Out[4]= [image]
```

## See Also

* [`VectorDensityPlot`](https://reference.wolfram.com/language/ref/VectorDensityPlot.en.md)
* [`StreamPlot`](https://reference.wolfram.com/language/ref/StreamPlot.en.md)
* [`ListVectorPlot`](https://reference.wolfram.com/language/ref/ListVectorPlot.en.md)
* [`LineIntegralConvolutionPlot`](https://reference.wolfram.com/language/ref/LineIntegralConvolutionPlot.en.md)
* [`ParametricPlot`](https://reference.wolfram.com/language/ref/ParametricPlot.en.md)
* [`ContourPlot`](https://reference.wolfram.com/language/ref/ContourPlot.en.md)
* [`DensityPlot`](https://reference.wolfram.com/language/ref/DensityPlot.en.md)
* [`Plot3D`](https://reference.wolfram.com/language/ref/Plot3D.en.md)
* [`VectorPlot3D`](https://reference.wolfram.com/language/ref/VectorPlot3D.en.md)
* [`SliceVectorPlot3D`](https://reference.wolfram.com/language/ref/SliceVectorPlot3D.en.md)
* [`StreamPlot3D`](https://reference.wolfram.com/language/ref/StreamPlot3D.en.md)
* [`GeoVectorPlot`](https://reference.wolfram.com/language/ref/GeoVectorPlot.en.md)
* [`ComplexVectorPlot`](https://reference.wolfram.com/language/ref/ComplexVectorPlot.en.md)

## Related Guides

* [Vector Visualization](https://reference.wolfram.com/language/guide/VectorVisualization.en.md)
* [Function Visualization](https://reference.wolfram.com/language/guide/FunctionVisualization.en.md)
* [Vector Analysis](https://reference.wolfram.com/language/guide/VectorAnalysis.en.md)
* [Solvers over Regions](https://reference.wolfram.com/language/guide/GeometricSolvers.en.md)
* [Differential Equations](https://reference.wolfram.com/language/guide/DifferentialEquations.en.md)

## History

* [Introduced in 2008 (7.0)](https://reference.wolfram.com/language/guide/SummaryOfNewFeaturesIn70.en.md) \| [Updated in 2012 (9.0)](https://reference.wolfram.com/language/guide/SummaryOfNewFeaturesIn90.en.md) ▪ [2014 (10.0)](https://reference.wolfram.com/language/guide/SummaryOfNewFeaturesIn100.en.md) ▪ [2018 (11.3)](https://reference.wolfram.com/language/guide/SummaryOfNewFeaturesIn113.en.md) ▪ [2020 (12.1)](https://reference.wolfram.com/language/guide/SummaryOfNewFeaturesIn121.en.md) ▪ [2021 (13.0)](https://reference.wolfram.com/language/guide/SummaryOfNewFeaturesIn130.en.md) ▪ [2022 (13.1)](https://reference.wolfram.com/language/guide/SummaryOfNewFeaturesIn131.en.md)