Tutorial básico de pyplot — 17:33 min

  • 17:33 min | Última modificación: Octubre 6, 2021 | YouTube

https://matplotlib.org/stable/tutorials/introductory/pyplot.html#sphx-glr-tutorials-introductory-pyplot-py

[1]:
import matplotlib.pyplot as plt
[2]:
#
# Especificación únicamente de `y`
#
plt.plot([1, 2, 3, 4])
plt.ylabel("some numbers")
plt.show()
../../../_images/ciencia_datos_matplotlib_notebooks_1-02_tutorial_basico_de_pyplot_3_0.png
[3]:
#
# Especificación de `x` y `y`
#
plt.plot(
    [1, 2, 3, 4],
    [1, 4, 9, 16],
)
plt.show()
../../../_images/ciencia_datos_matplotlib_notebooks_1-02_tutorial_basico_de_pyplot_4_0.png
[4]:
#
# Especificación del estilo
#
plt.plot(
    [1, 2, 3, 4],
    [1, 4, 9, 16],
    "ro",
)
plt.axis([0, 6, 0, 20])
plt.show()
../../../_images/ciencia_datos_matplotlib_notebooks_1-02_tutorial_basico_de_pyplot_5_0.png
[5]:
#
# Especificación del estilo
#
import numpy as np

t = np.arange(0.0, 5.0, 0.2)

plt.plot(
    # --------- Primera línea ---------
    t,
    t,
    "r--",
    # --------- Segunda línea ---------
    t,
    t ** 2,
    "bs",
    # --------- Tercera línea ---------
    t,
    t ** 3,
    "g^",
)
plt.show()
../../../_images/ciencia_datos_matplotlib_notebooks_1-02_tutorial_basico_de_pyplot_6_0.png
[6]:
#
# Estilos de línea
#
x = np.linspace(0, 10, 10)

linestyles = ["solid", "dashed", "dashdot", "dotted"]

for i_style, style in enumerate(linestyles):
    plt.plot(x, x + i_style, linestyle=style, label=style)

plt.legend()
plt.show()
../../../_images/ciencia_datos_matplotlib_notebooks_1-02_tutorial_basico_de_pyplot_7_0.png
[7]:
#
# Estilos de marcador
#
from matplotlib.lines import Line2D

plt.figure(figsize=(4, 14))

markers = [m for m, func in Line2D.markers.items()]

text_style = dict(
    horizontalalignment="right",
    verticalalignment="center",
    fontsize=14,
    fontfamily="monospace",
)

marker_style = dict(
    linestyle=":",
    color="0.8",
    markersize=12,
    markerfacecolor="tab:blue",
    markeredgecolor="tab:blue",
)

for y, marker in enumerate(markers):

    plt.text(-0.5, y, repr(marker), **text_style)
    plt.plot([y] * 3, marker=marker, **marker_style)
    # plt.gca().margins(0.2)
    plt.gca().set_axis_off()
    plt.gca().invert_yaxis()

plt.show()
../../../_images/ciencia_datos_matplotlib_notebooks_1-02_tutorial_basico_de_pyplot_8_0.png
[8]:
#
# Uso de palabras reservadas
#
data = {
    "a": np.arange(50),
    "c": np.random.randint(0, 50, 50),
    "d": np.random.randn(50),
}

data["b"] = data["a"] + 10 * np.random.randn(50)

data["d"] = np.abs(data["d"]) * 100

plt.scatter(
    "a",
    "b",
    c="c",
    s="d",
    data=data,
)

plt.xlabel("entry a")
plt.ylabel("entry b")

plt.show()
../../../_images/ciencia_datos_matplotlib_notebooks_1-02_tutorial_basico_de_pyplot_9_0.png
[9]:
#
# Gráficos con variables categóricas
#
names = ["group_a", "group_b", "group_c"]
values = [1, 10, 100]

plt.figure(figsize=(9, 3))

plt.subplot(131)
plt.bar(names, values)

plt.subplot(132)
plt.scatter(names, values)

plt.subplot(133)
plt.plot(names, values)

plt.suptitle("Categorical Plotting")

