Note
Go to the end to download the full example code.
Violing Chart w/ ImageEffects

import numpy as np
import matplotlib.pyplot as plt
import seaborn
seaborn.set()
tips = seaborn.load_dataset("tips")
fig, ax = plt.subplots(num=1, clear=True)
seaborn.violinplot(x='day', y='tip', data=tips,
hue='day', palette='deep',
ax=ax)
from matplotlib.collections import PolyCollection
import mpl_visual_context.patheffects as pe
import mpl_visual_context.image_effect as ie
colls = [p for p in ax.collections if isinstance(p, PolyCollection)]
shadow = pe.ImageEffect(
ie.AlphaAxb((0.3, 0))
| ie.Pad(10)
| ie.Fill("k")
| ie.Dilation(3)
| ie.Gaussian(4)
| ie.Offset(3, -3)
)
light = pe.ImageEffect(ie.LightSource(erosion_size=5, gaussian_size=5))
pe_list = [pe.FillOnly() | shadow, pe.FillOnly() | light]
for x, coll in enumerate(colls):
coll.set_path_effects(pe_list)
plt.show()
Total running time of the script: (0 minutes 0.156 seconds)