I have the following code:
import seaborn as sns
import pandas as pd
import numpy as np
Data = pd.DataFrame(columns=['x1','x2','x3','label'])
for i in range(100):
Data.loc[len(Data.index)] = [np.random.rand(),np.random.rand(),np.random.rand(),'1']
Data.loc[len(Data.index)] = [np.random.rand(),np.random.rand(),np.random.rand(),'2']
Data.loc[len(Data.index)] = [np.random.rand(),np.random.rand(),np.random.rand(),'3']
Data.loc[len(Data.index)] = [np.random.rand(),np.random.rand(),np.random.rand(),'4']
Data.loc[len(Data.index)] = [np.random.rand(),np.random.rand(),np.random.rand(),'5']
sns.pairplot(Data,vars=['x1','x2','x3'],hue='label',markers=['o','s','s','s','s'],corner=True)
Which gives the following output:

I want to put black borders only around the square markers to make them more visible but I don't know how to do that.
I tried to add:
grid_kws={fillstyles:['none','full','full','full','full']}
as an argument to sns.pairplot, but I just got the following error:
Traceback (most recent call last):
File ~/anaconda3/lib/python3.10/site-packages/spyder_kernels/py3compat.py:356 in compat_exec
exec(code, globals, locals)
File ~/Dokument/Python/MasterProjectCoCalc/SNmasterproject/untitled0.py:21
sns.pairplot(Data,vars=['x1','x2','x3'],hue='label',markers=['o','s','s','s','s'],corner=True,grid_kws={fillstyles:['none','full','full','full','full']})
NameError: name 'fillstyles' is not defined
I also tried to add:
plot_kws={'edgecolor':'black'}
to the sns.pairplot function and then I got

but now all the points have a black border. How do I get only black borders around the square markers?

The scatter dots are stored in
ax.collections[0]. To avoid that the colors of later hue values always come on top, seaborn keeps the dots in the order they appear in the dataframe. You can use.set_edgecolors()to set the edge color of each individual dot.For the legend, the dots in stored in its handles as
lineobjects, which you can change via.set_markeredgecolor(...)Here is how the code could look like: