Public Documentation
Documentation for SmithChart.jl public interface.
Contents
Index
SmithChart.CGCircleSmithChart.NFCircleSmithChart.StabilityCircleSmithChart.datamarkersSmithChart.smithplotSmithChart.smithscatterSmithChart.vswr
Public Interface
SmithChart.smithplot — Function
smithplot(z; kwargs...)Plot lines on the Smith Chart.
Valid Keywords:
reflection = false: Specifies whether it is a normalized impedance or a reflection coefficient.freq = Float64[]Array of frequencies associated with each represented value. Mainly used byDataInspector.
Examples
using SmithChart
using CairoMakie
fig = Figure(size = (800, 600))
sc = SmithAxis(fig[1, 1], cutgrid = true)
r = 0.6 .+ 0.15 * exp.(1im .* range(0, 2π; length = 300))
smithplot!(sc, r; color = :dodgerblue, linewidth = 2)
fig```
Plot type
The plot type alias for the smithplot function is SmithPlot.
Attributes
alpha = 1.0 — The alpha value of the colormap or color attribute. Multiple alphas like in plot(alpha=0.2, color=(:red, 0.5), will get multiplied.
clip_planes = @inherit clip_planes automatic — Clip planes offer a way to do clipping in 3D space. You can set a Vector of up to 8 Plane3f planes here, behind which plots will be clipped (i.e. become invisible). By default clip planes are inherited from the parent plot or scene. You can remove parent clip_planes by passing Plane3f[].
color = @inherit linecolor — The color of the line.
colormap = @inherit colormap :viridis — Sets the colormap that is sampled for numeric colors. PlotUtils.cgrad(...), Makie.Reverse(any_colormap) can be used as well, or any symbol from ColorBrewer or PlotUtils. To see all available color gradients, you can call Makie.available_gradients().
colorrange = automatic — The values representing the start and end points of colormap.
colorscale = identity — The color transform function. Can be any function, but only works well together with Colorbar for identity, log, log2, log10, sqrt, logit, Makie.pseudolog10, Makie.Symlog10, Makie.AsinhScale, Makie.SinhScale, Makie.LogScale, Makie.LuptonAsinhScale, and Makie.PowerScale.
cycle = [:color] — Sets which attributes to cycle when creating multiple plots. The values to cycle through are defined by the parent Theme. Multiple cycled attributes can be set by passing a vector. Elements can
- directly refer to a cycled attribute, e.g.
:color - map a cycled attribute to a palette attribute, e.g.
:linecolor => :color - map multiple cycled attributes to a palette attribute, e.g.
[:linecolor, :markercolor] => :color
depth_shift = 0.0 — Adjusts the depth value of a plot after all other transformations, i.e. in clip space, where -1 <= depth <= 1. This only applies to GLMakie and WGLMakie and can be used to adjust render order (like a tunable overdraw).
freq = Float64[] — Array of frequencies associated with each represented value. Mainly used by DataInspector
fxaa = false — Adjusts whether the plot is rendered with fxaa (fast approximate anti-aliasing, GLMakie only). Note that some plots implement a better native anti-aliasing solution (scatter, text, lines). For them fxaa = true generally lowers quality. Plots that show smoothly interpolated data (e.g. image, surface) may also degrade in quality as fxaa = true can cause blurring.
highclip = automatic — The color for any value above the colorrange.
inspectable = @inherit inspectable — Sets whether this plot should be seen by DataInspector. The default depends on the theme of the parent scene.
inspector_clear = automatic — Sets a callback function (inspector, plot) -> ... for cleaning up custom indicators in DataInspector.
inspector_hover = automatic — Sets a callback function (inspector, plot, index) -> ... which replaces the default show_data methods.
inspector_label = automatic — Sets a callback function (plot, index, position) -> string which replaces the default label generated by DataInspector.
joinstyle = @inherit joinstyle — Controls the rendering at corners. Options are :miter for sharp corners, :bevel for "cut off" corners, and :round for rounded corners. If the corner angle is below miter_limit, :miter is equivalent to :bevel to avoid long spikes.
linecap = @inherit linecap — Sets the type of line cap used. Options are :butt (flat without extrusion), :square (flat with half a linewidth extrusion) or :round.
linestyle = nothing — Sets the dash pattern of the line. Options are :solid (equivalent to nothing), :dot, :dash, :dashdot and :dashdotdot. These can also be given in a tuple with a gap style modifier, either :normal, :dense or :loose. For example, (:dot, :loose) or (:dashdot, :dense).
linewidth = @inherit linewidth — Sets the width of the line in screen units
lowclip = automatic — The color for any value below the colorrange.
miter_limit = @inherit miter_limit — Sets the minimum inner join angle below which miter joins truncate. See also Makie.miter_distance_to_angle.
model = automatic — Sets a model matrix for the plot. This overrides adjustments made with translate!, rotate! and scale!.
nan_color = :transparent — The color for NaN values.
overdraw = false — Controls if the plot will draw over other plots. This specifically means ignoring depth checks in GL backends
reflection = false — Specifies whether it is a normalized impedance or a reflection coefficient.
space = :data — Sets the transformation space for box encompassing the plot. See Makie.spaces() for possible inputs.
ssao = false — Adjusts whether the plot is rendered with ssao (screen space ambient occlusion). Note that this only makes sense in 3D plots and is only applicable with fxaa = true.
transformation = :automatic — Controls the inheritance or directly sets the transformations of a plot. Transformations include the transform function and model matrix as generated by translate!(...), scale!(...) and rotate!(...). They can be set directly by passing a Transformation() object or inherited from the parent plot or scene. Inheritance options include:
:automatic: Inherit transformations if the parent and childspaceis compatible:inherit: Inherit transformations:inherit_model: Inherit only model transformations:inherit_transform_func: Inherit only the transform function:nothing: Inherit neither, fully disconnecting the child's transformations from the parent
Another option is to pass arguments to the transform!() function which then get applied to the plot. For example transformation = (:xz, 1.0) which rotates the xy plane to the xz plane and translates by 1.0. For this inheritance defaults to :automatic but can also be set through e.g. (:nothing, (:xz, 1.0)).
transparency = false — Adjusts how the plot deals with transparency. In GLMakie transparency = true results in using Order Independent Transparency.
visible = true — Controls whether the plot gets rendered or not.
SmithChart.smithscatter — Function
smithscatter(z; kwargs...)Scatter points on the Smith Chart.
Valid Keywords:
reflection = false: Specifies whether it is a normalized impedance or a reflection coefficient.freq = Float64[]Array of frequencies associated with each represented value. Mainly used Mainly used byDataInspector.
Examples
using SmithChart
using CairoMakie
fig = Figure(size = (800, 600))
sc = SmithAxis(fig[1, 1], cutgrid = true)
r = 0.6 .+ 0.15 * exp.(1im .* range(0, 2π; length = 300))
smithscatter!(sc, r; color = :dodgerblue, linewidth = 2)
figPlot type
The plot type alias for the smithscatter function is SmithScatter.
Attributes
alpha = 1.0 — The alpha value of the colormap or color attribute. Multiple alphas like in plot(alpha=0.2, color=(:red, 0.5), will get multiplied.
clip_planes = @inherit clip_planes automatic — Clip planes offer a way to do clipping in 3D space. You can set a Vector of up to 8 Plane3f planes here, behind which plots will be clipped (i.e. become invisible). By default clip planes are inherited from the parent plot or scene. You can remove parent clip_planes by passing Plane3f[].
color = @inherit markercolor — Sets the color of the marker. If no color is set, multiple calls to scatter! will cycle through the axis color palette.
colormap = @inherit colormap :viridis — Sets the colormap that is sampled for numeric colors. PlotUtils.cgrad(...), Makie.Reverse(any_colormap) can be used as well, or any symbol from ColorBrewer or PlotUtils. To see all available color gradients, you can call Makie.available_gradients().
colorrange = automatic — The values representing the start and end points of colormap.
colorscale = identity — The color transform function. Can be any function, but only works well together with Colorbar for identity, log, log2, log10, sqrt, logit, Makie.pseudolog10, Makie.Symlog10, Makie.AsinhScale, Makie.SinhScale, Makie.LogScale, Makie.LuptonAsinhScale, and Makie.PowerScale.
cycle = [:color] — Sets which attributes to cycle when creating multiple plots. The values to cycle through are defined by the parent Theme. Multiple cycled attributes can be set by passing a vector. Elements can
- directly refer to a cycled attribute, e.g.
:color - map a cycled attribute to a palette attribute, e.g.
:linecolor => :color - map multiple cycled attributes to a palette attribute, e.g.
[:linecolor, :markercolor] => :color
depth_shift = 0.0 — Adjusts the depth value of a plot after all other transformations, i.e. in clip space, where -1 <= depth <= 1. This only applies to GLMakie and WGLMakie and can be used to adjust render order (like a tunable overdraw).
depthsorting = false — Enables depth-sorting of markers which can improve border artifacts. Currently supported in GLMakie only.
distancefield = nothing — Optional distancefield used for e.g. font and bezier path rendering. Will get set automatically.
font = "default" — Sets the font to be used for character markers
freq = Float64[] — Array of frequencies associated with each represented value. Mainly used by DataInspector
fxaa = false — Adjusts whether the plot is rendered with fxaa (fast approximate anti-aliasing, GLMakie only). Note that some plots implement a better native anti-aliasing solution (scatter, text, lines). For them fxaa = true generally lowers quality. Plots that show smoothly interpolated data (e.g. image, surface) may also degrade in quality as fxaa = true can cause blurring.
glowcolor = (:black, 0.0) — Sets the color of the glow effect around the marker.
glowwidth = 0.0 — Sets the size of a glow effect around the marker.
highclip = automatic — The color for any value above the colorrange.
inspectable = @inherit inspectable — Sets whether this plot should be seen by DataInspector. The default depends on the theme of the parent scene.
inspector_clear = automatic — Sets a callback function (inspector, plot) -> ... for cleaning up custom indicators in DataInspector.
inspector_hover = automatic — Sets a callback function (inspector, plot, index) -> ... which replaces the default show_data methods.
inspector_label = automatic — Sets a callback function (plot, index, position) -> string which replaces the default label generated by DataInspector.
lowclip = automatic — The color for any value below the colorrange.
marker = @inherit marker — Sets the scatter marker.
marker_offset = Vec3f(0) — The offset of the marker from the given position in markerspace units. An offset of 0 corresponds to a centered marker.
markersize = @inherit markersize — Sets the size of the marker by scaling it relative to its base size which can differ for each marker. A Real scales x and y dimensions by the same amount. A Vec or Tuple with two elements scales x and y separately. An array of either scales each marker separately. Humans perceive the area of a marker as its size which grows quadratically with markersize, so multiplying markersize by 2 results in a marker that is 4 times as large, visually.
markerspace = :pixel — Sets the space in which markersize is given. See Makie.spaces() for possible inputs
model = automatic — Sets a model matrix for the plot. This overrides adjustments made with translate!, rotate! and scale!.
nan_color = :transparent — The color for NaN values.
overdraw = false — Controls if the plot will draw over other plots. This specifically means ignoring depth checks in GL backends
reflection = false — Specifies whether it is a normalized impedance or a reflection coefficient.
rotation = Billboard() — Sets the rotation of the marker. A Billboard rotation is always around the depth axis.
space = :data — Sets the transformation space for box encompassing the plot. See Makie.spaces() for possible inputs.
ssao = false — Adjusts whether the plot is rendered with ssao (screen space ambient occlusion). Note that this only makes sense in 3D plots and is only applicable with fxaa = true.
strokecolor = @inherit markerstrokecolor — Sets the color of the outline around a marker.
strokewidth = @inherit markerstrokewidth — Sets the width of the outline around a marker.
transform_marker = false — Controls whether the model matrix (without translation) applies to the marker itself, rather than just the positions. (If this is true, scale! and rotate! will affect the marker.
transformation = :automatic — Controls the inheritance or directly sets the transformations of a plot. Transformations include the transform function and model matrix as generated by translate!(...), scale!(...) and rotate!(...). They can be set directly by passing a Transformation() object or inherited from the parent plot or scene. Inheritance options include:
:automatic: Inherit transformations if the parent and childspaceis compatible:inherit: Inherit transformations:inherit_model: Inherit only model transformations:inherit_transform_func: Inherit only the transform function:nothing: Inherit neither, fully disconnecting the child's transformations from the parent
Another option is to pass arguments to the transform!() function which then get applied to the plot. For example transformation = (:xz, 1.0) which rotates the xy plane to the xz plane and translates by 1.0. For this inheritance defaults to :automatic but can also be set through e.g. (:nothing, (:xz, 1.0)).
transparency = false — Adjusts how the plot deals with transparency. In GLMakie transparency = true results in using Order Independent Transparency.
visible = true — Controls whether the plot gets rendered or not.
SmithChart.vswr — Function
vswr(v; args...)Plots reflection data on a Smith chart, configured to visualize Voltage Standing Wave Ratio (VSWR) characteristics.
This function is a convenience wrapper around smithplot, with the keyword reflection = true set by default. It is intended for use when plotting reflection coefficients or S-parameter data, where impedance normalization is not needed.
Arguments
v: VSWR valueargs...: Additional keyword arguments forwarded tosmithplot, allowing customization of plot appearance and behavior.
Example
vswr(2.0; color = :red, linewidth = 2)This plots a VSWR = 2 circle centered at the origin with radius 1/3.
See also: smithplot, smithscatter
SmithChart.datamarkers — Function
datamarkers(ax::SmithAxis, gp::GridPosition, priority = 100; fontsize = 10.0, title = true, kwargs...)Allows creating data markers with double click on the lines or scatter plots.
Arguments
- ax::SmithAxis is the
SmithAxis. - gp::GridPosition is a GridPosition. Example: fig[1,2]
- markerdict::Dict{Int, ComplexF64} is a Dict that stores the data of each marker. If you don't need
the values you can ignore this argument.
Examples
using SmithChart
using GLMakie
fig = Figure(size = (800, 600))
sc = SmithAxis(fig[1, 1], cutgrid = true)
r = 0.6 .+ 0.35 * cis.(range(0, 2π; length = 300))
smithplot!(sc, r; color = :dodgerblue, linewidth = 2)
datamarkers(sc, fig[1,2])
figSmithChart.NFCircle — Function
NFCircle(F, Fmin, Γopt, Rn, Zo)Computes the points of the constant Noise Figure Circle.
Arguments
- F: noise factor
- Fmin: minimum noise factor
- Γopt: optimimum source reflection coefficient related to Zopt or Yopt.
- Rn: noise resistance parameter
- Zo: Reference Impedance
- Np: Number of points
Example
using SmithChart
NF_to_F(nf) = 10.0^(nf/10.0)
Γopt = 0.5 * cis(130 * pi / 180)
NFmin = 1.6 # dB
Fmin = NF_to_F(NFmin)
F2dB = NF_to_F(2.0)
nf2 = NFCircle(F2dB, Fmin, Γopt, 20.0, 50.0, 361)
SmithChart.CGCircle — Function
CGCircle(gi, Sii)Computes the points of the Constant Gain Circle.
Arguments
- gi: It's gsource or gload and it's value is G / Gmax
- Sii: Reflection S parameter. S11 for Gs and S22 for Gl.
- Np: Number of points
Example
using SmithChart
S11 = 0.533 * cis(176.6 / 180 * π)
Gs_max = 1 / (1 - abs2(S11))
gain(dB) = 10.0^(dB/10.0)
g1 = gain(0.0) / Gs_max
c1 = CGCircle(g1, S11, 361)
SmithChart.StabilityCircle — Function
StabilityCircle(S11, S12, S21, S22, inout::Symbol, Np; stable = false)Computes the region of stability (or unstability) and returns a Makie.Polygon.
Arguments
- Sii: S-parameter
- inout: a symbol selecting source or load regions. Valid values are :load or :source.
- Np: Number of points.
- stable: Selects if the region corresponds to the stable (true) or unstable (false) region.
Examples
using SmithChart
S11, S12, S21, S22 = [0.438868-0.778865im 1.4+0.2im; 0.1+0.43im 0.692125-0.361834im]
A = StabilityCircle(S11, S12, S21, S22, :source, 361; stable = false)