0

我有一个 matplotlib 图,上面有一些小提琴图(尽管这个问题适用于任何类似的图或其他数据框情况,而不仅仅是小提琴图)。我目前运行我的代码,它会吐出这个数字,每个类别都有一个小提琴图。代码如下所示:

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

df = pd.DataFrame(data=np.random.random_integers(low=0,high=1000,size=(100,1)),
                  columns=['row0']
                  )

df['r0_range']='temp' #create a new column 'r0_range', give it a preliminary value
#make assignments depending on value of row0
df['r0_range'][df['row0']<=250]='[0,250]'
df['r0_range'][df['row0']>250]='(250,500]'
df['r0_range'][df['row0']>500]='(500,750]'
df['r0_range'][df['row0']>750]='(750,1000]'

fig1, ax1 = plt.subplots(1,1)

ax1 = sns.violinplot(data=df, x='r0_range', y='row0', inner=None, ax=ax1)

弹出以下内容:

四把小提琴的小提琴情节

我想在我的图中包含第五个小提琴图,它代表所有类别中的所有数据。有没有一种优雅的方法可以做到这一点,而不必将 row0 数据复制到数据框的新行中?

4

1 回答 1

0

也许这样的事情会做你正在寻找的东西:

df = pd.DataFrame(data=np.random.randint(0, 1001, 100), columns=['row0'])
g = df.groupby(pd.cut(df['row0'], [0, 250, 500, 750, 1000]))
for name, data in g.groups.items():
    df[name] = df.loc[data]['row0']
sns.violinplot(data=df, inner=None, ax=ax1)

在此处输入图像描述

于 2017-11-02T20:39:43.697 回答