Solución:
De hecho, puedes hacerlo usando directamente los atributos de los parches con la función set_width
. Sin embargo, si solo hace eso, solo modificará el ancho de los parches pero no la posición en el eje, por lo que también debe cambiar las coordenadas x.
import pylab as plt
import seaborn as sns
tips = sns.load_dataset("tips")
fig, ax = plt.subplots()
sns.barplot(data=tips, ax=ax, x="time", y="tip", hue="sex")
def change_width(ax, new_value) :
for patch in ax.patches :
current_width = patch.get_width()
diff = current_width - new_value
# we change the bar width
patch.set_width(new_value)
# we recenter the bar
patch.set_x(patch.get_x() + diff * .5)
change_width(ax, .35)
plt.show()
Y aqui esta el resultado :
En mi caso, no tuve que definir una función personalizada para cambiar el ancho como se sugirió anteriormente (que por cierto no funcionó para mí ya que todas las barras estaban desalineadas). Simplemente agregué el atributo dodge=False
al argumento de la función de trazado nacida en el mar y esto hizo el truco! p.ej
sns.countplot(x='x', hue="y", data=data, dodge=False);
Consulte la referencia adicional aquí: https://github.com/mwaskom/seaborn/issues/871
Mi gráfico de barras se ve ahora así:
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)