seaborn绘图-双标签

ikfrs5lh  于 2021-08-20  发布在  Java
关注(0)|答案(0)|浏览(260)

我有一个数据框:

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

val = random.sample(range(0, 100), 100)
prob = []
for i in range(0,100):
    x = random.uniform(0,1)
    prob.append(x)   
d = {'Value': val, 'Probability': prob}
df = pd.DataFrame(data=d)

我想画一个图表:

def barplot_groups(group_, var_names=['','']):
    fig, ax = plt.subplots(figsize=(15,7))
    sns.barplot(group_.index, group_.values, ax=ax)
    max_val = group_.values.max()
    for p in ax.patches:
        _x = p.get_x() + 1/3*p.get_width()
        _y = p.get_y() + p.get_height()
        if _y >= 0: _y += + max_val/100
        else: _y = _y - max_val/50
        value = round(p.get_height(),2)
        ax.text(_x, _y, value)

    plt.xlabel(f'{var_names[0]}')
    plt.ylabel(f'Average of {var_names[1]}')
    plt.title(f'Relationship between {var_names[0]} and {var_names[1]}')
    plt.show()

在此,我应用以下函数:

group_prob = df.groupby(pd.cut(df['Probability'], np.arange(0, 1.1, 0.1)))['Value'].mean()
group_prob = group_prob.fillna(0.0)
barplot_groups(group_prob, ['Probability','Value'])

但我也想在酒吧中间添加一些基于:

group_prob = df.groupby(pd.cut(df['Probability'], np.arange(0, 1.1, 0.1)))['Value'].count()


如果你知道一个很好的方法来增加价值在图表中建议。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题