我有一些数据,我正在使用pd.cut
import pandas as pd
import matplotlib.pyplot as plt
garbage = 50*np.random.rand(100)
g=pd.DataFrame(data=garbage,columns=['a'])
g['a_binned'] = pd.cut(g['a'],bins=np.arange(0,100,5),labels=False)
g['a_binned_labelled'] = pd.cut(g['a'],bins=np.arange(0,100,5),labels=True)
然后我分组并计算
g_binned=g.groupby(['a_binned'])['a'].count()
plt.bar(g_binned.index,g_binned.cumsum().values)
我希望我的xticklabels成为g['a_binned_labelled'].index
值的字符串,例如'(10, 15]', '(25, 30]'
我想避免使用pandas绘图功能。
答案 0 :(得分:2)
由于切割索引按升序排序,因此可以将条形图与数字范围进行对比,并将ticklabels设置为索引的值。这样可以确保正确排列钢筋。
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
garbage = 50*np.random.rand(100)
g=pd.DataFrame(data=garbage,columns=['a'])
g['a_binned'] = pd.cut(g['a'],bins=np.arange(0,100,5), )
g_binned=g.groupby(g['a_binned'])['a'].count()
plt.bar(range(len(g_binned)),g_binned.cumsum().values)
plt.xticks(range(len(g_binned)), g_binned.index, rotation=90)
plt.gcf().autofmt_xdate(rotation=90, ha="center")
plt.show()