import matplotlib.pyplot as plt
from mpl_visual_context.patheffects import FillOnly, ImageEffect
from mpl_visual_context.image_effect import LightSource


fig, ax = plt.subplots()

# original
p1 = plt.Circle((0.25, 0.5), 0.2, fc="r", ec="k")
ax.add_patch(p1)

# w/ patheffects
p2 = plt.Circle((0.75, 0.5), 0.2, fc="r", ec="k")
ax.add_patch(p2)

p2.set_path_effects([FillOnly() | ImageEffect(LightSource(erosion_size=10,
                                                          gaussian_size=10))])

plt.show()