【问题标题】:Plot all categories in boxplot or violinplot在箱线图或小提琴图中绘制所有类别
【发布时间】:2018-04-15 10:38:02
【问题描述】:

我有一个 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)

弹出以下内容:

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

【问题讨论】:

  • 不是答案,但您可能需要注意pd.cut(df['row0'], [0, 250, 500, 1000]) 大大简化了您的分箱。
  • ...当然还有750

标签: python pandas dataframe boxplot violin-plot


【解决方案1】:

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

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)

【讨论】:

    猜你喜欢
    • 2022-12-09
    • 2021-12-20
    • 1970-01-01
    • 2013-03-28
    • 2023-03-06
    • 1970-01-01
    • 2017-08-30
    • 2015-01-16
    • 1970-01-01
    相关资源
    最近更新 更多