有没有办法在 Seaborn/Python 中的 Catplot 网格内的所有图的顶部添加一个线图?
Is there a way to add a line plot on top of all plots within a Catplot grid in Seaborn/Python?
您好,我刚开始使用 python,我开始使用它在工作中创建图表(用于论文和报告等)。我只是想知道是否有人可以帮助解决我在下面详述的问题?我猜有一个非常简单的解决方案,但我想不出来,这让我发疯!
基本上,我正在绘制一个实验的结果,其中 Y-axis 我得到的结果在这种情况下是一个数字(结果),而 x-axis 是绝对的并标有位置。然后根据在(机器)(也是分类的)上进行实验的机器,将数据分成四个图表。
第一部分很简单,使用的代码是这样的:
'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)'
然后给出下图:
如您所见,我想要的红线只出现在其中一张图上,我想做的就是在所有四个图中的完全相同的位置等处添加相同的红线。
谁能帮帮我???
您可以使用 .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()
您好,我刚开始使用 python,我开始使用它在工作中创建图表(用于论文和报告等)。我只是想知道是否有人可以帮助解决我在下面详述的问题?我猜有一个非常简单的解决方案,但我想不出来,这让我发疯!
基本上,我正在绘制一个实验的结果,其中 Y-axis 我得到的结果在这种情况下是一个数字(结果),而 x-axis 是绝对的并标有位置。然后根据在(机器)(也是分类的)上进行实验的机器,将数据分成四个图表。
第一部分很简单,使用的代码是这样的:
'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)'
然后给出下图:
如您所见,我想要的红线只出现在其中一张图上,我想做的就是在所有四个图中的完全相同的位置等处添加相同的红线。
谁能帮帮我???
您可以使用 .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()