A通过以下方式在Seaborn中制作了Facetgrid的箱线图
# Import the dataset
tips = sns.load_dataset("tips")
# Plot using Facegrid, separated by smoke
plt.style.use('ggplot')
g = sns.FacetGrid(tips, col="smoker", size=5, aspect=1.5)
g.map(sns.boxplot, "sex", "total_bill", palette='viridis', order=['Male', 'Female'])
plt.show()
Run Code Online (Sandbox Code Playgroud)
我现在想在每个图中绘制不同的水平线。例如,一条水平线(坐标为(0,10))仅在左侧图中,而另一条水平线(坐标为(0,30))仅在右侧图中。
我该怎么做呢?
有没有办法创建一个 Seaborn 线图,所有线均为灰色,平均值为红线?我正在尝试执行此操作,relplot但我不知道如何将平均值与数据分开(并且似乎未绘制平均值?)。
制作可重复的数据框
np.random.seed(1)
n1 = 100
n2 = 10
idx = np.arange(0,n1*2)
x, y, cat, id2 = [], [], [], []
x1 = list(np.random.uniform(-10,10,n2))
for i in idx:
x.extend(x1)
y.extend(list(np.random.normal(loc=0, scale=0.5, size=n2)))
cat.extend(['A', 'B'][i > n1])
id2.append(idx[i])
id2 = id2 * n2
id2.sort()
df1 = pd.DataFrame(list(zip(id2, x, y, cat)),
columns =['id2', 'x', 'y', 'cat']
)
Run Code Online (Sandbox Code Playgroud)
绘图尝试
g = sns.relplot(
data=df1, x='x', y='y', hue='id2',
col='cat', kind='line',
palette='Greys',
facet_kws=dict(sharey=False,
sharex=False
),
legend=False
)
Run Code Online (Sandbox Code Playgroud)