Încerc să deseneze o față-verso grafic similar cu piramida explicat aici și aici. Problema este că trebuie variabile categoriale (masculin/feminin) pe care vreau să le grupați:
import pandas as pd
import seaborn as sns
# data
data = {'species': ['X', 'X', 'Y', 'Y', 'Z', 'Z', 'X', 'X', 'Y', 'Y', 'Z', 'Z'],
'sex': ['male', 'female', 'male', 'female', 'male', 'female', 'male', 'female', 'male', 'female', 'male', 'female'],
'mass (g)': [4000, 3500, 3800, 3200, 5500, 4900, 2500, 2100, 2400, 2000, 4200, 3800],
'age': ['adult', 'adult', 'adult', 'adult', 'adult', 'adult', 'juvenile', 'juvenile', 'juvenile', 'juvenile', 'juvenile', 'juvenile']}
df = pd.DataFrame(data)
# convert juvenile mass to negative
df.loc[df.age.eq('juvenile'), 'mass (g)'] = df['mass (g)'].mul(-1)
# plot
sns.set_theme(style="whitegrid")
fig, ax = plt.subplots(figsize=(10,5))
sns.barplot(data=df, x='mass (g)', y='species', hue='sex', ci=False, orient='horizontal', dodge=True)
ax.yaxis.tick_right()
ax.yaxis.set_label_position("right")
plt.show()
Figura de mai jos este ceea ce încerc să fac. Diferite bare de culoare sunt de sex masculin/de sex feminin. Specii diferite X, Y, Z sunt separate categoric grupuri. Barele de pe partea dreapta a figurii arată în masă a adulților pentru fiecare specie.
Am schițat în roșu barele de pe partea stângă pentru a arăta masa de puiet pentru fiecare specie. Cum fac acest complot? Eu nu pot găsi ceva util în seaborn docs sau pe ATÂT.