Issue 1:
Suddenly plotting scatterplots using the "hue" parameter throws an error. I can't get scatterplots to work with hue regardless of dataset.

See this stackoverflow topic:

Stackoverflow

The problem occurs

even for some of the example code snippets given on Seaborn's official site (https://seaborn.pydata.org/generated/seaborn.scatterplot.html).

import seaborn as sns; sns.set()
import matplotlib.pyplot as plt
tips = sns.load_dataset("tips")
ax = sns.scatterplot(x="total_bill", y="tip", data=tips)

The code above produces this traceback:

---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
~\Miniconda3\envs\forge\lib\site-packages\IPython\core\formatters.py in __call__(self, obj)
339 pass
340 else:
--> 341 return printer(obj)
342 # Finally look for special method names
343 method = get_real_method(obj, self.print_method)

~\Miniconda3\envs\forge\lib\site-packages\IPython\core\pylabtools.py in <lambda>(fig)
246
247 if 'png' in formats:
--> 248 png_formatter.for_type(Figure, lambda fig: print_figure(fig, 'png', **kwargs))
249 if 'retina' in formats or 'png2x' in formats:
250 png_formatter.for_type(Figure, lambda fig: retina_figure(fig, **kwargs))

~\Miniconda3\envs\forge\lib\site-packages\IPython\core\pylabtools.py in print_figure(fig, fmt, bbox_inches, **kwargs)
130 FigureCanvasBase(fig)
131
--> 132 fig.canvas.print_figure(bytes_io, **kw)
133 data = bytes_io.getvalue()
134 if fmt == 'svg':

~\Miniconda3\envs\forge\lib\site-packages\matplotlib\backend_bases.py in print_figure(self, filename, dpi, facecolor, edgecolor, orientation, format, bbox_inches, pad_inches, bbox_extra_artists, backend, **kwargs)
2191 else suppress())
2192 with ctx:
-> 2193 self.figure.draw(renderer)
2194
2195 bbox_inches = self.figure.get_tightbbox(

~\Miniconda3\envs\forge\lib\site-packages\matplotlib\artist.py in draw_wrapper(artist, renderer, *args, **kwargs)
39 renderer.start_filter()
40
---> 41 return draw(artist, renderer, *args, **kwargs)
42 finally:
43 if artist.get_agg_filter() is not None:

~\Miniconda3\envs\forge\lib\site-packages\matplotlib\figure.py in draw(self, renderer)
1862 self.patch.draw(renderer)
1863 mimage._draw_list_compositing_images(
-> 1864 renderer, self, artists, self.suppressComposite)
1865
1866 renderer.close_group('figure')

~\Miniconda3\envs\forge\lib\site-packages\matplotlib\image.py in _draw_list_compositing_images(renderer, parent, artists, suppress_composite)
129 if not_composite or not has_images:
130 for a in artists:
--> 131 a.draw(renderer)
132 else:
133 # Composite any adjacent images together

~\Miniconda3\envs\forge\lib\site-packages\matplotlib\artist.py in draw_wrapper(artist, renderer, *args, **kwargs)
39 renderer.start_filter()
40
---> 41 return draw(artist, renderer, *args, **kwargs)
42 finally:
43 if artist.get_agg_filter() is not None:

~\Miniconda3\envs\forge\lib\site-packages\matplotlib\cbook\deprecation.py in wrapper(*inner_args, **inner_kwargs)
409 else deprecation_addendum,
410 **kwargs)
--> 411 return func(*inner_args, **inner_kwargs)
412
413 return wrapper

~\Miniconda3\envs\forge\lib\site-packages\matplotlib\axes\_base.py in draw(self, renderer, inframe)
2746 renderer.stop_rasterizing()
2747
-> 2748 mimage._draw_list_compositing_images(renderer, self, artists)
2749
2750 renderer.close_group('axes')

~\Miniconda3\envs\forge\lib\site-packages\matplotlib\image.py in _draw_list_compositing_images(renderer, parent, artists, suppress_composite)
129 if not_composite or not has_images:
130 for a in artists:
--> 131 a.draw(renderer)
132 else:
133 # Composite any adjacent images together

