RunMat
  • Pricing
RunMat
GitHub
GitHub
DownloadSign InTry in Browser
DesktopRuntimeServer
RunMat

Run math blazing fast

GitHubX (Twitter)LinkedIn

Company

  • About
  • Pricing
  • Contact

Explore

  • RunMat for academia
  • RunMat vs MATLAB Online
  • Benchmarks

Get product updates and release notes from the RunMat team.

© 2026 Dystr · Made withfor the scientific community.

RunMat™ is a registered trademark of Dystr, Inc. MATLAB® is a registered trademark of The MathWorks, Inc. RunMat is not affiliated with, endorsed by, or sponsored by The MathWorks, Inc.

LicensePrivacy
/
See all docs
Builtin Reference
    • addpoints
    • ancestor
    • animatedline
    • area
    • axes
    • axis
    • bar
    • barh
    • box
    • caxis
    • cla
    • clf
    • clim
    • colorbar
    • colorcube
    • colormap
    • colororder
    • contour
    • contour3
    • contourf
    • copyobj
    • daspect
    • datacursormode
    • dataTipTextRow
    • errorbar
    • fcontour
    • figure
    • fill
    • fill3
    • findobj
    • fsurf
    • gca
    • gcf
    • get
    • gobjects
    • grid
    • groot
    • heatmap
    • hgload
    • hgsave
    • hidden
    • hist
    • histogram
    • histogram2
    • hold
    • image
    • imagesc
    • imshow
    • legend
    • line
    • linkaxes
    • loglog
    • mesh
    • meshc
    • openfig
    • opengl
    • pan
    • parula
    • patch
    • pie
    • plot
    • plot3
    • plotmatrix
    • plotyy
    • polarhistogram
    • polarplot
    • polarscatter
    • print
    • quiver
    • quiver3
    • ribbon
    • saveas
    • savefig
    • scatter
    • scatter3
    • semilogx
    • semilogy
    • set
    • sgtitle
    • shading
    • sphere
    • stackedplot
    • stairs
    • stem
    • subplot
    • subtitle
    • suptitle
    • surf
    • surfc
    • text
    • textscatter
    • textscatter3
    • title
    • triplot
    • view
    • waitbar
    • wordcloud
    • xlabel
    • xlim
    • xline
    • xscale
    • xtickangle
    • xtickformat
    • xticklabels
    • xticks
    • ylabel
    • ylim
    • yline
    • yscale
    • ytickangle
    • ytickformat
    • yticklabels
    • yticks
    • zlabel
    • zlim
    • zoom

quiver — Visualize 2-D vector fields with quiver plots in MATLAB and RunMat.

quiver visualizes 2-D vector fields as arrows anchored at data points. Supported call forms, scaling behavior, and returned handle semantics follow MATLAB behavior.

Syntax

h = quiver(U, V)
h = quiver(X, Y, U, V)
h = quiver(X, Y, U, V, LineSpec)
h = quiver(X, Y, U, V, Name, Value, ...)
h = quiver(ax, U, V)
h = quiver(ax, X, Y, U, V)
h = quiver(ax, X, Y, U, V, LineSpec)
h = quiver(ax, X, Y, U, V, Name, Value, ...)

Inputs

NameTypeRequiredDefaultDescription
UNumericArrayYes—Vector field x-components.
VNumericArrayYes—Vector field y-components.
XNumericArrayYes—X coordinates (vector or matrix).
YNumericArrayYes—Y coordinates (vector or matrix).
lineSpecStyleSpecYes—Line style/color shorthand.
propsAnyVariadic—Name/value quiver style properties.
axAxesHandleYes—Target axes handle.

Returns

NameTypeDescription
hNumericScalarHandle to the rendered quiver plot.

Errors

IdentifierWhenMessage
RunMat:quiver:InvalidArgumentInput data, axes targeting, or quiver style arguments are invalid.quiver: invalid argument
RunMat:quiver:InternalInternal quiver construction or rendering fails unexpectedly.quiver: internal operation failed

How quiver works

  • quiver(U, V) builds the default coordinate grid from the shape of U and V.
  • quiver(X, Y, U, V) accepts explicit coordinate vectors or meshgrid-style axes, depending on the input layout.
  • The returned value is a quiver-handle object that can be queried and updated through get and set.
  • Auto-scale factor, head size, line width, color, and display-name workflows are all part of the plotting property path.
  • Dedicated GPU geometry generation keeps vector-field rendering on device when plotting-compatible U/V buffers are available, including quiver(U,V) with an implicit coordinate grid.
  • Integer X, Y, U, and V inputs retain their exact class, shape, and values in graphics properties and serialized scenes, including 64-bit values beyond binary64's exact range; only the renderer cache crosses the floating geometry boundary.

Options

  • 'AutoScaleFactor' / 'Scale' controls arrow scaling.
  • 'MaxHeadSize' / 'HeadSize' controls the size of arrowheads.
  • Line-style color and width workflows are supported through the same style parsing and handle/property path used by other line-like plots.

Does RunMat run quiver on the GPU?

The direct quiver path emits renderer-ready arrow geometry from GPU buffers on the happy path.

Axes-local state and handle/property workflows stay aligned across GPU and fallback rendering paths.

Replay/export paths read back GPU source buffers when serializable plot data is required.

GPU memory and residency

quiver preserves GPU residency on the direct path by building arrow geometry from exported GPU U/V buffers. Explicit GPU X/Y coordinates also stay resident when their precision matches U/V. Implicit default X/Y grids are uploaded as compact meshgrid-vector axis buffers, and explicit host X/Y coordinates are uploaded as axis buffers, so resident U/V inputs do not have to be gathered. If the direct geometry path is unavailable for the active input combination, RunMat falls back while preserving the same quiver semantics and handle behavior.

