0

您好,我对使用 python 非常陌生,我开始使用它来创建工作中的图表(用于论文和报告等)。我只是想知道是否有人可以帮助解决我在下面详述的问题?我猜有一个非常简单的解决方案,但我无法弄清楚,这让我发疯了!

基本上,我正在绘制一个实验的结果,其中在 Y 轴上我有结果,在这种情况下是一个数字(结果),而 x 轴是分类的并标记为位置。然后根据在哪台机器上进行实验(机器)(也是分类的),将数据分成四个图表。

第一部分很简单,使用的代码是这样的:

'sns.catplot(x='Location', y='Result', data=df3, hue='Machine', col='Machine', col_wrap = 2, linewidth=2, kind='swarm')'

这为我提供了以下图表: 无线猫图

我现在想在图中添加另一层,其中一条红线代表数据的规格上限。

所以我在上面添加了以下代码:

'sns.lineplot(x='Location',y=1.8, data=df3, linestyle='--', color='r',linewidth=2)'

然后给出以下图表:

带线的猫图

如您所见,我想要的红线仅在其中一个图表上,我要做的就是在完全相同的位置等的所有四个图表上添加相同的红线。

谁能帮我???

4

1 回答 1

1

您可以使用.map在每个子图上绘制水平线。您需要将生成的FacetGrid对象捕获到变量中。

这是一个例子:

import matplotlib.pyplot as plt
import seaborn as sns

titanic = sns.load_dataset('titanic').dropna()

g = sns.catplot(x='class', y='age', data=titanic,
                hue='embark_town', col='embark_town', col_wrap=2, linewidth=2, kind='swarm')
g.map(plt.axhline, y=50, ls='--', color='r', linewidth=2)
plt.tight_layout()
plt.show()

带有水平线的猫图

于 2021-03-25T15:27:45.310 回答