我有以下代码:
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()
这使得这个图表变成:
正如您所看到的,我把图例搞错了。该如何修正?
factorplot
,或者如果你真的想直接使用FacteGrid
,你必须在map
中传递hue
变量。 - mwaskomgrid.map(sns.barplot, "step", "position", hue="step", palette="Set3").add_legend();
- neversaintfactorplot
... - mwaskomgrid = sns.factorplot(x="step",y="position", col="walk", kind="bar", data=df, col_wrap=4, aspect=1, size=5, palette="Set3").add_legend()
,它可以运行但是图例没有出现。 - neversaint