plt.show()
../../../_images/ciencia_datos_matplotlib_notebooks_1-02_tutorial_basico_de_pyplot_10_0.png
[10]:
#
# Control de las propiedades de las líneas usando argumentos
# de la función
#
x = [1, 2, 3, 4]
y = [1, 4, 9, 16]
plt.plot(x, y, linewidth=4.0)
plt.show()
../../../_images/ciencia_datos_matplotlib_notebooks_1-02_tutorial_basico_de_pyplot_11_0.png
[11]:
#
# Control de las propiedades de las líneas usando
# setter methods
#
x = [1, 2, 3, 4]
y = [1, 4, 9, 16]
(line,) = plt.plot(x, y, "-")
line.set_antialiased(False)
plt.show()
../../../_images/ciencia_datos_matplotlib_notebooks_1-02_tutorial_basico_de_pyplot_12_0.png
[12]:
#
# Control de las propiedades de las líneas usando
# setp con keyword args
#
x = [1, 2, 3, 4]
y = [1, 4, 9, 16]
lines = plt.plot(x, y)
plt.setp(lines, color="r", linewidth=2.0)
plt.show()
../../../_images/ciencia_datos_matplotlib_notebooks_1-02_tutorial_basico_de_pyplot_13_0.png
[13]:
#
# Control de las propiedades de las líneas usando
# setp con parejas string value (Matlab style)
#
x = [1, 2, 3, 4]
y = [1, 4, 9, 16]
lines = plt.plot(x, y)
plt.setp(lines, "color", "r", "linewidth", 2.0)
plt.show()
../../../_images/ciencia_datos_matplotlib_notebooks_1-02_tutorial_basico_de_pyplot_14_0.png
Propiedad                 Tipo de valor
--------------------------------------------------------------------
alpha                     float
color / c                 any matplotlib color
linestyle / ls            [ '-' | '--' | '-.' | ':' | 'steps' | ...]
linewidth / lw            float
marker                    ['+' | ',' | '.' | '1' | '2' | '3' | '4' ]
markeredgecolor or mec    any matplotlib color
markerfacecolor or mfc    any matplotlib color
markersize or ms          float
zorder                    any number
[14]:
x = [1, 2, 3, 4]
y = [1, 4, 9, 16]
plt.plot(
    x,
    y,
    linestyle="--",
    lw=3,
    marker="o",
    markeredgecolor="k",
    ms=20,
)
plt.show()
../../../_images/ciencia_datos_matplotlib_notebooks_1-02_tutorial_basico_de_pyplot_16_0.png
[15]:
#
# Varias figuras y ejes
#


def f(t):
    return np.exp(-t) * np.cos(2 * np.pi * t)


t1 = np.arange(0.0, 5.0, 0.1)
t2 = np.arange(0.0, 5.0, 0.02)

plt.figure()

plt.subplot(211)
plt.plot(t1, f(t1), "bo", t2, f(t2), "k")

plt.subplot(212)
plt.plot(t2, np.cos(2 * np.pi * t2), "r--")

plt.show()
../../../_images/ciencia_datos_matplotlib_notebooks_1-02_tutorial_basico_de_pyplot_17_0.png
[16]:
#
# Texto
#
mu, sigma = 100, 15
x = mu + sigma * np.random.randn(10000)

n, bins, patches = plt.hist(x, 50, density=1, facecolor="tab:blue", alpha=0.75)

plt.xlabel("Smarts")
plt.ylabel("Probability")

plt.title("Histogram of IQ")

plt.text(60, 0.025, r"$\mu=100,\ \sigma=15$")

plt.axis([40, 160, 0, 0.03])

plt.grid(True)

plt.show()
../../../_images/ciencia_datos_matplotlib_notebooks_1-02_tutorial_basico_de_pyplot_18_0.png
[17]:
#
# Anotaciones
#
ax = plt.subplot()

t = np.arange(0.0, 5.0, 0.01)
s = np.cos(2 * np.pi * t)

plt.plot(t, s, lw=2)
plt.annotate(
    "local max",
    xy=(2, 1),
    xytext=(3, 1.5),
    arrowprops=dict(facecolor="black", shrink=0.05),
)

plt.ylim(-2, 2)
plt.show()
../../../_images/ciencia_datos_matplotlib_notebooks_1-02_tutorial_basico_de_pyplot_19_0.png
[18]:
import warnings

warnings.filterwarnings("ignore")
#
# Tipos de ejes
#
np.random.seed(19680801)


y = np.random.normal(loc=0.5, scale=0.4, size=1000)
y = y[(y > 0) & (y < 1)]
y.sort()
x = np.arange(len(y))


plt.figure()

#
# linear
#
plt.subplot(221)
plt.plot(x, y)
plt.yscale("linear")
plt.title("linear")
plt.grid(True)

#
# log
#
plt.subplot(222)
plt.plot(x, y)
plt.yscale("log")
plt.title("log")
plt.grid(True)

#
# symmetric log
#
plt.subplot(223)
plt.plot(x, y - y.mean())
plt.yscale("symlog", linthresh=0.01)
plt.title("symlog")
plt.grid(True)

#
# logit
#
plt.subplot(224)
plt.plot(x, y)
plt.yscale("logit")
plt.title("logit")
plt.grid(True)


plt.subplots_adjust(
    top=0.92, bottom=0.08, left=0.10, right=0.95, hspace=0.25, wspace=0.35
)

plt.show()
../../../_images/ciencia_datos_matplotlib_notebooks_1-02_tutorial_basico_de_pyplot_20_0.png