You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Description:
The stem plot is widely used in MATLAB/Octave/Python(matplotlib.pyplot.stem) to represent discrete data with markers and stems (vertical lines) connecting the data points to the x-axis. It is particularly useful for plotting sampled signals or data that has clear separation along the x-axis.
Currently, Plotly doesn't have a built-in function to replicate the stem plot, but users can manually create similar plots using go.Scatter and adding both lines and markers.
Proposal:
Introduce a native stem plot type that:
Draws vertical lines from the x-axis to each data point.
Places a marker on each data point.
Allows customization of marker and line styles (similar to MATLAB).
Why it’s useful:
It simplifies the creation of a common plot type in scientific and engineering fields.
It would improve ease of use for users transitioning from MATLAB/Octave.
Examples:
Below is an example of how users can manually create a stem plot using Plotly’s go.Scatter, but it would be nice if this kind of function could be called as go.Scatter, by passing some parameter to transform in stem plot, or if we could call a function from plotly:
importplotly.graph_objectsasgo# Counter for creating unique legend groups if not passedlegendgroup_cnt=0# Function to create a stem plot in Plotly# x: data for the x-axis# y: data for the y-axis (x and y must have the same number of elements)# fig: if passed, plots on the given figure, otherwise creates a new one# marker_symbol: allows changing the marker style (see options at https://plotly.com/python/marker-style/)# color: the color of the marker and lines# legendgroup: allows creating a group of legends with the same namedefstem_plot(x, y, fig=[], name='plot', color="blue", marker_symbol='circle-open', legendgroup=[]):
globallegendgroup_cnt# If fig is empty, create a new figureiffig== []:
fig=go.Figure()
# If legendgroup is not provided, create a new legendgroup for each curveiflegendgroup== []:
legendgroup=legendgroup_cntlegendgroup_cnt+=1# Create a scatter trace for markersscatter_trace=go.Scatter(
x=x, y=y, mode='markers',
marker_symbol=marker_symbol,
marker=dict(size=14, color=color),
name=name, legendgroup=legendgroup
)
fig.add_trace(scatter_trace)
# Create a line connecting markers to the x-axisforxi, yiinzip(x, y):
line_trace=go.Scatter(
x=[xi, xi], y=[0, yi], mode='lines',
line=dict(color=scatter_trace.marker.color),
name=name, showlegend=False, legendgroup=legendgroup
)
fig.add_trace(line_trace)
returnfig# using the functionx=np.arange(0,10,1)
y=2*xfig=stem_plot(x, y, fig=[], name='mystem', color="blue", marker_symbol='circle-open', legendgroup=[])
fig.show()
The text was updated successfully, but these errors were encountered:
gvwilson
changed the title
Feature Request: Add support for stem plots
add support for stem plots
Oct 15, 2024
Feature Request: Add support for stem plots
Description:
The
stem
plot is widely used in MATLAB/Octave/Python(matplotlib.pyplot.stem) to represent discrete data with markers and stems (vertical lines) connecting the data points to the x-axis. It is particularly useful for plotting sampled signals or data that has clear separation along the x-axis.Currently, Plotly doesn't have a built-in function to replicate the
stem
plot, but users can manually create similar plots usinggo.Scatter
and adding both lines and markers.Proposal:
Introduce a native
stem
plot type that:Why it’s useful:
Examples:
Below is an example of how users can manually create a stem plot using Plotly’s
go.Scatter
, but it would be nice if this kind of function could be called asgo.Scatter
, by passing some parameter to transform in stem plot, or if we could call a function from plotly:The text was updated successfully, but these errors were encountered: