在一张图中绘制更多垂直密度图

plot more vertical density plots in one graph

我想得到一张和我画的差不多的图:

x 轴是收集数据的日期,y 轴是相关密度。

我写了这几行:

import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
import pandas as pd
from datetime import datetime

df = pd.DataFrame(np.random.rand(7, 100), columns=['y']*100)
df.index = pd.date_range(datetime.today(), periods=7).tolist()

sns.kdeplot(data=df, y='y', fill=True,  alpha=.5, linewidth=0)

plt.show()

当然不行。如何修改代码才能得到我想象中的结果?

可以使用 statsmodels.graphics.boxplots.violinplot

轻松完成
from statsmodels.graphics.boxplots import violinplot

fig, ax = plt.subplots()
violinplot(data=df.values, ax=ax, labels=df.index.strftime('%Y-%m-%d'), side='right', show_boxplot=False)
fig.autofmt_xdate()