Repository: mwaskom/seaborn

Issue:
[BUG] Edge color with `catplot` with `kind=bar`
Hello, 

When passing `edgecolor` to catplot for a bar, the argument doesn't reach the underlying `p.plot_bars` to generate the required output. 

Currently there is a line 
`edgecolor = p._complement_color(kwargs.pop("edgecolor", default), color, p._hue_map)`

is _not_ passed into the block `elif kind=="bar"`.  A local "hack" I implemented is to add a `kwargs["edgecolor"] = edgecolor` before `p.plot_bars` call. Let me know if I should provide more details. 

This is on version `0.13.0`. 

Discussion:
codecov[bot]: ## [Codecov](https://app.codecov.io/gh/mwaskom/seaborn/pull/3547?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Michael+Waskom) Report
> Merging [#3547](https://app.codecov.io/gh/mwaskom/seaborn/pull/3547?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Michael+Waskom) (4b7f341) into [master](https://app.codecov.io/gh/mwaskom/seaborn/commit/3351a17195227b114a2f398241fc66751ad6a8e4?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Michael+Waskom) (3351a17) will **increase** coverage by `0.00%`.
> Report is 4 commits behind head on master.
> The diff coverage is `100.00%`.

<details><summary>Additional details and impacted files</summary>


[![Impacted file tree graph](https://app.codecov.io/gh/mwaskom/seaborn/pull/3547/graphs/tree.svg?width=650&height=150&src=pr&token=SLuzHnA9Bl&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Michael+Waskom)](https://app.codecov.io/gh/mwaskom/seaborn/pull/3547?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Michael+Waskom)

```diff
@@           Coverage Diff           @@
##           master    #3547   +/-   ##
=======================================
  Coverage   98.34%   98.34%           
=======================================
  Files          75       75           
  Lines       24605    24606    +1     
=======================================
+ Hits        24197    24198    +1     
  Misses        408      408           
```


| [Files](https://app.codecov.io/gh/mwaskom/seaborn/pull/3547?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Michael+Waskom) | Coverage Δ | |
|---|---|---|
| [seaborn/categorical.py](https://app.codecov.io/gh/mwaskom/seaborn/pull/3547?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Michael+Waskom#diff-c2VhYm9ybi9jYXRlZ29yaWNhbC5weQ==) | `98.91% <100.00%> (+<0.01%)` | :arrow_up: |
| [tests/test\_categorical.py](https://app.codecov.io/gh/mwaskom/seaborn/pull/3547?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=Michael+Waskom#diff-dGVzdHMvdGVzdF9jYXRlZ29yaWNhbC5weQ==) | `99.25% <ø> (ø)` | |

</details>

Patch:
diff --git a/seaborn/categorical.py b/seaborn/categorical.py
index bb40d5d3..ee537975 100644
--- a/seaborn/categorical.py
+++ b/seaborn/categorical.py
@@ -2830,7 +2830,11 @@ def catplot(
         if saturation < 1:
             color = desaturate(color, saturation)
 
-    edgecolor = p._complement_color(kwargs.pop("edgecolor", default), color, p._hue_map)
+    if kind in ["strip", "swarm"]:
+        kwargs = _normalize_kwargs(kwargs, mpl.collections.PathCollection)
+        kwargs["edgecolor"] = p._complement_color(
+            kwargs.pop("edgecolor", default), color, p._hue_map
+        )
 
     width = kwargs.pop("width", 0.8)
     dodge = kwargs.pop("dodge", False if kind in undodged_kinds else "auto")
@@ -2841,7 +2845,6 @@ def catplot(
 
         jitter = kwargs.pop("jitter", True)
         plot_kws = kwargs.copy()
-        plot_kws["edgecolor"] = edgecolor
         plot_kws.setdefault("zorder", 3)
         plot_kws.setdefault("linewidth", 0)
         if "s" not in plot_kws:
@@ -2858,7 +2861,6 @@ def catplot(
 
         warn_thresh = kwargs.pop("warn_thresh", .05)
         plot_kws = kwargs.copy()
-        plot_kws["edgecolor"] = edgecolor
         plot_kws.setdefault("zorder", 3)
         if "s" not in plot_kws:
             plot_kws["s"] = plot_kws.pop("size", 5) ** 2


Test patch:
diff --git a/tests/test_categorical.py b/tests/test_categorical.py
index 7031d094..99816c20 100644
--- a/tests/test_categorical.py
+++ b/tests/test_categorical.py
@@ -2307,7 +2307,7 @@ class TestBarPlot(SharedAggTests):
             dict(data="long", x="a", y="y", errorbar=("pi", 50)),
             dict(data="long", x="a", y="y", errorbar=None),
             dict(data="long", x="a", y="y", capsize=.3, err_kws=dict(c="k")),
-            dict(data="long", x="a", y="y", color="blue", ec="green", alpha=.5),
+            dict(data="long", x="a", y="y", color="blue", edgecolor="green", alpha=.5),
         ]
     )
     def test_vs_catplot(self, long_df, wide_df, null_df, flat_series, kwargs):