~\Miniconda3\envs\forge\lib\site-packages\matplotlib\artist.py in draw_wrapper(artist, renderer, *args, **kwargs)
39 renderer.start_filter()
40
---> 41 return draw(artist, renderer, *args, **kwargs)
42 finally:
43 if artist.get_agg_filter() is not None:

~\Miniconda3\envs\forge\lib\site-packages\matplotlib\collections.py in draw(self, renderer)
929 def draw(self, renderer):
930 self.set_sizes(self._sizes, self.figure.dpi)
--> 931 Collection.draw(self, renderer)
932
933

~\Miniconda3\envs\forge\lib\site-packages\matplotlib\artist.py in draw_wrapper(artist, renderer, *args, **kwargs)
39 renderer.start_filter()
40
---> 41 return draw(artist, renderer, *args, **kwargs)
42 finally:
43 if artist.get_agg_filter() is not None:

~\Miniconda3\envs\forge\lib\site-packages\matplotlib\collections.py in draw(self, renderer)
383 else:
384 combined_transform = transform
--> 385 extents = paths[0].get_extents(combined_transform)
386 if (extents.width < self.figure.bbox.width
387 and extents.height < self.figure.bbox.height):

~\Miniconda3\envs\forge\lib\site-packages\matplotlib\path.py in get_extents(self, transform, **kwargs)
601 xys.append(curve([0, *dzeros, 1]))
602 xys = np.concatenate(xys)
--> 603 return Bbox([xys.min(axis=0), xys.max(axis=0)])
604
605 def intersects_path(self, other, filled=True):

~\Miniconda3\envs\forge\lib\site-packages\numpy\core\_methods.py in _amin(a, axis, out, keepdims, initial, where)
41 def _amin(a, axis=None, out=None, keepdims=False,
42 initial=_NoValue, where=True):
---> 43 return umr_minimum(a, axis, None, out, keepdims, initial, where)
44
45 def _sum(a, axis=None, dtype=None, out=None, keepdims=False,

ValueError: zero-size array to reduction operation minimum which has no identity

<Figure size 432x288 with 1 Axes>

Using seaborn 0.10.1 and notebook 6.1.3

Output of pd.show_versions():

INSTALLED VERSIONS

commit : f2ca0a2665b2d169c97de87b8e778dbed86aea07

python : 3.7.9.final.0

python-bits : 64

OS : Windows

OS-release : 10

Version : 10.0.19041

machine : AMD64

processor : Intel64 Family 6 Model 158 Stepping 9, GenuineIntel

byteorder : little

LC_ALL : None

LANG : None

LOCALE : None.None

pandas : 1.1.1

numpy : 1.19.1

pytz : 2020.1

dateutil : 2.8.1

pip : 20.2.2

setuptools : 49.6.0.post20200814

Cython : None

pytest : None

hypothesis : None

sphinx : 3.2.1

blosc : None

feather : None

xlsxwriter : None

lxml.etree : 4.5.2

html5lib : None

pymysql : None

psycopg2 : None

jinja2 : 2.11.2

IPython : 7.18.1

pandas_datareader: None

bs4 : 4.9.1

bottleneck : None

fsspec : None

fastparquet : None

gcsfs : None

matplotlib : 3.3.1

numexpr : 2.7.1

odfpy : None

openpyxl : None

pandas_gbq : None

pyarrow : None

pytables : None

pyxlsb : None

s3fs : None

scipy : 1.5.2

sqlalchemy : 1.3.19

tables : 3.6.1

tabulate : None

xarray : None

xlrd : 1.2.0

xlwt : None

numba : None

Issue 2:
Matplotlib 3.3.1 has just been released and it breaks scatterplot (and relplot(kind="scatter")). The problem is the marker='' argument in the legend artists creation, which now raises an exception upon drawing (seems unintentional). See matplotlib/matplotlib#18254. Example code:

import seaborn as sns

# Load the example mpg dataset
mpg = sns.load_dataset("mpg")

# Plot miles per gallon against horsepower with other semantics
sns.scatterplot(x="horsepower", y="mpg", hue="origin", data=mpg)

Until upstream issue is resolved I'd advocate using matplotlib==3.3.0.