gpt4 book ai didi

pandas - 如何为 Pandas 生成的分组直方图添加图例和标题

转载 作者:行者123 更新时间:2023-12-04 02:07:15 28 4
gpt4 key购买 nike

我正在尝试绘制由另一个属性分组的多个属性的直方图,所有这些属性都在一个数据框中。

借助此 question ,我可以为情节设置标题。是否有一种简单的方法可以为每个子图打开图例。

这是我的代码

import numpy as np
from numpy.random import randn,randint
import pandas as pd
from pandas import DataFrame
import pylab as pl

x=DataFrame(randn(100).reshape(20,5),columns=list('abcde'))
x['new']=pd.Series(randint(0,3,10))
x.hist(by='new')
pl.suptitle('hist by new')

enter image description here

最佳答案

你几乎可以通过以下方式得到你想要的:

g.plot(kind='bar')

但它为每组生成一个图(并且不会在组之后命名图,因此 IMO 有点无用。)

这里有一些看起来很漂亮的东西,但确实涉及很多“手册” matplotlib工作,这是每个人都想避免的,但没有人可以:
import numpy.random as rnd
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib import cm

x = pd.DataFrame(rnd.randn(100).reshape(20, 5), columns=list('abcde'))

group_col = 'groups'
groups = ['foo', 'bar', 'baz']
x[group_col] = pd.Series(rnd.choice(groups, len(x)))

g = x.groupby(group_col)
num_groups = g.ngroups

fig, axes = plt.subplots(num_groups)
for i, (k, group) in enumerate(g):
ax = axes[i]
ax.set_title(k)
group = group[[c for c in group.columns if c != group_col]]
num_columns = len(group.columns)
colours = cm.Spectral([float(x) / num_columns for x in range(num_columns)])
ax.hist(group.values, 5, histtype='bar',
label=list(group.columns), color=colours,
linewidth=1, edgecolor='white')
ax.legend()

plt.show()

我认为这给了你你想要的:
Beautiful histogram

更新
为了回应评论(并且因为这个答案已经有几年了),我试图将这个答案剥离到最简单的骨头。现在可能有一种标记 groupby 的图的方法。对象,但我不知道。

这是执行此操作的最简单方法:
axes = g.plot(kind='hist')
for i, (groupname, group) in enumerate(g):
axes[i].set_title(groupname)

关于pandas - 如何为 Pandas 生成的分组直方图添加图例和标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30919063/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com