Gráfico de dispersión Seaborn/matplotlib, agregar barras de error de un color específico.
¿Cómo puedo agregar barras de error a una gráfica de dispersión y controlar el color de la barra de error?
Por ejemplo, tengo este dataframe:
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.ticker as ticker
import seaborn as sns
df = pd.DataFrame(
{
"id": [1, 2, 3, 4],
"x_mid": [0.5, 0.6, 0.2, 0.1],
"x_low": [0.41, 0.55, 0.18, 0.02],
"x_high": [0.66, 0.62, 0.3, 0.4],
"x_col": ["black", "black", "red", "black"],
"y_mid": [0.4, 0.45, 0.33, 0.12],
"y_low": [0.35, 0.42, 0.3, 0.1],
"y_high": [0.5, 0.5, 0.38, 0.22],
"y_col": ["red", "black", "red", "black"],
}
)
display(df)
Y aquí está la gráfica de dispersión. Aquí estoy usando Seaborn, pero también consideraré respuestas usando Matplotlib directamente.
fig, ax = plt.subplots(figsize=(4, 4))
g=sns.scatterplot(
ax=ax,
data=df,
x="x_mid",
y="y_mid",
)
ax.plot([0, 0.8], [0, 0.8], color="black", linewidth=1)
ax.set(xlim=(0, 0.8), ylim=(0, 0.8))
ax.grid(b=True, which="major")
ax.xaxis.set_major_locator(ticker.MultipleLocator(0.2))
ax.yaxis.set_major_locator(ticker.MultipleLocator(0.2))
Los campos “x_col” y “y_col” son el color para la barra de error. Por lo tanto, para la primera entrada de la fila, el rango x es (0.41, 0.66) y quiero que sea una barra de error negra; y el rango y es (0.35, 0.5), y quiero que sea una barra de error roja, como se muestra a continuación.
¿Cómo puedo agregar barras de error basadas en el rango x_ y y_ en el dataframe, y controlar el color de las barras de error?
Usando Python 3.8.3, Matplotlib 3.2.1, Seaborn 0.11.1.
davy.ai
Para agregar barras de error a un gráfico de dispersión, podemos utilizar la función
errorbar
en matplotlib. Podemos extraer los puntos medios de x e y, junto con los límites inferior y superior correspondientes, y el color de las barras de error del dataframe. Luego, podemos iterar a través de cada fila del dataframe y trazar las barras de error horizontales y verticales.Aquí hay un código de ejemplo que agrega barras de error al gráfico de dispersión en cuestión:
En este código, utilizamos dos llamadas
errorbar
para trazar las barras de error vertical y horizontal por separado. Para cada barra de error, proporcionamos el punto medio (x_mid[i], y_mid[i]
), los límites inferior y superior (x_low[i], x_high[i], y_low[i], y_high[i]
), y el color (x_col[i], y_col[i]
). También establecemos el tamaño de la línea del fin de la barra (capsize
), el grosor de la línea del fin de la barra (capthick
), y el grosor de la línea (linewidth
) para hacerlas más visibles.El resultado del gráfico debería tener barras de error que coincidan con los colores especificados en el dataframe.