我有一个字典d
,其中列出了数字的出现情况:
{'item1': [42, 1, 2, 3, 42, 2, 1, 1, 1, 1, 1],
'item2': [2, 5],
'item3': [5, 1, 7, 2, 7, 1, 42, 2, 9]}
然后我将其转换为统计这些事件的DataFrame:
df = pd.DataFrame.from_dict({k: dict(Counter(v)) for k, v in d.items()})
item1 item2 item3
42 2.0 NaN 1.0
1 6.0 NaN 2.0
2 2.0 1.0 2.0
3 1.0 NaN NaN
5 NaN 1.0 1.0
7 NaN NaN 2.0
9 NaN NaN 1.0
如何绘制使用seaborn.violinplot
从d
派生的此数据帧或其他数据帧,以便数据帧中的每一列都基于每列值提供的数据在图中表示小提琴以及它们各自的索引?
我尝试了多种组合,我认为这在直观上是最接近的,但不幸的是仍然失败:
sns.violinplot(x=df.keys(), y=df.index, data=df)
答案 0 :(得分:2)
答案 1 :(得分:2)
仅此而已
from collections import Counter
d = {'item1': [42, 1, 2, 3, 42, 2, 1, 1, 1, 1, 1],
'item2': [2, 5],
'item3': [5, 1, 7, 2, 7, 1, 42, 2, 9]}
df = pd.DataFrame.from_dict({k: dict(Counter(v)) for k, v in d.items()})
sns.violinplot(data=df)
答案 2 :(得分:2)
下面的代码创建了情节:
# Import libraries
import pandas as pd
import collections
import seaborn as sns
# Create dictionary
d = {'item1': [42, 1, 2, 3, 42, 2, 1, 1, 1, 1, 1],
'item2': [2, 5],
'item3': [5, 1, 7, 2, 7, 1, 42, 2, 9]}
# Create DataFrame and melt
df = pd.DataFrame.from_dict({k: dict(collections.Counter(v)) for k, v in d.items()})
df = df.melt()
# Plot
sns.violinplot(x="variable", y="value", data=df)