ComplexPlot3D
ComplexPlot3D[f,{z,z_{min},z_{max}}]
generates a 3D plot of Abs[f] colored by Arg[f] over the complex rectangle with corners z_{min} and z_{max}.
Details and Options
 ComplexPlot3D plots Abs[f] with a cyclic color function over Arg[f] to identify features such as zeros, poles and essential singularities. The color function goes from to counterclockwise around zeros, clockwise around poles and infinite cycles near essential singularities.
 ComplexPlot3D[f,{z,n}] is equivalent to ComplexPlot3D[f,{z,nn I,n+n I}].
 ComplexPlot3D treats the variable z as local, effectively using Block.
 ComplexPlot3D has attribute HoldAll and evaluates f only after assigning specific numerical values to z. In some cases, it may be more efficient to use Evaluate to evaluate f symbolically first.
 ComplexPlot3D has the same options as Graphics3D with following additions and changes: [List of all options]

Axes True whether to draw axes BoundaryStyle Black how to draw boundary lines for surfaces BoxRatios {1,1,0.4`} bounding 3D box ratios ClippingStyle Automatic how to draw clipped parts of surfaces ColorFunction Automatic how to determine the color of surfaces ColorFunctionScaling True whether to scale arguments to ColorFunction EvaluationMonitor None expression to evaluate at every function evaluation Exclusions Automatic x, y curves to exclude ExclusionsStyle None what to draw at excluded curves Filling None filling under each surface FillingStyle Opacity[0.5`] style to use for filling MaxRecursion Automatic the maximum number of recursive subdivisions allowed Mesh None how many mesh lines in each direction to draw MeshFunctions {Abs[#2]&,Arg[#2]&} how to determine the placement of mesh lines MeshShading None how to shade regions between mesh lines MeshStyle Automatic the style for mesh lines NormalsFunction Automatic how to determine effective surface normals PerformanceGoal $PerformanceGoal aspects of performance to try to optimize PlotLegends None legends for surfaces PlotPoints Automatic the initial number of sample points in each direction PlotRange {Full,Full,Automatic} the range of z or other values to include PlotStyle Automatic graphics directives for the style for each surface PlotTheme $PlotTheme overall theme for the plot RegionFunction (True&) how to determine whether a point should be included ScalingFunctions None how to scale individual coordinates WorkingPrecision MachinePrecision the precision used in internal computations  ColorFunction>{cfunc,sfunc} uses cfunc to generate the base color and sfunc to adjust the color to highlight features.
 Possible named settings for sfunc are:

Automatic automatic shading based on Abs[f] "MaxAbs" light shading of large values of Abs[f] "LocalMaxAbs" light shading of an upper quantile of Abs[f] "GlobalAbs" dark to light shading of small to large values of Abs[f] "QuantileAbs" dark to light shading based on quantiles of Abs[f] "CyclicLogAbs" cyclic dark to light shading of Log[Abs[f]] "CyclicArg" cyclic dark to light shading of Arg[f] "CyclicLogAbsArg" cyclic shading of Log[Abs[f]] and Arg[f] "CyclicReImLogAbs" dark cycles of Re[f] and Im[f] and light cycles of Log[Abs[f]] "ShiftedCyclicLogAbs" cyclic shading of Log[Abs[f]] after a threshold None no shading  The arguments supplied to functions in MeshFunctions and RegionFunction are , . Functions in ColorFunction are by default supplied with scaled versions of Re[z], Im[z], Abs[z], Arg[z], Re[f], Im[f], Abs[f], Arg[f].

AlignmentPoint Center the default point in the graphic to align with AspectRatio Automatic ratio of height to width Axes True whether to draw axes AxesEdge Automatic on which edges to put axes AxesLabel None axes labels AxesOrigin Automatic where axes should cross AxesStyle {} graphics directives to specify the style for 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 BoundaryStyle Black how to draw boundary lines for surfaces Boxed True whether to draw the bounding box BoxRatios {1,1,0.4`} bounding 3D box ratios BoxStyle {} style specifications for the box ClippingStyle Automatic how to draw clipped parts of surfaces ClipPlanes None clipping planes ClipPlanesStyle Automatic style specifications for clipping planes ColorFunction Automatic how to determine the color of surfaces ColorFunctionScaling True whether to scale arguments to ColorFunction ContentSelectable Automatic whether to allow contents to be selected ControllerLinking False when to link to external rotation controllers ControllerPath Automatic what external controllers to try to use Epilog {} 2D graphics primitives to be rendered after the main plot EvaluationMonitor None expression to evaluate at every function evaluation Exclusions Automatic x, y curves to exclude ExclusionsStyle None what to draw at excluded curves FaceGrids None grid lines to draw on the bounding box FaceGridsStyle {} style specifications for face grids Filling None filling under each surface FillingStyle Opacity[0.5`] style to use for filling FormatType TraditionalForm default format type for text ImageMargins 0. the margins to leave around the graphic ImagePadding All what extra padding to allow for labels, etc. ImageSize Automatic absolute size at which to render the graphic LabelStyle {} style specifications for labels Lighting Automatic simulated light sources to use MaxRecursion Automatic the maximum number of recursive subdivisions allowed Mesh None how many mesh lines in each direction to draw MeshFunctions {Abs[#2]&,Arg[#2]&} how to determine the placement of mesh lines MeshShading None how to shade regions between mesh lines MeshStyle Automatic the style for mesh lines Method Automatic details of 3D graphics methods to use NormalsFunction Automatic how to determine effective surface normals PerformanceGoal $PerformanceGoal aspects of performance to try to optimize PlotLabel None a label for the plot PlotLegends None legends for surfaces PlotPoints Automatic the initial number of sample points in each direction PlotRange {Full,Full,Automatic} the range of z or other values to include PlotRangePadding Automatic how much to pad the range of values PlotRegion Automatic final display region to be filled PlotStyle Automatic graphics directives for the style for each surface PlotTheme $PlotTheme overall theme for the plot PreserveImageOptions Automatic whether to preserve image options when displaying new versions of the same graphic Prolog {} 2D graphics primitives to be rendered before the main plot RegionFunction (True&) how to determine whether a point should be included RotationAction "Fit" how to render after interactive rotation ScalingFunctions None how to scale individual coordinates SphericalRegion Automatic whether to make the circumscribing sphere fit in the final display area Ticks Automatic specification for ticks TicksStyle {} style specification for ticks TouchscreenAutoZoom False  whether to zoom to fullscreen when activated on a touchscreen
ViewAngle Automatic angle of the field of view ViewCenter Automatic point to display at the center ViewMatrix Automatic explicit transformation matrix ViewPoint {1.3,2.4,2.} viewing position ViewProjection Automatic projection method for rendering objects distant from the viewer ViewRange All range of viewing distances to include ViewVector Automatic position and direction of a simulated camera ViewVertical {0,0,1} direction to make vertical WorkingPrecision MachinePrecision the precision used in internal computations
List of all options
Examples
open allclose allBasic Examples (3)
Scope (22)
Sampling (8)
Sharp colors are generated by using a raster:
The default mesh shows curves of constant Abs[f] and Arg[f]:
In the presence of poles, it is often convenient to use a logarithm to scale Abs[f]:
In the presence of poles, it may also be convenient to use a logarithm to scale the mesh for Abs[f]:
Specify values for the mesh and control the style:
Modify the mesh to show specific values for Re[f] and Im[f]:
Emphasize branch cuts with a color scheme that is discontinuous at the cut:
Presentation (14)
Change the ColorFunction:
Use the "CyclicLogAbs" shading function to cyclically shade colors to give the appearance of contours of constant Abs[f]:
Use the "CyclicArg" shading function to cyclically shade colors to give the appearance of contours of constant Arg[f]:
Use the "CyclicLogAbsArg" shading function to cyclically shade colors to give the appearance of contours of constant Abs[f] and constant Arg[f]:
Use the "GlobalAbs" shading function to highlight zeros (black) and poles (white):
Use "QuantileAbs" to darken small values of Abs[f] and lighten large values of Abs[f]:
Use "MaxAbs" to lighten large values of Abs[f]:
Use "LocalMaxAbs" to lighten relatively large values of Abs[f]:
Use "CyclicReImLogAbs" to cyclically darken based on Re[f] and Im[f] and lighten cyclically based on Log[Abs[f]]:
Use "ShiftedCyclicLogAbs" to produce clear color wheels around zeros and cyclic contours based on Log[Abs[f]]:
Options (62)
BoundaryStyle (3)
Use a black boundary around the edges of the surface:
Use a thick, black boundary around the edges of the surface:
Note that BoundaryStyle applies to holes cut by RegionFunction, but not to holes cut by Exclusions:
BoxRatios (2)
ClippingStyle (2)
ColorFunction (14)
Use a noncyclic color function to emphasize branch cuts:
LogGamma and Log[Gamma] have different branch cuts:
Specify a custom ColorFunction:
Color functions depend on eight arguments (Re[z], Im[z], Abs[z], Arg[z], Re[f], Im[f], Abs[f], Arg[f]):
Color functions can be shaded to highlight features of a graph like zeros, poles and saddle points. Use "CyclicLogAbs" to cyclically shade colors to give the appearance of contours of constant Abs[f] at powers of 2:
Use "CyclicArg" to cyclically shade colors to give the appearance of contours of constant Arg[f] at integer multiples of /6:
Use "CylicLogAbsArg" shading function to combine the effects of "CyclicLogAbs" and "CyclicArg":
Shading can be applied to any ColorFunction:
Use "GlobalAbs" to highlight zeros (black) and poles (white):
Use "QuantileAbs" to lighten the image at relatively large values of Abs[f]:
Use "MaxAbs" to lighten the image at large values of Abs[f]:
Use "LocalMaxAbs" to lighten the image at relatively large values of Abs[f]:
Use "ShiftedCyclicLogAbs" to produce a color wheel around each zero and cyclic shading in Log[Abs[f]]:
Use "CyclicReImLogAbs" to darken the plot cyclically in Re[f] and Im[f] and brighten it cyclically in Log[Abs[f]]:
ColorFunctionScaling (1)
Exclusions (4)
ExclusionStyle (1)
Filling (2)
FillingStyle (3)
MaxRecursion (2)
If a region function is used, MaxRecursion adapts the initial mesh:
If a mesh is used, MaxRecursion adapts the initial mesh:
MeshFunctions (2)
Change the MeshFunctions from {Abs[f],Arg[f]} to {Re[f],Im[f]}:
MeshShading (2)
MeshStyle (2)
NormalsFunction (2)
Normals are automatically calculated. Use None to get flat shading for all of the polygons:
PlotLegends (2)
The Automatic legend shows the association between color and phase. The grayscale part of the legend indicates how the colors are shaded:
PlotPoints (2)
PlotRange (3)
PlotStyle (1)
PlotStyle can be used to modify the colors:
RegionFunction (3)
Use RegionFunction to adapt the shape of the region:
Use RegionFunction to remove zeros and poles:
ScalingFunctions (4)
Applications (26)
Basic Applications (10)
For a complex function , plot Abs[f] over the complex plane. Points on the surface are colored (by default) by Arg[f], and that information is recorded in an optional legend.
When viewed from above, the color function proceeds counterclockwise around zeros of a function:
At a multiple zero, the colors cycle around the zero multiple times:
At a pole, the colors cycle around the point in the reverse direction:
At an essential singularity, the colors cycle infinitely often:
Use PlotRange to control the height of the graph near a pole:
Using a logarithmic scaling function for functions with poles may produce a more visually appealing plot:
Using ScalingFunctions"Reciprocal" effectively swaps zeros and poles in terms of height, but the colors remain unchanged:
At a saddle point of , and . Use "CyclicLogAbs" to highlight a saddle point that occurs at a power of 2:
Or use a mesh to highlight a saddle point:
The following plot shows multiple features of the Joukowski transformation. There are simple zeros at , which is evident from the height of the graph and the fact that the colors converge at those points and cycle around the points from blue to green to red in the counterclockwise direction, consistent with the legend. Similarly, there is a simple pole at where the height is infinite and the colors converge but cycle clockwise. There is also a saddle point at , and the branch cuts occur at the redblue boundary:
The following plot shows a function with simple zeros at , a double pole at and a saddle point at :
Other Applications (16)
Classic (2)
General (6)
Plot complex functions of a complex variable:
Visualize features of a complex function of a complex variable. The following plot indicates a triple zero at , simple zeros , a simple pole at and a double pole at :
See the five real roots of in [1,1]:
Plots of partial sums of the geometric series suggest that the infinite series diverges for :
Special functions (2)
Analytic functions (2)
Physics (2)
Properties & Relations (8)
ComplexPlot3D is a special case of Plot3D:
ComplexPlot shows the argument and magnitude of a function using color:
Use ComplexArrayPlot for arrays of complex numbers:
Use ReImPlot and AbsArgPlot to plot complex values over the real numbers:
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:
Text
Wolfram Research (2019), ComplexPlot3D, Wolfram Language function, https://reference.wolfram.com/language/ref/ComplexPlot3D.html (updated 2021).
CMS
Wolfram Language. 2019. "ComplexPlot3D." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2021. https://reference.wolfram.com/language/ref/ComplexPlot3D.html.
APA
Wolfram Language. (2019). ComplexPlot3D. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/ComplexPlot3D.html