@@ -5,11 +5,6 @@ Plot lines on the Smith Chart.
55
66## Valid Keywords:
77
8- - `color` sets the color of the marker. Read `? scatter`.
9- - `colormap = :viridis` sets the colormap that is sampled for numeric colors.
10- - `linestyle = :rect` sets the pattern of the line e.g. :solid, :dot, :dashdot.
11- - `line_width = 2.8` sets the width of the line in pixel units.
12- - `label = nothing`
138- `reflection = false`: Specifies whether it is a normalized impedance or a reflection coefficient.
149- `freq = Float64[]` Array of frequencies associated with each represented value. Mainly used by `DataInspector`.
1510
3025
3126"""
3227@recipe SmithPlot (z, ) begin
33- color= :teal
34- colormap= :viridis
35- linewidth= 2.8
36- linestyle= :solid
37- label= nothing
28+ " Specifies whether it is a normalized impedance or a reflection coefficient."
3829 reflection= false
30+ " Array of frequencies associated with each represented value. Mainly used by `DataInspector`"
3931 freq = Float64[]
40- cycle = [ :color ]
32+ Makie . documented_attributes (Makie . Lines) ...
4133end
4234
35+ argument_names (:: Type{<: SmithPlot} , N) = (:z , )
4336Makie. preferred_axis_type (plot:: SmithPlot ) = SmithAxis
4437
4538"""
@@ -49,11 +42,6 @@ Scatter points on the Smith Chart.
4942
5043## Valid Keywords:
5144
52- - `color` sets the color of the marker. Read `? scatter`.
53- - `colormap = :viridis` sets the colormap that is sampled for numeric colors.
54- - `marker = :rect` sets the scatter marker.
55- - `markersize = 9` sets the size of the marker.
56- - `label = nothing`
5745- `reflection = false`: Specifies whether it is a normalized impedance or a reflection coefficient.
5846- `freq = Float64[]` Array of frequencies associated with each represented value. Mainly used Mainly used by `DataInspector`.
5947
@@ -70,25 +58,20 @@ smithscatter!(sc, r; color = :dodgerblue, linewidth = 2)
7058fig
7159```
7260
73-
7461"""
7562@recipe SmithScatter (z, ) begin
76- color= :teal
77- colormap= :viridis
78- marker= :circle
79- markersize= 9
80- label= " "
81- reflection= false
82- freq = Float64[]
83- cycle= [:color ]
63+ " Specifies whether it is a normalized impedance or a reflection coefficient."
64+ reflection= false
65+ " Array of frequencies associated with each represented value. Mainly used by `DataInspector`"
66+ freq = Float64[]
67+ Makie. documented_attributes (Makie. Scatter)...
8468end
8569
70+ argument_names (:: Type{<: SmithScatter} , N) = (:z , )
8671Makie. preferred_axis_type (plot:: SmithScatter ) = SmithAxis
8772
8873
8974function Makie. show_data (inspector:: DataInspector , plot:: SmithPlot , idx, :: Lines )
90- # Get the tooltip plot
91- tt = inspector. plot
9275 a = plot. attributes
9376 zi = plot[1 ][][idx]
9477
@@ -97,18 +80,14 @@ function Makie.show_data(inspector::DataInspector, plot::SmithPlot, idx, ::Lines
9780 else
9881 pos = Point2f (real (zi), imag (zi))
9982 end
100- # Get the scene BarPlot lives in
101- scene = Makie. parent_scene (plot)
10283
103- # project to screen space and shift it to be correct on the root scene
84+ scene = Makie . parent_scene (plot)
10485 proj_pos = Makie. shift_project (scene, to_ndim (Point3f, pos, 0 ))
105- # anchor the tooltip at the projected position
106- Makie. update_tooltip_alignment! (inspector, proj_pos)
10786
10887 if imag (zi) < 0
109- txt = @sprintf (" z=%.3f-j%.3f" , real (zi), abs (imag (zi)))
88+ text = @sprintf (" z=%.3f-j%.3f" , real (zi), abs (imag (zi)))
11089 else
111- txt = @sprintf (" z=%.3f+j%.3f" , real (zi), abs (imag (zi)))
90+ text = @sprintf (" z=%.3f+j%.3f" , real (zi), abs (imag (zi)))
11291 end
11392
11493 if ! isempty (a. freq[])
@@ -118,39 +97,30 @@ function Makie.show_data(inspector::DataInspector, plot::SmithPlot, idx, ::Lines
11897 f < 1.0e9 ? @sprintf (" %.3f MHz" , f/ 1.0e6 ) :
11998 f < 1.0e12 ? @sprintf (" %.3f GHz" , f/ 1.0e9 ) :
12099 @sprintf (" %.3f THz" , f/ 1.0e12 )
121- txt *= " \n f = " * ftext
100+ text *= " \n f = " * ftext
122101 end
123-
124- tt. text[] = txt
125- # Show the tooltip
126- tt. visible[] = true
127- # return true to indicate that we have updated the tooltip
102+ Makie. update_tooltip_alignment! (inspector, proj_pos; text)
128103 return true
129104end
130105
131106
132107function Makie. show_data (inspector:: DataInspector , plot:: SmithScatter , idx, :: Scatter )
133- # Get the tooltip plot
134- tt = inspector. plot
135108 a = plot. attributes
136109 zi = plot[1 ][][idx]
137110 if a. reflection[] == false
138111 pos = smith_transform (zi)
139112 else
140113 pos = Point2f (real (zi), imag (zi))
141114 end
142- # Get the scene BarPlot lives in
143- scene = Makie. parent_scene (plot)
144115
145- # project to screen space and shift it to be correct on the root scene
116+ scene = Makie . parent_scene (plot)
146117 proj_pos = Makie. shift_project (scene, to_ndim (Point3f, pos, 0 ))
147- # anchor the tooltip at the projected position
148- Makie. update_tooltip_alignment! (inspector, proj_pos)
118+
149119
150120 if imag (zi) < 0
151- txt = @sprintf (" z=%.3f-j%.3f" , real (zi), abs (imag (zi)))
121+ text = @sprintf (" z=%.3f-j%.3f" , real (zi), abs (imag (zi)))
152122 else
153- txt = @sprintf (" z=%.3f+j%.3f" , real (zi), abs (imag (zi)))
123+ text = @sprintf (" z=%.3f+j%.3f" , real (zi), abs (imag (zi)))
154124 end
155125
156126 if ! isempty (a. freq[])
@@ -160,81 +130,53 @@ function Makie.show_data(inspector::DataInspector, plot::SmithScatter, idx, ::Sc
160130 f < 1.0e9 ? @sprintf (" %.3f MHz" , f/ 1.0e6 ) :
161131 f < 1.0e12 ? @sprintf (" %.3f GHz" , f/ 1.0e9 ) :
162132 @sprintf (" %.3f THz" , f/ 1.0e12 )
163- txt *= " \n f = " * ftext
133+ text *= " \n f = " * ftext
164134 end
165135
166- tt. text[] = txt
167- # Show the tooltip
168- tt. visible[] = true
169- # return true to indicate that we have updated the tooltip
136+ Makie. update_tooltip_alignment! (inspector, proj_pos; text)
137+
170138 return true
171139end
172140
173141function Makie. plot! (sp:: SmithPlot )
174- z = sp[1 ]
175- color = sp[:color ]
176- line_width = sp[:linewidth ]
177- linestyle = sp[:linestyle ]
178- label = sp[:label ]
179- reflection = sp[:reflection ]
180- colormap = sp[:colormap ]
181-
182- z_data = Observable (Point2f[])
183- function update_zdata (z)
184- empty! (z_data[])
142+ output_nodes = :lines
143+ map! (sp. attributes, [:z , :reflection ], output_nodes) do z, r
144+ lines = Point2f[]
185145 if ! isempty (z)
186146 for zi in z
187- if reflection[] == false
188- push! (z_data[] , smith_transform (zi))
147+ if r == false
148+ push! (lines , smith_transform (zi))
189149 else
190- push! (z_data[] , Point2f (real (zi), imag (zi)))
150+ push! (lines , Point2f (real (zi), imag (zi)))
191151 end
192152 end
193153 else
194- push! (z_data[], Point2f (NaN ))
195- push! (z_data[], Point2f (NaN ))
154+ append! (lines, [Point2f (NaN ), Point2f (NaN )])
196155 end
197- notify (z_data)
156+ return lines
198157 end
199- on (update_zdata, z)
200- update_zdata (z[])
201-
202- lines! (sp, z_data, color= color, colormap= colormap, linewidth= line_width, linestyle= linestyle, label= label)
158+ lines! (sp, Attributes (sp), sp. lines)
203159 return sp
204160end
205161
206162
207163function Makie. plot! (sc:: SmithScatter )
208- @show sc. attributes
209- z = sc[1 ]
210- color = sc[:color ]
211- markersize = sc[:markersize ]
212- marker = sc[:marker ]
213- label = sc[:label ]
214- reflection = sc[:reflection ]
215- colormap = sc[:colormap ]
216-
217- z_data = Observable (Point2f[])
218- function update_zdata (z)
219- empty! (z_data[])
164+ output_nodes = :scatter
165+ map! (sc. attributes, [:z , :reflection ], output_nodes) do z, r
166+ scatter = Point2f[]
220167 if ! isempty (z)
221168 for zi in z
222- if reflection[] == false
223- push! (z_data[] , smith_transform (zi))
169+ if r == false
170+ push! (scatter , smith_transform (zi))
224171 else
225- push! (z_data[] , Point2f (real (zi), imag (zi)))
172+ push! (scatter , Point2f (real (zi), imag (zi)))
226173 end
227174 end
228175 else
229- push! (z_data[], Point2f (NaN ))
230- push! (z_data[], Point2f (NaN ))
176+ append! (scatter, [Point2f (NaN ), Point2f (NaN )])
231177 end
232- notify (z_data)
178+ return scatter
233179 end
234- on (update_zdata, z)
235- update_zdata (z[])
236-
237- scatter! (sc, z_data, color= color, colormap= colormap, markersize= markersize, marker= marker, label= label)
238-
180+ scatter! (sc, Attributes (sc), sc. scatter)
239181 return sc
240182end
0 commit comments