Public Documentation

Documentation for SmithChart.jl public interface.

Contents

Index

Public Interface

SmithChart.smithplotFunction
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 by DataInspector.

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 child space is 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.

source
SmithChart.smithscatterFunction
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 by DataInspector.

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)
fig

Plot 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 child space is 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.

source
SmithChart.vswrFunction
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 value
  • args...: Additional keyword arguments forwarded to smithplot, 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

source
SmithChart.datamarkersFunction
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])
fig
source
SmithChart.NFCircleFunction
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)
source
SmithChart.CGCircleFunction
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)
source
SmithChart.StabilityCircleFunction
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)
source