Consider the following data and FacetGrid:
d = {'SITE':['A', 'B', 'C', 'C', 'A'], 'VF':[0.00, 0.78, 0.99, 1.00, 0.50],'TYPE':['typeA', 'typeA', 'typeB', 'typeC', 'typeD']} 
new_df = pd.DataFrame(data=d) 
with sns.axes_style("white"):
    g = sns.FacetGrid(data=new_df, col='SITE', col_wrap= 3, height=7, aspect=0.25, 
                      hue='TYPE', palette=['#1E88E5', '#FFC107', '#D81B60'])
    g.map(sns.scatterplot, 'VF', 'TYPE', s=100)
Using another dataframe:
d = {'SITE':['A', 'B', 'C'], 'N':[10, 5, 7]} 
ann_df = pd.DataFrame(data=d) 
Where the SITE matches the original new_df['SITE'], and is not the same dimensions as new_df['SITE'], but has the corresponding length of columns in the FacetGrid.
How do you annotate each subplot using a custom func using not the scatterplot new_df, but the ann_df or custom list, if it matches the original new_df['SITE'] and adds the ann_df['N'] to each subplot as shown below:
So, something along these lines or better:
def annotate(data, **kws):
n = data           # should be the int for each matching SITE 
ax = plt.gca()
ax.text(.1, .2, f"N = {n}", transform=ax.transAxes)
g.map_dataframe(annotate(ann_df)) 


