使用 Seaborn 在分散上绘制线条

Ale*_*tin 5 draw seaborn

sns.lmplot我的目标是在使用 seaborn: splitted by col=or绘制的图上的 y = 0 上画一条水平红线row=。

import numpy as np, seaborn as sns, pandas as pd
np.random.seed(5)

myData = pd.DataFrame({'x' :  np.arange(1, 101), 'y': np.random.normal(0, 4, 100),\
'z' : ['a','b']*50, 'w':np.random.poisson(0.15,100)})


sns.lmplot("x", "y", col="z", row="w", data=myData, fit_reg=False)
plt.plot(np.linspace(-20,120,1000), [0]*1000, 'r-')
Run Code Online (Sandbox Code Playgroud)

我们可以看到,只有图数组中的最后一个图被红线标记:

在此输入图像描述

感谢您的帮助,

编辑:col=重新措辞问题以解释我们使用和/或生成绘图数组的情况,row=并且我们希望在每个绘图上跟踪线条。

Ale*_*tin 4

col=所以这段代码适用于我们使用、row=和的一般情况hue=。

import numpy as np, seaborn as sns, pandas as pd
np.random.seed(5)

myData = pd.DataFrame({'x' :  np.arange(1, 101), 'y': np.random.normal(0, 4, 100),\
'z' : ['a','b']*50, 'w':np.random.poisson(0.15,100), 'hueMe':['q','w','e','r','t']*20})

myPlot = sns.FacetGrid(col="z", row='w', hue='hueMe', data=myData, size=5)
myPlot = myPlot.map(plt.scatter, "x", "y").set(xlim=(-20,120) , ylim=(-15,15))
myPlot = myPlot.map_dataframe(plt.plot, [-20,120], [0,0], 'r-').add_legend().set_axis_labels("x", "y")
plt.show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

不知道为什么水平线的颜色作为每个单独绘图上使用的最后一种颜色出现,但我现在放弃了:)