Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

add support for stem plots

Aperta
#4,800 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
5/5
Tempo stimato
Più di una settimana
Idoneità per principianti
30/100
Tipo di issue
Funzionalità
Chiarezza
Da chiarire
Stato di attività
Ferma
Stack tecnologico
python

Direzione di ricerca

Inizia esaminando l’entry point go.Scatter esistente e il modo in cui Plotly rappresenta lo stile dei marker e delle linee. L’issue non indica file del repository né test e lascia aperta la scelta dell’API; il lavoro sarebbe completato con un’interfaccia nativa di stem plot che disegni gli stems fino all’asse x, posizioni i marker e supporti la personalizzazione di marker e linee.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

feature P3
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 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:

import plotly.graph_objects as go

# Counter for creating unique legend groups if not passed
legendgroup_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 name
def stem_plot(x, y, fig=[], name='plot', color="blue", marker_symbol='circle-open', legendgroup=[]):
    global legendgroup_cnt

    # If fig is empty, create a new figure
    if fig == []:
        fig = go.Figure()

    # If legendgroup is not provided, create a new legendgroup for each curve
    if legendgroup == []:
        legendgroup = legendgroup_cnt
        legendgroup_cnt += 1

    # Create a scatter trace for markers
    scatter_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-axis
    for xi, yi in zip(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)

    return fig

# using the function
x = np.arange(0,10,1)
y = 2*x
fig = stem_plot(x, y, fig=[], name='mystem', color="blue", marker_symbol='circle-open', legendgroup=[])
fig.show()

plot-stem

Lingua principale
Python
Stelle
18.8k
Fork
2.8k
Merge medio
13h 41m
PR unite (30g)
21

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di plotly/plotly.py

Tutte le issue di plotly/plotly.py

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.