CARVIEW |
Smith Charts in Python
How to make Smith Charts with plotly.
Plotly Studio: Transform any dataset into an interactive data application in minutes with AI. Sign up for early access now.
New in v5.4
A Smith Chart is a specialized chart for visualizing complex numbers: numbers with both a real and imaginary part.
Smith Charts with Plotly Graph Objects¶
import plotly.graph_objects as go
fig = go.Figure(go.Scattersmith(imag=[0.5, 1, 2, 3], real=[0.5, 1, 2, 3]))
fig.show()
Smith Chart Subplots and Styling¶
import plotly.graph_objects as go
fig = go.Figure()
fig.add_trace(go.Scattersmith(
imag=[1],
real=[1],
marker_symbol='x',
marker_size=30,
marker_color="green",
subplot="smith1"
))
fig.add_trace(go.Scattersmith(
imag=[1],
real=[1],
marker_symbol='x',
marker_size=30,
marker_color="pink",
subplot="smith2"
))
fig.update_layout(
smith=dict(
realaxis_gridcolor='red',
imaginaryaxis_gridcolor='blue',
domain=dict(x=[0,0.45])
),
smith2=dict(
realaxis_gridcolor='blue',
imaginaryaxis_gridcolor='red',
domain=dict(x=[0.55,1])
)
)
fig.update_smiths(bgcolor="lightgrey")
fig.show()
Reference¶
See https://plotly.com/python/reference/scattersmith/ and https://plotly.com/python/reference/layout/smith/ for more information and chart attribute options!
What About Dash?¶
Dash is an open-source framework for building analytical applications, with no Javascript required, and it is tightly integrated with the Plotly graphing library.
Learn about how to install Dash at https://dash.plot.ly/installation.
Everywhere in this page that you see fig.show()
, you can display the same figure in a Dash application by passing it to the figure
argument of the Graph
component from the built-in dash_core_components
package like this:
import plotly.graph_objects as go # or plotly.express as px
fig = go.Figure() # or any Plotly Express function e.g. px.bar(...)
# fig.add_trace( ... )
# fig.update_layout( ... )
from dash import Dash, dcc, html
app = Dash()
app.layout = html.Div([
dcc.Graph(figure=fig)
])
app.run(debug=True, use_reloader=False) # Turn off reloader if inside Jupyter
