generates a plot of Re[f] and Im[f] as functions of x from xmin to xmax.


plots several functions.


plots fi with features defined by the symbolic wrapper w.


takes the variable x to be in the geometric region reg.

Details and Options

  • ReImPlot evaluates f at different values of x to create smooth curves of the form {x,Re[f[x]]} and {x,Im[f[x]]}.
  • Gaps are left at any x where the fi evaluate to non-numeric values.
  • The region reg can be any RegionQ object in 1D.
  • ReImPlot treats the variable x as local, effectively using Block.
  • ReImPlot has attribute HoldAll and evaluates f only after assigning specific numerical values to x.
  • In some cases, it may be more efficient to use Evaluate to evaluate f symbolically before specific numerical values are assigned to x.
  • Wrappers apply to both Re[f] and Im[f].
  • The following wrappers w can be used for the fi:
  • Annotation[fi,label]provide an annotation for the fi
    Button[fi,action]evaluate action when the curve for fi is clicked
    Callout[fi,label]label the function with a callout
    Callout[fi,label,pos]place the callout at relative position pos
    EventHandler[fi,events]define a general event handler for fi
    Hyperlink[fi,uri]make the function a hyperlink
    Labeled[fi,label]label the function
    Labeled[fi,label,pos]place the label at relative position pos
    Legended[fi,label]identify the function in a legend
    PopupWindow[fi,cont]attach a popup window to the function
    StatusArea[fi,label]display in the status area on mouseover
    Style[fi,styles]show the function using the specified styles
    Tooltip[fi,label]attach a tooltip to the function
    Tooltip[fi]use functions as tooltips
  • Wrappers w can be applied at multiple levels:
  • w[fi]wrap the fi
    w[{f1,}]wrap a collection of fi
    w1[w2[]]use nested wrappers
  • Callout, Labeled and Placed can use the following positions pos:
  • Automaticautomatically placed labels
    Above, Below, Before, Afterpositions around the curve
    xnear the curve at a position x
    Scaled[s]scaled position s along the curve
    {s,Above},{s,Below},relative position at position s along the curve
    {pos,epos}epos in label placed at relative position pos of the curve
  • ReImPlot has the same options as Plot, with the following additions and changes:
  • ReImLabels Automatichow to annotate the real and imaginary components
    ReImStyle Automatichow to style the real and imaginary components
  • Possible settings for ClippingStyle are:
  • Automaticuse a dotted line for the clipped portion
    Noneomit the clipped portion of the curve
    styleuse style for the clipped portion
  • With the default settings Exclusions->Automatic and ExclusionsStyle->None, Plot breaks curves at discontinuities and singularities it detects. Exclusions->None joins across discontinuities and singularities.
  • Exclusions->{x1,x2,} is equivalent to Exclusions->{x==x1,x==x2,}.
  • Possible settings for PlotLegends are:
  • Nonedo not include legends
    "Expressions"use a legend for the fi
    "ReIm"use a legend for the real and imaginary styles
    "ReImExpressions"use separate legends for the plot, real and imaginary styles
    Automaticuse a legend for all style combinations
    {lbl1,lbl2,}use lbli to legend fi
    Placed[leg,pos]specify placement pos of legend leg
    {leg1,leg2,}include multiple legends
  • ReImPlot initially evaluates f at a number of equally spaced sample points specified by PlotPoints. Then it uses an adaptive algorithm to choose additional sample points, subdividing a given interval at most MaxRecursion times.
  • Since only a finite number of sample points are used, it is possible for ReImPlot to miss features of f. Increasing the settings for PlotPoints and MaxRecursion will often catch such features.
  • Themes that affect curves include:
  • "ThinLines"thin plot lines
    "MediumLines"medium plot lines
    "ThickLines"thick plot lines
  • The arguments supplied to functions in MeshFunctions and RegionFunction are x, y. Functions in ColorFunction are by default supplied with scaled versions of these arguments.
  • ScalingFunctions->"scale" scales the coordinate; ScalingFunctions{"scalex","scaley"} scales both the and coordinates.


open allclose all

Basic Examples  (3)

Plot the real and imaginary parts of a complex-valued function of a real variable:

Plot several functions:

Label each curve:

Scope  (20)

Sampling  (9)

More points are sampled where the function changes quickly:

The plot range is selected automatically:

Use PlotRange to focus in on areas of interest:

The curve is split when there are discontinuities in the function:

Use ExclusionsNone to draw connected curves:

Use PlotPoints and MaxRecursion to control adaptive sampling:

The domain can be specified by a region:

Specify a domain using a MeshRegion:

Plot over an infinite domain:

Labeling and Legending  (5)

There are two standard legends:

Show the legends together:

Use legends with combined styles:

Explicitly label the individual curves:

Identify curves with wrappers:

Presentation  (6)

Multiple pairs of curves are automatically colored to be distinct:

