Hacktoberfest 2026: as issues que os mantenedores marcaram para outubro, abertas e boas para iniciantes. Ver issues do Hacktoberfest

add support for stem plots

Aberta
#4,800 0 comentários 0 reações 0 responsáveis Ver no GitHub

Ninguém assumiu esta issue ainda.

Avaliação

Dificuldade
5/5
Tempo estimado
Mais de uma semana
Facilidade para iniciantes
30/100
Tipo de issue
Funcionalidade
Clareza
Precisa de esclarecimento
Status de atividade
Estagnada
Stack de tecnologia
python

Direção de pesquisa

Comece examinando o ponto de entrada go.Scatter existente e como o Plotly representa a estilização de marcadores e linhas. A issue não nomeia arquivos do repositório nem testes e deixa a escolha da API em aberto; o trabalho estaria concluído com uma interface nativa de stem plot que desenhe stems até o eixo x, posicione marcadores e ofereça suporte à personalização de marcadores e linhas.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

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

Linguagem predominante
Python
Estrelas
18.8k
Forks
2.8k
Merge médio
13h 28min
PRs com merge (30d)
20

Guia de contribuição

Abrir o guia de contribuição

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de plotly/plotly.py

Todas as issues de plotly/plotly.py

Issues semelhantes

Mais issues de Python

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.