Examples

Create a vector field from U and V only

[X, Y] = meshgrid(-2:0.5:2, -2:0.5:2);
U = -Y;
V = X;
quiver(U, V);

Expected output:

% RunMat infers the coordinate grid from the vector-field shape

Provide explicit coordinates for a flow field

[X, Y] = meshgrid(-2:0.5:2, -2:0.5:2);
U = -Y;
V = X;
quiver(X, Y, U, V);

Adjust arrow scaling and head size through the handle

[X, Y] = meshgrid(-2:0.5:2, -2:0.5:2);
U = -Y;
V = X;
h = quiver(X, Y, U, V);
set(h, 'AutoScaleFactor', 1.5, 'MaxHeadSize', 0.2, 'DisplayName', 'rotation');
legend;

Gradient vector field over a scalar potential

[X, Y] = meshgrid(linspace(-2, 2, 25), linspace(-2, 2, 25));
Z = X .* exp(-X.^2 - Y.^2);
[DX, DY] = gradient(Z, X(1,2)-X(1,1), Y(2,1)-Y(1,1));

contourf(X, Y, Z, 15);
hold on;
quiver(X, Y, DX, DY, 'k', 'LineWidth', 1);
hold off;

colormap('turbo');
colorbar;
title('Gradient Field over Scalar Potential');
xlabel('x');
ylabel('y');
Expected output:
Gradient vector field over a scalar potential

Compare this result with other chart types in the MATLAB Plot Gallery.

Using quiver with coding agents

Open a RunMat example with live inputs, then ask the agent to explain how quiver changes the result.

Run a small quiver example, explain the result, then change one input and compare the output.

FAQ

How do I control arrow lengths in a quiver plot?⌄

Use the 'AutoScaleFactor' property. A value of 1 means default scaling, 0 disables auto-scaling entirely (arrows drawn at raw data magnitude), and values like 1.5 or 2 make arrows proportionally longer.

h = quiver(X, Y, U, V);
set(h, 'AutoScaleFactor', 0); % raw magnitudes, no auto-scaling
Can I overlay quiver arrows on top of a contourf plot?⌄

Yes. Plot the filled contour first, then call hold on and add the quiver layer. Both share the same axes, so the coordinate grids align automatically.

contourf(X, Y, Z);
hold on;
quiver(X, Y, U, V, 'Color', 'k');
Does RunMat support 3-D quiver plots?⌄

Yes. Use quiver3 for 3-D vector fields.

quiver3(X, Y, Z, U, V, W);

Related Plotting functions

2D Charts

area · bar · errorbar · heatmap · hist · histogram · loglog · pie · plot · scatter · semilogx · semilogy · stairs · stem

3D & Surface

contour · contour3 · contourf · mesh · meshc · plot3 · scatter3 · surf · surfc

Images

image · imagesc · imshow

Axes & Layout

axis · box · grid · sgtitle · subplot · title · view · zlabel

Appearance

colorbar · colormap · legend · shading

Handle Access

gca · gcf · get · set

Other

addpoints · ancestor · animatedline · axes · barh · caxis · cla · clf · clim · colorcube · colororder · copyobj · daspect · datacursormode · dataTipTextRow · fcontour · figure · fill · fill3 · findobj · fsurf · gobjects · groot · hgload · hgsave · hidden · histogram2 · hold · line · linkaxes · openfig · opengl · pan · parula · patch · plotmatrix · plotyy · polarhistogram · polarplot · polarscatter · print · quiver3 · ribbon · saveas · savefig · sphere · stackedplot · subtitle · suptitle · text · textscatter · textscatter3 · triplot · waitbar · wordcloud · xlabel · xlim · xline · xscale · xtickangle · xtickformat · xticklabels · xticks · ylabel · ylim · yline · yscale · ytickangle · ytickformat · yticklabels · yticks · zlim · zoom

More plotting resources

  • Choosing the right plot type
  • Styling plots and axes
  • Plot replay and export
  • Complete plotting guide

Open-source implementation

Unlike proprietary runtimes, every RunMat function is open-source. Read exactly how quiver is executed, line by line, in Rust.

  • View the source for quiver in Rust on GitHub
  • Learn how the RunMat runtime works
  • Found a bug? Open an issue with a minimal reproduction.

About RunMat

RunMat is an open-source runtime that executes MATLAB-syntax code blazing on any GPU. It is licensed under the Apache 2.0 license.

  • RunMat automatically optimizes your math for GPU execution on Apple, Nvidia, and AMD hardware. No code changes needed. Simulations that took hours now take minutes.
  • Start running code in seconds. RunMat runs in the browser, on the desktop, or from the CLI. No license server, no IT ticket.

Getting started · Benchmarks · Pricing

Download RunMat

Download RunMat for full performance, or use RunMat in your browser for zero setup.

Download RunMatOpen Sandbox
On this page
  • Syntax
  • Inputs
  • Returns
  • Errors
  • How quiver works
  • Options
  • Does RunMat run quiver on the GPU?
  • GPU memory and residency
  • Examples
  • Create a vector field from U and V only
  • Provide explicit coordinates for a flow field
  • Adjust arrow scaling and head size through the handle
  • Gradient vector field over a scalar potential
  • Using quiver with coding agents
  • FAQ
  • Related Plotting functions
  • 2D Charts
  • 3D & Surface
  • Images
  • Axes & Layout
  • Appearance
  • Handle Access
  • Other
  • More plotting resources
  • Open-source implementation
  • About RunMat