fimplicit3
Plot 3-D implicit equation or function
Syntax
Description
fimplicit3(
plots
the 3-D implicit equation or function f
)f(x,y,z)
over
the default interval [-5 5]
for x
, y
,
and z
.
fimplicit3(
plots f
,[xmin
xmax ymin ymax zmin zmax]
)f(x,y,z)
over the interval [xmin
xmax]
for x
, [ymin ymax]
for
y
, and [zmin zmax]
for
z
. The fimplicit3
function uses
symvar
to order the variables and assign intervals.
fimplicit3(___,
specifies
line properties using one or more Name,Value
)Name,Value
pair
arguments. Use this option with any of the input argument combinations
in the previous syntaxes.
fimplicit3(
plots
into the axes with the object ax
,___)ax
instead of the
current axes object gca
.
returns
an implicit function surface object. Use the object to query and modify
properties of a specific surface. For details, see ImplicitFunctionSurface Properties.fi
= fimplicit3(___)
Examples
Plot 3-D Implicit Symbolic Equation
Plot the hyperboloid by using fimplicit3
. The fimplicit3
function plots over the default interval of for , , and .
syms x y z fimplicit3(x^2 + y^2 - z^2)
Plot 3-D Implicit Symbolic Function
Plot the hyperboloid specified by the function . The fimplicit3
function plots over the default interval of for , , and .
syms f(x,y,z)
f(x,y,z) = x^2 + y^2 - z^2;
fimplicit3(f)
Specify Plotting Interval
Specify the plotting interval by specifying the second argument to fimplicit3
. Plot the upper half of the hyperboloid by specifying the interval . For and , use the default interval .
syms x y z f = x^2 + y^2 - z^2; interval = [-5 5 -5 5 0 5]; fimplicit3(f, interval)
Add Title and Axis Labels and Format Ticks
Plot the implicit equation over the interval for all axes.
Create the x-axis ticks by spanning the x-axis limits at intervals of pi/2
. Convert the axis limits to precise multiples of pi/2
by using round
and get the symbolic tick values in S
. Display these ticks by using the XTick
property. Create x-axis labels by using arrayfun
to apply texlabel
to S
. Display these labels by using the XTickLabel
property. Repeat these steps for the y-axis.
To use LaTeX in plots, see latex
.
syms x y z eqn = x*sin(y) + z*cos(x); fimplicit3(eqn,[-2*pi 2*pi]) title('xsin(y) + zcos(x) for -2\pi < x < 2\pi and -2\pi < y < 2\pi') xlabel('x') ylabel('y') ax = gca; S = sym(ax.XLim(1):pi/2:ax.XLim(2)); S = sym(round(vpa(S/pi*2))*pi/2); ax.XTick = double(S); ax.XTickLabel = arrayfun(@texlabel,S,'UniformOutput',false); S = sym(ax.YLim(1):pi/2:ax.YLim(2)); S = sym(round(vpa(S/pi*2))*pi/2); ax.YTick = double(S); ax.YTickLabel = arrayfun(@texlabel, S, 'UniformOutput', false);
Line Style and Width for Implicit Surface Plot
Plot the implicit surface with different line styles for different values of . For , use a dashed line with green dot markers. For , use a LineWidth
of 1
and a green face color. For , turn off the lines by setting EdgeColor
to none
.
syms x y z f = x^2 + y^2 - z^2; fimplicit3(f,[-5 5 -5 5 -5 -2],'--.','MarkerEdgeColor','g') hold on fimplicit3(f,[-5 5 -5 5 -2 2],'LineWidth',1,'FaceColor','g') fimplicit3(f,[-5 5 -5 5 2 5],'EdgeColor','none')
Modify Implicit Surface After Creation
Plot the implicit surface . Specify an output to make fimplicit3
return the plot object.
syms x y z f = 1/x^2 - 1/y^2 + 1/z^2; fi = fimplicit3(f)
fi = ImplicitFunctionSurface with properties: Function: 1/x^2 - 1/y^2 + 1/z^2 EdgeColor: [0 0 0] LineStyle: '-' FaceColor: 'interp' Use GET to show all properties
Show only the positive x-axis by setting the XRange
property of fi
to [0 5]
. Remove the lines by setting the EdgeColor
property to 'none'
. Visualize the hidden surfaces by making the plot transparent by setting the FaceAlpha
property to 0.8
.
fi.XRange = [0 5];
fi.EdgeColor = 'none';
fi.FaceAlpha = 0.8;
Control Resolution of Implicit Surface Plot
Control the resolution of an implicit surface plot by using the 'MeshDensity'
option. Increasing 'MeshDensity'
can make smoother, more accurate plots while decreasing 'MeshDensity'
can increase plotting speed.
Divide a figure into two by using subplot
. In the first subplot, plot the implicit surface . The surface has large gaps. Fix this issue by increasing the 'MeshDensity'
to 40
in the second subplot. fimplicit3
fills the gaps showing that by increasing 'MeshDensity'
you increased the resolution of the plot.
syms x y z f = sin(1/(x*y*z)); subplot(2,1,1) fimplicit3(f) title('Default MeshDensity = 35') subplot(2,1,2) fimplicit3(f,'MeshDensity',40) title('Increased MeshDensity = 40')
Apply Rotation and Translation to Implicit Surface Plot
Apply rotation and translation to the implicit surface plot of a torus.
A torus can be defined by an implicit equation in Cartesian coordinates as
where
is the radius of the tube
is the distance from the center of the tube to the center of the torus
Define the values for and as 1 and 5, respectively. Plot the torus using fimplicit3
.
syms x y z a = 1; R = 4; f(x,y,z) = (x^2+y^2+z^2+R^2-a^2)^2 - 4*R^2*(x^2+y^2); fimplicit3(f) hold on
Apply rotation to the torus around the -axis. Define the rotation matrix. Rotate the torus by 90 degrees or radians. Shift the center of the torus by 5 along the -axis.
alpha = pi/2; Rx = [1 0 0; 0 cos(alpha) sin(alpha); 0 -sin(alpha) cos(alpha)]; r = [x; y; z]; r_90 = Rx*r; g = subs(f,[x,y,z],[r_90(1)-5,r_90(2),r_90(3)]);
Add a second plot of the rotated and translated torus to the existing graph.
fimplicit3(g)
axis([-5 10 -5 10 -5 5])
hold off
Input Arguments
f
— 3-D implicit equation or function to plot
symbolic equation | symbolic expression | symbolic function
3-D implicit equation or function to plot, specified as a symbolic
equation, expression, or function. If an expression or function is
specified, then fimplicit3
assumes the right-hand
size to be 0
.
[min max]
— Plotting interval for x-, y- and z- axes
[–5 5] (default) | vector of two numbers
Plotting interval for x-, y- and z- axes, specified as a vector
of two numbers. The default is [-5 5]
.
[xmin xmax ymin ymax zmin zmax]
— Plotting interval for x-, y- and z- axes
[–5 5 –5 5 –5 5] (default) | vector of six numbers
Plotting interval for x-, y- and z- axes, specified as a vector
of six numbers. The default is [-5 5 -5 5 -5 5]
.
ax
— Axes object
axes object
Axes object. If you do not specify an axes object, then fimplicit3
uses
the current axes.
LineSpec
— Line style, marker, and color
string scalar | character vector
Line style, marker, and color, specified as a string scalar or character vector containing symbols. The symbols can appear in any order. You do not need to specify all three characteristics (line style, marker, and color). For example, if you omit the line style and specify the marker, then the plot shows only the marker and no line.
Example: "--or"
is a red dashed line with circle markers.
Line Style | Description | Resulting Line |
---|---|---|
"-" | Solid line |
|
"--" | Dashed line |
|
":" | Dotted line |
|
"-." | Dash-dotted line |
|
Marker | Description | Resulting Marker |
---|---|---|
"o" | Circle |
|
"+" | Plus sign |
|
"*" | Asterisk |
|
"." | Point |
|
"x" | Cross |
|
"_" | Horizontal line |
|
"|" | Vertical line |
|
"square" | Square |
|
"diamond" | Diamond |
|
"^" | Upward-pointing triangle |
|
"v" | Downward-pointing triangle |
|
">" | Right-pointing triangle |
|
"<" | Left-pointing triangle |
|
"pentagram" | Pentagram |
|
"hexagram" | Hexagram |
|
Color Name | Short Name | RGB Triplet | Appearance |
---|---|---|---|
"red" | "r" | [1 0 0] |
|
"green" | "g" | [0 1 0] |
|
"blue" | "b" | [0 0 1] |
|
"cyan"
| "c" | [0 1 1] |
|
"magenta" | "m" | [1 0 1] |
|
"yellow" | "y" | [1 1 0] |
|
"black" | "k" | [0 0 0] |
|
"white" | "w" | [1 1 1] |
|
Name-Value Arguments
Specify optional pairs of arguments as
Name1=Value1,...,NameN=ValueN
, where Name
is
the argument name and Value
is the corresponding value.
Name-value arguments must appear after other arguments, but the order of the
pairs does not matter.
Before R2021a, use commas to separate each name and value, and enclose
Name
in quotes.
Example: 'Marker','o','MarkerFaceColor','red'
The properties listed here are only a subset. For a complete list, see ImplicitFunctionSurface Properties.
MeshDensity
— Number of evaluation points per direction
35 (default) | number
Number of evaluation points per direction, specified as a number.
The default is 35
.
Example: 100
EdgeColor
— Line color
[0 0 0]
(default) | 'interp'
| RGB triplet | hexadecimal color code | 'r'
| 'g'
| 'b'
| ...
Line color, specified as 'interp'
, an RGB triplet, a hexadecimal color
code, a color name, or a short name. The default RGB triplet value of [0 0
0]
corresponds to black. The 'interp'
value colors the
edges based on the ZData
values.
For a custom color, specify an RGB triplet or a hexadecimal color code.
An RGB triplet is a three-element row vector whose elements specify the intensities of the red, green, and blue components of the color. The intensities must be in the range
[0,1]
, for example,[0.4 0.6 0.7]
.A hexadecimal color code is a string scalar or character vector that starts with a hash symbol (
#
) followed by three or six hexadecimal digits, which can range from0
toF
. The values are not case sensitive. Therefore, the color codes"#FF8800"
,"#ff8800"
,"#F80"
, and"#f80"
are equivalent.
Alternatively, you can specify some common colors by name. This table lists the named color options, the equivalent RGB triplets, and hexadecimal color codes.
Color Name | Short Name | RGB Triplet | Hexadecimal Color Code | Appearance |
---|---|---|---|---|
"red" | "r" | [1 0 0] | "#FF0000" | |
"green" | "g" | [0 1 0] | "#00FF00" | |
"blue" | "b" | [0 0 1] | "#0000FF" | |
"cyan"
| "c" | [0 1 1] | "#00FFFF" | |
"magenta" | "m" | [1 0 1] | "#FF00FF" | |
"yellow" | "y" | [1 1 0] | "#FFFF00" | |
"black" | "k" | [0 0 0] | "#000000" | |
"white" | "w" | [1 1 1] | "#FFFFFF" | |
"none" | Not applicable | Not applicable | Not applicable | No color |
Here are the RGB triplets and hexadecimal color codes for the default colors MATLAB® uses in many types of plots.
RGB Triplet | Hexadecimal Color Code | Appearance |
---|---|---|
[0 0.4470 0.7410] | "#0072BD" | |
[0.8500 0.3250 0.0980] | "#D95319" | |
[0.9290 0.6940 0.1250] | "#EDB120" | |
[0.4940 0.1840 0.5560] | "#7E2F8E" | |
[0.4660 0.6740 0.1880] | "#77AC30" | |
[0.3010 0.7450 0.9330] | "#4DBEEE" | |
[0.6350 0.0780 0.1840] | "#A2142F" |
LineStyle
— Line style
"-"
(default) | "--"
| ":"
| "-."
| "none"
Line style, specified as one of the options listed in this table.
Line Style | Description | Resulting Line |
---|---|---|
"-" | Solid line |
|
"--" | Dashed line |
|
":" | Dotted line |
|
"-." | Dash-dotted line |
|
"none" | No line | No line |
LineWidth
— Line width
0.5
(default) | positive value
Line width, specified as a positive value in points, where 1 point = 1/72 of an inch. If the line has markers, then the line width also affects the marker edges.
The line width cannot be thinner than the width of a pixel. If you set the line width to a value that is less than the width of a pixel on your system, the line displays as one pixel wide.
Marker
— Marker symbol
"none"
(default) | "o"
| "+"
| "*"
| "."
| ...
Marker symbol, specified as one of the values listed in this table. By default, the object does not display markers. Specifying a marker symbol adds markers at each data point or vertex.
Marker | Description | Resulting Marker |
---|---|---|
"o" | Circle |
|
"+" | Plus sign |
|
"*" | Asterisk |
|
"." | Point |
|
"x" | Cross |
|
"_" | Horizontal line |
|
"|" | Vertical line |
|
"square" | Square |
|
"diamond" | Diamond |
|
"^" | Upward-pointing triangle |
|
"v" | Downward-pointing triangle |
|
">" | Right-pointing triangle |
|
"<" | Left-pointing triangle |
|
"pentagram" | Pentagram |
|
"hexagram" | Hexagram |
|
"none" | No markers | Not applicable |
MarkerEdgeColor
— Marker outline color
'auto'
(default) | RGB triplet | hexadecimal color code | 'r'
| 'g'
| 'b'
| ...
Marker outline color, specified as 'auto'
, an RGB triplet, a
hexadecimal color code, a color name, or a short name. The default value of
'auto'
uses the same color as the EdgeColor
property.
For a custom color, specify an RGB triplet or a hexadecimal color code.
An RGB triplet is a three-element row vector whose elements specify the intensities of the red, green, and blue components of the color. The intensities must be in the range
[0,1]
, for example,[0.4 0.6 0.7]
.A hexadecimal color code is a string scalar or character vector that starts with a hash symbol (
#
) followed by three or six hexadecimal digits, which can range from0
toF
. The values are not case sensitive. Therefore, the color codes"#FF8800"
,"#ff8800"
,"#F80"
, and"#f80"
are equivalent.
Alternatively, you can specify some common colors by name. This table lists the named color options, the equivalent RGB triplets, and hexadecimal color codes.
Color Name | Short Name | RGB Triplet | Hexadecimal Color Code | Appearance |
---|---|---|---|---|
"red" | "r" | [1 0 0] | "#FF0000" | |
"green" | "g" | [0 1 0] | "#00FF00" | |
"blue" | "b" | [0 0 1] | "#0000FF" | |
"cyan"
| "c" | [0 1 1] | "#00FFFF" | |
"magenta" | "m" | [1 0 1] | "#FF00FF" | |
"yellow" | "y" | [1 1 0] | "#FFFF00" | |
"black" | "k" | [0 0 0] | "#000000" | |
"white" | "w" | [1 1 1] | "#FFFFFF" | |
"none" | Not applicable | Not applicable | Not applicable | No color |
Here are the RGB triplets and hexadecimal color codes for the default colors MATLAB uses in many types of plots.
RGB Triplet | Hexadecimal Color Code | Appearance |
---|---|---|
[0 0.4470 0.7410] | "#0072BD" | |
[0.8500 0.3250 0.0980] | "#D95319" | |
[0.9290 0.6940 0.1250] | "#EDB120" | |
[0.4940 0.1840 0.5560] | "#7E2F8E" | |
[0.4660 0.6740 0.1880] | "#77AC30" | |
[0.3010 0.7450 0.9330] | "#4DBEEE" | |
[0.6350 0.0780 0.1840] | "#A2142F" |
Example: [0.5 0.5 0.5]
Example: 'blue'
Example: '#D2F9A7'
MarkerFaceColor
— Marker fill color
"none"
(default) | "auto"
| RGB triplet | hexadecimal color code | "r"
| "g"
| "b"
| ...
Marker fill color, specified as "auto"
, an RGB triplet, a hexadecimal color
code, a color name, or a short name. The "auto"
value uses the same
color as the MarkerEdgeColor
property.
For a custom color, specify an RGB triplet or a hexadecimal color code.
An RGB triplet is a three-element row vector whose elements specify the intensities of the red, green, and blue components of the color. The intensities must be in the range
[0,1]
, for example,[0.4 0.6 0.7]
.A hexadecimal color code is a string scalar or character vector that starts with a hash symbol (
#
) followed by three or six hexadecimal digits, which can range from0
toF
. The values are not case sensitive. Therefore, the color codes"#FF8800"
,"#ff8800"
,"#F80"
, and"#f80"
are equivalent.
Alternatively, you can specify some common colors by name. This table lists the named color options, the equivalent RGB triplets, and hexadecimal color codes.
Color Name | Short Name | RGB Triplet | Hexadecimal Color Code | Appearance |
---|---|---|---|---|
"red" | "r" | [1 0 0] | "#FF0000" | |
"green" | "g" | [0 1 0] | "#00FF00" | |
"blue" | "b" | [0 0 1] | "#0000FF" | |
"cyan"
| "c" | [0 1 1] | "#00FFFF" | |
"magenta" | "m" | [1 0 1] | "#FF00FF" | |
"yellow" | "y" | [1 1 0] | "#FFFF00" | |
"black" | "k" | [0 0 0] | "#000000" | |
"white" | "w" | [1 1 1] | "#FFFFFF" | |
"none" | Not applicable | Not applicable | Not applicable | No color |
Here are the RGB triplets and hexadecimal color codes for the default colors MATLAB uses in many types of plots.
RGB Triplet | Hexadecimal Color Code | Appearance |
---|---|---|
[0 0.4470 0.7410] | "#0072BD" | |
[0.8500 0.3250 0.0980] | "#D95319" | |
[0.9290 0.6940 0.1250] | "#EDB120" | |
[0.4940 0.1840 0.5560] | "#7E2F8E" | |
[0.4660 0.6740 0.1880] | "#77AC30" | |
[0.3010 0.7450 0.9330] | "#4DBEEE" | |
[0.6350 0.0780 0.1840] | "#A2142F" |
Example: [0.3 0.2 0.1]
Example: "green"
Example: "#D2F9A7"
MarkerSize
— Marker size
6
(default) | positive value
Marker size, specified as a positive value in points, where 1 point = 1/72 of an inch.
Output Arguments
fi
— One or more objects
scalar | vector
One or more objects, returned as a scalar or a vector. The object is an implicit function surface object. You can use these objects to query and modify properties of a specific line. For details, see ImplicitFunctionSurface Properties.
Algorithms
fimplicit3
assigns the symbolic variables in
f
to the x
axis, the y
axis, then the z
axis, and symvar
determines the order of the variables to be assigned. Therefore,
variable and axis names might not correspond. To force fimplicit3
to assign x, y, or z to its
corresponding axis, create the symbolic function to plot, then pass the symbolic
function to fimplicit3
.
For example, the following code plots the roots of the implicit function
f(x,y,z)
= x + z in two ways. The first way forces
fimplicit3
to assign x and
z to their corresponding axes. In the second way,
fimplicit3
defers to symvar
to determine
variable order and axis assignment: fimplicit3
assigns
x and z to the x- and
y-axes, respectively.
syms x y z; f(x,y,z) = x + z; figure; subplot(2,1,1) fimplicit3(f); view(-38,71); subplot(2,1,2) fimplicit3(f(x,y,z)); % Or fimplicit3(x + z);
Version History
Introduced in R2016b
See Also
Functions
Properties
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)