Library
Public Interface
DomainColoring.checkerplot — Functioncheckerplot(
f :: "Complex -> Complex",
limits = (-1, 1, -1, 1);
pixels = (720, 720),
real = false,
imag = false,
rect = false,
angle = false,
abs = false,
polar = false,
box = nothing,
hicontrast = false,
kwargs...
)Takes a complex function and produces a checker plot.
Arguments
fis the complex function to plot.limitsare the limits of the rectangle to plot, in the format(minRe, maxRe, minIm, maxIm), if one or two numbers are provided instead they are take symmetric along the real and imaginary axis.
Keyword Arguments
pixelsis the number of pixels to compute in, respectively, the real and imaginary axis, taking the same for both if only one number is provided.
If none of the below options are set, the plot defaults to rect = true.
realplots black and white stripes orthogonal to the real axis at a rate of one stripe per unit increase. If set to a number this will be used as width instead.imagplots black and white stripes orthogonal to the imaginary axis at a rate of one stripe per unit increase. If set to a number this will be used as width instead.rectis a shortcut forreal = trueandimag = true.angleplots black and white stripes orthogonal to the phase angle at a rate of eight stripes per full rotation. Can be set to an integer to specify a different rate.absplots black and white stripes at a rate of one stripe per unit increase of the natural logarithm of the magnitude. If set to a number this is used as the base of the logarithm. When set to a function, unit increases of its output are used instead.polaris a shortcut forangle = trueandabs = true. Can also be set to the basis to use forabs, then a suitable rate foranglewill be selected.boxif set to(a, b, s)shades the area where the output is within the boxaandbin the colorswhen set to(f, s)the colored domain is defined byf(w) == true. Can also be a list of multiple boxes.hicontrastuses black and white instead of the softer defaults.
Remaining keyword arguments are passed to the plotting backend.
DomainColoring.checkerplot! — Functioncheckerplot(
f :: "Complex -> Complex",
limits = (-1, 1, -1, 1);
pixels = (720, 720),
real = false,
imag = false,
rect = false,
angle = false,
abs = false,
polar = false,
box = nothing,
hicontrast = false,
kwargs...
)Takes a complex function and produces a checker plot.
Arguments
fis the complex function to plot.limitsare the limits of the rectangle to plot, in the format(minRe, maxRe, minIm, maxIm), if one or two numbers are provided instead they are take symmetric along the real and imaginary axis.
Keyword Arguments
pixelsis the number of pixels to compute in, respectively, the real and imaginary axis, taking the same for both if only one number is provided.
If none of the below options are set, the plot defaults to rect = true.
realplots black and white stripes orthogonal to the real axis at a rate of one stripe per unit increase. If set to a number this will be used as width instead.imagplots black and white stripes orthogonal to the imaginary axis at a rate of one stripe per unit increase. If set to a number this will be used as width instead.rectis a shortcut forreal = trueandimag = true.angleplots black and white stripes orthogonal to the phase angle at a rate of eight stripes per full rotation. Can be set to an integer to specify a different rate.absplots black and white stripes at a rate of one stripe per unit increase of the natural logarithm of the magnitude. If set to a number this is used as the base of the logarithm. When set to a function, unit increases of its output are used instead.polaris a shortcut forangle = trueandabs = true. Can also be set to the basis to use forabs, then a suitable rate foranglewill be selected.boxif set to(a, b, s)shades the area where the output is within the boxaandbin the colorswhen set to(f, s)the colored domain is defined byf(w) == true. Can also be a list of multiple boxes.hicontrastuses black and white instead of the softer defaults.
Remaining keyword arguments are passed to the plotting backend.
DomainColoring.domaincolor — Functiondomaincolor(
f :: "Complex -> Complex",
limits = (-1, 1, -1, 1);
pixels = (720, 720),
abs = false,
grid = false,
color = true,
all = false,
box = nothing,
kwargs...
)Takes a complex function and produces its domain coloring plot.
Red corresponds to phase $0$, yellow to $\frac{\pi}{3}$, green to $\frac{2\pi}{3}$, cyan to $\pi$, blue to $\frac{4\pi}{3}$, and magenta to $\frac{5\pi}{3}$.
Arguments
fis the complex function to plot.limitsare the limits of the rectangle to plot, in the format(minRe, maxRe, minIm, maxIm), if one or two numbers are provided instead they are take symmetric along the real and imaginary axis.
Keyword Arguments
pixelsis the number of pixels to compute in, respectively, the real and imaginary axis, taking the same for both if only one number is provided.abstoggles the plotting of the natural logarithm of the magnitude as lightness ramps between level curves. If set to a number, this will be used as base of the logarithm instead, if set toInf, zero magnitude will be colored black and poles white. Further granular control can be achieved by passing a named tuple with any of the parametersbase,transform, oralpha.basechanges the base of the logarithm, as before.transformis the function applied to the magnitude (m -> log(base, m)by default), andalphachanges the rate at which zeros and poles are colored and impliesbase = Inf.gridplots points with integer real or imaginary part as black dots. More complicated arguments can be passed as a named tuple in a similar fashion tocheckerplot.colortoggles coloring of the phase angle. Can also be set to either the name of, or aColorScheme, or a functionθ -> Color. If set to:printa desaturated version of the default is used.allis a shortcut forabs = true,grid = true, andcolor = true.boxif set to(a, b, s)shades the area where the output is within the boxaandbin the colorswhen set to(f, s)the colored domain is defined byf(w) == true. Can also be a list of multiple boxes.
Remaining keyword arguments are passed to the plotting backend.
DomainColoring.domaincolor! — Functiondomaincolor(
f :: "Complex -> Complex",
limits = (-1, 1, -1, 1);
pixels = (720, 720),
abs = false,
grid = false,
color = true,
all = false,
box = nothing,
kwargs...
)Takes a complex function and produces its domain coloring plot.
Red corresponds to phase $0$, yellow to $\frac{\pi}{3}$, green to $\frac{2\pi}{3}$, cyan to $\pi$, blue to $\frac{4\pi}{3}$, and magenta to $\frac{5\pi}{3}$.
Arguments
fis the complex function to plot.limitsare the limits of the rectangle to plot, in the format(minRe, maxRe, minIm, maxIm), if one or two numbers are provided instead they are take symmetric along the real and imaginary axis.
Keyword Arguments
pixelsis the number of pixels to compute in, respectively, the real and imaginary axis, taking the same for both if only one number is provided.abstoggles the plotting of the natural logarithm of the magnitude as lightness ramps between level curves. If set to a number, this will be used as base of the logarithm instead, if set toInf, zero magnitude will be colored black and poles white. Further granular control can be achieved by passing a named tuple with any of the parametersbase,transform, oralpha.basechanges the base of the logarithm, as before.transformis the function applied to the magnitude (m -> log(base, m)by default), andalphachanges the rate at which zeros and poles are colored and impliesbase = Inf.gridplots points with integer real or imaginary part as black dots. More complicated arguments can be passed as a named tuple in a similar fashion tocheckerplot.colortoggles coloring of the phase angle. Can also be set to either the name of, or aColorScheme, or a functionθ -> Color. If set to:printa desaturated version of the default is used.allis a shortcut forabs = true,grid = true, andcolor = true.boxif set to(a, b, s)shades the area where the output is within the boxaandbin the colorswhen set to(f, s)the colored domain is defined byf(w) == true. Can also be a list of multiple boxes.
Remaining keyword arguments are passed to the plotting backend.
DomainColoring.pdphaseplot — Functionpdphaseplot(
f :: "Complex -> Complex",
limits = (-1, 1, -1, 1);
pixels = (720, 720),
real = false,
imag = false,
rect = false,
angle = false,
abs = false,
polar = false,
box = nothing,
kwargs...
)Takes a complex valued function and produces a phase plot using ColorCET's CBC1 cyclic color map for protanopic and deuteranopic viewers.
Yellow corresponds to phase $0$, white to $\frac{\pi}{2}$, blue to $\pi$, and black to $\frac{3\pi}{2}$.
Arguments
fis the complex function to plot.limitsare the limits of the rectangle to plot, in the format(minRe, maxRe, minIm, maxIm), if one or two numbers are provided instead they are take symmetric along the real and imaginary axis.
Keyword Arguments
pixelsis the number of pixels to compute in, respectively, the real and imaginary axis, taking the same for both if only one number is provided.realplots black to white ramps orthogonal to the real axis at a rate of one ramp per unit increase. If set to a number this will be used as width instead.imagplots black to white ramps orthogonal to the imaginary axis at a rate of one ramp per unit increase. If set to a number this will be used as width instead.rectis a shortcut forreal = trueandimag = true.angleplots black to white ramps orthogonal to the phase angle at a rate of eight ramps per full rotation. Can be set to an integer to specify a different rate.absplots black to white ramps at a rate of one ramp per unit increase of the natural logarithm of the magnitude. If set to a number this is used as the base of the logarithm. When set to a function, unit increases of its output are used instead.polaris a shortcut forangle = trueandabs = true. Can also be set to the basis to use forabs, then a suitable rate foranglewill be selected.boxif set to(a, b, s)shades the area where the output is within the boxaandbin the colorswhen set to(f, s)the colored domain is defined byf(w) == true. Can also be a list of multiple boxes.
Remaining keyword arguments are passed to the plotting backend.
DomainColoring.pdphaseplot! — Functionpdphaseplot(
f :: "Complex -> Complex",
limits = (-1, 1, -1, 1);
pixels = (720, 720),
real = false,
imag = false,
rect = false,
angle = false,
abs = false,
polar = false,
box = nothing,
kwargs...
)Takes a complex valued function and produces a phase plot using ColorCET's CBC1 cyclic color map for protanopic and deuteranopic viewers.
Yellow corresponds to phase $0$, white to $\frac{\pi}{2}$, blue to $\pi$, and black to $\frac{3\pi}{2}$.
Arguments
fis the complex function to plot.limitsare the limits of the rectangle to plot, in the format(minRe, maxRe, minIm, maxIm), if one or two numbers are provided instead they are take symmetric along the real and imaginary axis.
Keyword Arguments
pixelsis the number of pixels to compute in, respectively, the real and imaginary axis, taking the same for both if only one number is provided.realplots black to white ramps orthogonal to the real axis at a rate of one ramp per unit increase. If set to a number this will be used as width instead.imagplots black to white ramps orthogonal to the imaginary axis at a rate of one ramp per unit increase. If set to a number this will be used as width instead.rectis a shortcut forreal = trueandimag = true.angleplots black to white ramps orthogonal to the phase angle at a rate of eight ramps per full rotation. Can be set to an integer to specify a different rate.absplots black to white ramps at a rate of one ramp per unit increase of the natural logarithm of the magnitude. If set to a number this is used as the base of the logarithm. When set to a function, unit increases of its output are used instead.polaris a shortcut forangle = trueandabs = true. Can also be set to the basis to use forabs, then a suitable rate foranglewill be selected.boxif set to(a, b, s)shades the area where the output is within the boxaandbin the colorswhen set to(f, s)the colored domain is defined byf(w) == true. Can also be a list of multiple boxes.
Remaining keyword arguments are passed to the plotting backend.
DomainColoring.sawplot — Functionsawplot(
f :: "Complex -> Complex",
limits = (-1, 1, -1, 1);
pixels = (720, 720),
real = false,
imag = false,
rect = false,
angle = false,
abs = false,
polar = false,
color = false,
box = nothing,
kwargs...
)Takes a complex function and produces a saw plot.
Arguments
fis the complex function to plot.limitsare the limits of the rectangle to plot, in the format(minRe, maxRe, minIm, maxIm), if one or two numbers are provided instead they are take symmetric along the real and imaginary axis.
Keyword Arguments
pixelsis the number of pixels to compute in, respectively, the real and imaginary axis, taking the same for both if only one number is provided.
If none of the below options are set, the plot defaults to rect = true.
realplots black to white ramps orthogonal to the real axis at a rate of one ramp per unit increase. If set to a number this will be used as width instead.imagplots black to white ramps orthogonal to the imaginary axis at a rate of one ramp per unit increase. If set to a number this will be used as width instead.rectis a shortcut forreal = trueandimag = true.angleplots black to white ramps orthogonal to the phase angle at a rate of eight ramps per full rotation. Can be set to an integer to specify a different rate.absplots black to white ramps at a rate of one ramp per unit increase of the natural logarithm of the magnitude. If set to a number this is used as the base of the logarithm. When set to a function, unit increases of its output are used instead.polaris a shortcut forangle = trueandabs = true. Can also be set to the basis to use forabs, then a suitable rate foranglewill be selected.colortoggles coloring of the phase angle. Can also be set to either the name of, or aColorScheme, or a functionθ -> Color. If set to:printa desaturated version of the default is used.boxif set to(a, b, s)shades the area where the output is within the boxaandbin the colorswhen set to(f, s)the colored domain is defined byf(w) == true. Can also be a list of multiple boxes.
Remaining keyword arguments are passed to the plotting backend.
DomainColoring.sawplot! — Functionsawplot(
f :: "Complex -> Complex",
limits = (-1, 1, -1, 1);
pixels = (720, 720),
real = false,
imag = false,
rect = false,
angle = false,
abs = false,
polar = false,
color = false,
box = nothing,
kwargs...
)Takes a complex function and produces a saw plot.
Arguments
fis the complex function to plot.limitsare the limits of the rectangle to plot, in the format(minRe, maxRe, minIm, maxIm), if one or two numbers are provided instead they are take symmetric along the real and imaginary axis.
Keyword Arguments
pixelsis the number of pixels to compute in, respectively, the real and imaginary axis, taking the same for both if only one number is provided.
If none of the below options are set, the plot defaults to rect = true.
realplots black to white ramps orthogonal to the real axis at a rate of one ramp per unit increase. If set to a number this will be used as width instead.imagplots black to white ramps orthogonal to the imaginary axis at a rate of one ramp per unit increase. If set to a number this will be used as width instead.rectis a shortcut forreal = trueandimag = true.angleplots black to white ramps orthogonal to the phase angle at a rate of eight ramps per full rotation. Can be set to an integer to specify a different rate.absplots black to white ramps at a rate of one ramp per unit increase of the natural logarithm of the magnitude. If set to a number this is used as the base of the logarithm. When set to a function, unit increases of its output are used instead.polaris a shortcut forangle = trueandabs = true. Can also be set to the basis to use forabs, then a suitable rate foranglewill be selected.colortoggles coloring of the phase angle. Can also be set to either the name of, or aColorScheme, or a functionθ -> Color. If set to:printa desaturated version of the default is used.boxif set to(a, b, s)shades the area where the output is within the boxaandbin the colorswhen set to(f, s)the colored domain is defined byf(w) == true. Can also be a list of multiple boxes.
Remaining keyword arguments are passed to the plotting backend.
DomainColoring.tphaseplot — Functiontphaseplot(
f :: "Complex -> Complex",
limits = (-1, 1, -1, 1);
pixels = (720, 720),
real = false,
imag = false,
rect = false,
angle = false,
abs = false,
polar = false,
box = nothing,
kwargs...
)Takes a complex valued function and produces a phase plot using ColorCET's CBTC1 cyclic color map for titranopic viewers.
Red corresponds to phase $0$, white to $\frac{\pi}{2}$, cyan to $\pi$, and black to $\frac{3\pi}{2}$.
Arguments
fis the complex function to plot.limitsare the limits of the rectangle to plot, in the format(minRe, maxRe, minIm, maxIm), if one or two numbers are provided instead they are take symmetric along the real and imaginary axis.
Keyword Arguments
pixelsis the number of pixels to compute in, respectively, the real and imaginary axis, taking the same for both if only one number is provided.realplots black to white ramps orthogonal to the real axis at a rate of one ramp per unit increase. If set to a number this will be used as width instead.imagplots black to white ramps orthogonal to the imaginary axis at a rate of one ramp per unit increase. If set to a number this will be used as width instead.rectis a shortcut forreal = trueandimag = true.angleplots black to white ramps orthogonal to the phase angle at a rate of eight ramps per full rotation. Can be set to an integer to specify a different rate.absplots black to white ramps at a rate of one ramp per unit increase of the natural logarithm of the magnitude. If set to a number this is used as the base of the logarithm. When set to a function, unit increases of its output are used instead.polaris a shortcut forangle = trueandabs = true. Can also be set to the basis to use forabs, then a suitable rate foranglewill be selected.boxif set to(a, b, s)shades the area where the output is within the boxaandbin the colorswhen set to(f, s)the colored domain is defined byf(w) == true. Can also be a list of multiple boxes.
Remaining keyword arguments are passed to the plotting backend.
DomainColoring.tphaseplot! — Functiontphaseplot(
f :: "Complex -> Complex",
limits = (-1, 1, -1, 1);
pixels = (720, 720),
real = false,
imag = false,
rect = false,
angle = false,
abs = false,
polar = false,
box = nothing,
kwargs...
)Takes a complex valued function and produces a phase plot using ColorCET's CBTC1 cyclic color map for titranopic viewers.
Red corresponds to phase $0$, white to $\frac{\pi}{2}$, cyan to $\pi$, and black to $\frac{3\pi}{2}$.
Arguments
fis the complex function to plot.limitsare the limits of the rectangle to plot, in the format(minRe, maxRe, minIm, maxIm), if one or two numbers are provided instead they are take symmetric along the real and imaginary axis.
Keyword Arguments
pixelsis the number of pixels to compute in, respectively, the real and imaginary axis, taking the same for both if only one number is provided.realplots black to white ramps orthogonal to the real axis at a rate of one ramp per unit increase. If set to a number this will be used as width instead.imagplots black to white ramps orthogonal to the imaginary axis at a rate of one ramp per unit increase. If set to a number this will be used as width instead.rectis a shortcut forreal = trueandimag = true.angleplots black to white ramps orthogonal to the phase angle at a rate of eight ramps per full rotation. Can be set to an integer to specify a different rate.absplots black to white ramps at a rate of one ramp per unit increase of the natural logarithm of the magnitude. If set to a number this is used as the base of the logarithm. When set to a function, unit increases of its output are used instead.polaris a shortcut forangle = trueandabs = true. Can also be set to the basis to use forabs, then a suitable rate foranglewill be selected.boxif set to(a, b, s)shades the area where the output is within the boxaandbin the colorswhen set to(f, s)the colored domain is defined byf(w) == true. Can also be a list of multiple boxes.
Remaining keyword arguments are passed to the plotting backend.
Package Internals
DomainColoring.arenberg — MethodDomainColoring.arenberg(θ; print = false)Maps a phase angle θ to a color in Oklab space by taking
\[\begin{aligned} L &= .72 - .1 \cos(3\theta), \\ a &= .12 \cos(\theta + .4), \quad\text{and} \\ b &= .12 \sin(\theta + .4) + .02. \end{aligned}\]
If print is set to true, a desaturated version is used which is more easily reproduced on consumer grade printers.
See The Arenberg Phase Wheel for more information.
DomainColoring.arenberg_cielab — MethodDomainColoring.arenberg_cielab(θ; print = false)Superseded by the Oklab version: arenberg.
Maps a phase angle θ to a color in CIE L*a*b* space by taking
\[\begin{aligned} L^* &= 67 - 12 \cos(3\theta), \\ a^* &= 46 \cos(\theta + .4) - 3, \quad\text{and} \\ b^* &= 46 \sin(\theta + .4) - 16. \end{aligned}\]
If print is set to true, a desaturated version is used which is more easily reproduced on consumer grade printers.
DomainColoring.checkerplotshader — MethodDomainColoring.checkerplotshader(
w :: Complex;
real = false,
imag = false,
rect = false,
angle = false,
abs = false,
polar = false,
box = nothing,
hicontrast = false,
)Takes a complex value w and shades it as in a checker plot.
For documentation of the remaining arguments see checkerplot.
DomainColoring.domaincolorshader — MethodDomainColoring.domaincolorshader(
w :: Complex;
abs = false,
grid = false,
color = true,
all = false,
box = nothing,
)Takes a complex value w and shades it as in a domain coloring.
For documentation of the remaining arguments see domaincolor.
DomainColoring.renderimage — FunctionDomainColoring.renderimage(
f :: "Complex -> Complex",
shader :: "Complex -> Color",
limits = (-1, 1, -1, 1),
pixels = (720, 720),
)Arguments
fis the complex function to turn into an image.shaderis the shader function to compute a pixel.limitsare the limits of the rectangle to render, in the format(minRe, maxRe, minIm, maxIm), if one or two numbers are provided instead they are take symmetric along the real and imaginary axis.pixelsis the size of the output in pixels, respectively, the number of pixels along the real and imaginary axis, taking the same for both if only one number is provided.
DomainColoring.renderimage! — MethodDomainColoring.renderimage!(
out :: Matrix{<: Color},
f :: "Complex -> Complex",
shader :: "Complex -> Color",
limits = (-1, 1, -1, 1),
)Arguments
outis the output image buffer.fis the complex function to turn into an image.shaderis the shader function to compute a pixel.limitsare the limits of the rectangle to render, in the format(minRe, maxRe, minIm, maxIm), if one or two numbers are provided instead they are take symmetric along the real and imaginary axis.
DomainColoring.sawplotshader — MethodDomainColoring.sawplotshader(
w :: Complex;
real = false,
imag = false,
rect = false,
angle = false,
abs = false,
polar = false,
color = false,
box = nothing,
)Takes a complex value w and shades it as in a saw plot.
For documentation of the remaining arguments see sawplot.
DomainColoring.shadedplot — FunctionDomainColoring.shadedplot(
f :: "Complex -> Complex",
shader :: "Complex -> Color",
limits = (-1, 1, -1, 1),
pixels = (720, 720);
kwargs...
)Takes a complex function f and a shader and produces a plot.
For documentation of the remaining arguments see renderimage.
Keyword arguments are passed to the backend.
DomainColoring.shadedplot! — FunctionDomainColoring.shadedplot(
f :: "Complex -> Complex",
shader :: "Complex -> Color",
limits = (-1, 1, -1, 1),
pixels = (720, 720);
kwargs...
)Takes a complex function f and a shader and produces a plot.
For documentation of the remaining arguments see renderimage.
Keyword arguments are passed to the backend.
DomainColoring.@shadedplot — MacroDomainColoring.@shadedplot(basename, shaderkwargs, shader)Macro emitting implementations of basename and basename! in a similar fashion to the other plotting routines in this library, see for instance domaincolor and domaincolor!.
shaderkwargs is a named tuple setting keyword arguments used in the expression shader. The result of shader should be a function Complex -> Color and is used to shade the resulting plot.
See the source for examples.