Provide explicit styling to different curves:

Add labels and a legend:

Create filled plots:

Use a plot theme:

Use ScalingFunctions to scale the axes:

Options  (57)

ClippingStyle  (2)

Omit clipped regions of the plot:

Show clipped regions with red lines:

ColorFunction  (4)

Color by a scaled coordinate and scaled coordinate, respectively:

Use a named color gradient:

ColorFunction has higher priority than PlotStyle:

Highlight part of the plot:

ColorFunctionScaling  (1)

No argument scaling on the left; automatic scaling on the right:

Exclusions  (2)

In this case, the exclusion comes from a branch cut discontinuity:

Indicate that no exclusions should be computed:

ExclusionStyle  (1)

Use red lines to connect portions of the curve and black points to indicate exclusions:

Filling  (4)

Use symbolic or explicit values:

Fill between curve 1 and the axis:

Fill between curves 1 and 2:

Fill between the real and imaginary parts of each function:

FillingStyle  (3)

Use different fill colors:

Fill with red below the axis and blue above:

Use a variable filling style obtained from a ColorFunction:

MaxRecursion  (1)

Each level of MaxRecursion adaptively subdivides the initial mesh into a finer mesh:

Mesh  (3)

Show the initial and final sampling meshes:

Use 10 mesh points evenly spaced in the direction:

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

MeshFunctions  (2)

Use a mesh evenly spaced in the and directions:

Show seven mesh levels in the direction (red) and 15 in the direction (blue):

MeshShading  (3)

Alternate red and blue arcs in the direction:

MeshShading has higher priority than PlotStyle for styling:

Use PlotStyle for some segments by setting MeshShading to Automatic:

MeshStyle  (2)

Use a red mesh in the direction:

Use a red mesh in the direction and a blue mesh in the direction:

PerformanceGoal  (2)

Generate a higher-quality plot:

Emphasize performance, possibly at the cost of quality:

PlotLabel  (1)

Add an overall label to the plot:

PlotLabels  (6)

Specify text to label curves:

Modify the appearance of the labels:

Place the labels differently for each curve:

PlotLabels"Expressions" uses functions as curve labels:

Use callouts to identify the curves:

Use None to not add a label:

PlotLegends  (7)

Create a legend based on the functions:

Use "ReIm" to distinguish between the real and imaginary parts of the function:

Use "ReImExpressions" to show both:

Use a legend showing all the style combinations:

Make two different legends:

Modify the legend labels:

Generate a third legend:

PlotPoints  (1)

Use more initial points to get smoother curves:

PlotRange  (1)

The plot range is selected automatically:

Focus on a specified range of values:

PlotStyle  (3)

Explicitly specify the style for different curves and regions:

ReImStyle takes precedence over PlotStyle:

Combine with ReImStyle:

PlotTheme  (3)

Use a theme with bright colors:

Add a theme with a legend:

Change plot styles:

RegionFunction  (1)

Show the curve where :

ReImLabels  (2)

Modify the labels for the real and imaginary parts of a function using predetermined option values:

Specify custom labels for the real and imaginary parts of a function:

ReImStyle  (2)

By default, the real and imaginary parts are solid and dashed, respectively:

Modify the real and imaginary styles:

Applications  (7)

Plot Fourier transforms:

Plot the solution of a complex differential equation with initial conditions:

Plot the eigenvalues of a matrix as a function of a parameter:

Plot solutions of an equation as a function of a parameter:

Graph special functions:

Plot fractional derivatives of :

Plot the complex solution of the Schrödinger equation for a particle in a box:

Properties & Relations  (8)

ReImPlot is a special case of Plot:

Use AbsArgPlot to plot the magnitude and argument over the real numbers:

ComplexPlot shows the argument and magnitude of a function using color:

Use ComplexPlot3D to use the z axis for the magnitude:

Use ComplexListPlot to show the location of complex numbers in the plane:

ComplexContourPlot plots curves over the complexes:

ComplexRegionPlot plots regions over the complexes:

ComplexStreamPlot and ComplexVectorPlot treat complex numbers as directions:

Possible Issues  (1)

ScalingFunctions applies to the real and imaginary parts:

Wolfram Research (2019), ReImPlot, Wolfram Language function, (updated 2021).


Wolfram Research (2019), ReImPlot, Wolfram Language function, (updated 2021).


Wolfram Language. 2019. "ReImPlot." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2021.


Wolfram Language. (2019). ReImPlot. Wolfram Language & System Documentation Center. Retrieved from


@misc{reference.wolfram_2022_reimplot, author="Wolfram Research", title="{ReImPlot}", year="2021", howpublished="\url{}", note=[Accessed: 21-March-2023 ]}


@online{reference.wolfram_2022_reimplot, organization={Wolfram Research}, title={ReImPlot}, year={2021}, url={}, note=[Accessed: 21-March-2023 ]}