Mam następujący kod:Jak dodać legendę na Seaborn facetgrid bar działki
import numpy as np
import pandas as pd
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
matplotlib.style.use('ggplot')
import seaborn as sns
sns.set(style="white")
# Create a dataset with many short random walks
rs = np.random.RandomState(4)
pos = rs.randint(-1, 2, (10, 5)).cumsum(axis=1)
pos -= pos[:, 0, np.newaxis]
step = np.tile(range(5), 10)
walk = np.repeat(range(10), 5)
df = pd.DataFrame(np.c_[pos.flat, step, walk],
columns=["position", "step", "walk"])
# Initialize a grid of plots with an Axes for each walk
grid = sns.FacetGrid(df, col="walk", hue="walk", col_wrap=5, size=5,
aspect=1)
# Draw a bar plot to show the trajectory of each random walk
grid.map(sns.barplot, "step", "position", palette="Set3").add_legend();
grid.savefig("/Users/mymacmini/Desktop/test_fig.png")
#sns.plt.show()
co czyni tę działki:
Jak widać mam legenda źle. Jak mogę to naprawić?
Należy użyć 'factorplot', lub jeśli naprawdę chcesz używać' FacteGrid' bezpośrednio, trzeba przekazać zmienną hue' 'w' map'. – mwaskom
@mwaskom Dziękuję bardzo. czy możesz podać przykład? Próbowałem tego, ale też się nie udało 'grid.map (sns.barplot," step "," position ", hue =" step ", palette =" Set3 "). Add_legend();' – neversaint
To jest trzeci argument pozycyjny. Ale powinieneś naprawdę użyć 'factorplot' ... – mwaskom