当我的数据来自python字典时,如何将类别名称添加到我的seaborn boxplot?

时间:2016-06-01 18:25:07

标签: boxplot seaborn

我有一些数据存在于列表的python词典中。

如何使用字典中的键作为此箱图的类别标签? 以下是字典的示例plot_data:

plot_data {
    'Group1': [0.02339976, 0.03235323, 0.12835462, 0.10238375, 0.04223188],
    'Group2': [0.02339976, 0.03235323, 0.12835462, 0.10238375, 0.04223188]
}

这段代码可能很乱,但现在是:

data = plot_data.values()

#Get data in proper format
fixed_data = list(sorted(data))


#Set up the graph parameters
sns.set(context='notebook', style='whitegrid')
sns.axlabel(xlabel="Groups", ylabel="Y-Axis", fontsize=16)


#Plot the graph
sns.boxplot(data=fixed_data, whis=np.inf, width=.18)
sns.swarmplot(data=fixed_data, size=6, edgecolor="black", linewidth=.9)

Boxplot with no category labels

1 个答案:

答案 0 :(得分:4)

此处如何“手动”添加类别标签:

import seaborn as sns, matplotlib.pyplot as plt, operator as op

plot_data = {
  'Group1': range(10,16),
  'Group2': range(5,15),
  'Group3': range(1,5)
}

# sort keys and values together
sorted_keys, sorted_vals = zip(*sorted(plot_data.items(), key=op.itemgetter(1)))

# almost verbatim from question
sns.set(context='notebook', style='whitegrid')
sns.axlabel(xlabel="Groups", ylabel="Y-Axis", fontsize=16)
sns.boxplot(data=sorted_vals, width=.18)
sns.swarmplot(data=sorted_vals, size=6, edgecolor="black", linewidth=.9)

# category labels
plt.xticks(plt.xticks()[0], sorted_keys)

plt.show()

这里输出: output