stem
En matplotlib, la función stem permite crear lo que se conoce como gráficos stem, gráficos de piruleta o lollipop charts en Python. Tendrás que pasar tus datos de entrada a la función con la posición y los valores asociados a cada una.
import matplotlib.pyplot as plt
import numpy as np
# Datos
x = np.arange(2, 12, 1)
y = x ** 2
# Stem plot
fig, ax = plt.subplots()
ax.stem(x, y)
# plt.show()

Gráfico de piruleta horizontal
Por defecto, los gráficos stem son verticales pero puedes crear gráficos horizontales estableciendo el argumento orientation como "horizontal", tal y como se muestra en el ejemplo siguiente.
import matplotlib.pyplot as plt
import numpy as np
# Datos
x = np.arange(2, 12, 1)
y = x ** 2
# Stem plot
fig, ax = plt.subplots()
ax.stem(x, y, orientation = "horizontal")
# plt.show()

El argumento bottom
Ten en cuenta que la línea base roja se sitúa por defecto en el cero, pero puedes sobrescribir su posición con el argumento bottom.
import matplotlib.pyplot as plt
import numpy as np
# Datos
x = np.arange(2, 12, 1)
y = x ** 2
# Stem plot
fig, ax = plt.subplots()
ax.stem(x, y, bottom = 60)
# plt.show()

La función stem proporciona tres argumentos para personalizar el gráfico: linefmt para las líneas, markerfmt para los símbolos y basefmt para la línea base.
Color de las líneas
Para cambiar el color de las líneas puedes pasar un nuevo color al argumento linefmt, como se muestra a continuación.

import matplotlib.pyplot as plt
import numpy as np
# Datos
x = np.arange(2, 12, 1)
y = x ** 2
# Stem plot
fig, ax = plt.subplots()
ax.stem(x, y, linefmt = 'black')
# plt.show()
Estilo de las líneas
Ten en cuenta que el mismo argumento usado para cambiar el color de las líneas también se puede utilizar para personalizar el estilo o tipo de línea.

import matplotlib.pyplot as plt
import numpy as np
# Datos
x = np.arange(2, 12, 1)
y = x ** 2
# Stem plot
fig, ax = plt.subplots()
ax.stem(x, y, linefmt = '--')
# plt.show()
Color y tipo de líneas a la vez
Además, el argumento linefmt también permite establecer el color y el tipo de línea a la vez, indicando el color (e.g. k para negro) y el estilo de línea (-- para una línea discontinua).

import matplotlib.pyplot as plt
import numpy as np
# Datos
x = np.arange(2, 12, 1)
y = x ** 2
# Stem plot
fig, ax = plt.subplots()
ax.stem(x, y, linefmt = 'k--')
# plt.show()
Forma y color de los marcadores
El argumento markerfmt permite personalizar el color y la forma de los marcadores del gráfico. En el ejemplo siguiente establecemos diamantes (D) rojos (r) como símbolo.

import matplotlib.pyplot as plt
import numpy as np
# Datos
x = np.arange(2, 12, 1)
y = x ** 2
# Stem plot
fig, ax = plt.subplots()
ax.stem(x, y, markerfmt = 'Dr')
# plt.show()
Personalización de la línea base
El color y estilo de la línea base se puede personalizar de la misma manera que las otras líneas pero utilizando el argumento basefmt. En el siguiente ejemplo establecemos una línea negra punteada.

import matplotlib.pyplot as plt
import numpy as np
# Datos
x = np.arange(2, 12, 1)
y = x ** 2
# Stem plot
fig, ax = plt.subplots()
ax.stem(x, y, basefmt = 'k:')
# plt.show()
Por último, vale la pena mencionar que puedes crear gráficos lollipop en Python con varios grupos escribiendo nuevas líneas. Para agregar una leyenda establece la etiqueta con el argumento label y después utiliza la función legend.
import matplotlib.pyplot as plt
import numpy as np
# Datos
x = np.arange(2, 12, 1)
y = x ** 2
x2 = np.arange(2, 12, 1)
y2 = -y
# Stem plot
fig, ax = plt.subplots()
ax.stem(x, y, 'b', markerfmt = 'bo', label = "Grupo 1")
ax.stem(x2, y2, 'g', markerfmt = 'go', label = "Grupo 2")
ax.legend()
# plt.show()

También te puede interesar