我正在尝试绘制一个数据帧:
import pandas as pd
dict_object = {'Feats':['AAA_set_a_type_4', 'BBBB_set_B_type_5', 'CCCCC_set_c_Type_6'], 'importance':[3,4,5] }
df = pd.DataFrame(dict_object )
ax = df .plot( kind="barh")
ax.invert_yaxis()
for i, x in enumerate(df.Feats):
ax.text(0, i + .5, x, ha='left', fontsize='large')但是,文本会与栏重叠。我怎么才能修复它呢?
另外,如何按降序对条形图进行排序?
谢谢
发布于 2016-04-11 18:04:33
您只需稍微更改一下底部位置,从i + .5更改为i + .4,将fontsize设置为medium,最后使用ascending=False对df进行排序。
(所有文本属性的Documentation)
下面是更新后的代码:
import matplotlib.pyplot as plt
import pandas as pd
dict_object = {'Feats':['AAA_set_a_type_4', 'BBBB_set_B_type_5', 'CCCCC_set_c_Type_6'], 'importance':[3,4,5] }
df = pd.DataFrame(dict_object ).sort(ascending=False)
ax = df .plot( kind="barh")
ax.invert_yaxis()
for i, x in enumerate(df.Feats):
ax.text(0, i + .4, x, ha='left', fontsize='medium')
plt.show()它看起来是这样的:

发布于 2016-04-11 18:08:26
不确定标签是如何重叠的。我得到了这个图:

如果要排序,只需使用sort_values(by)函数:
dict_object = {'Feats':['AAA_set_a_type_4', 'BBBB_set_B_type_5', 'CCCCC_set_c_Type_6'], 'importance':[3,4,5] }
df = pd.DataFrame(dict_object )
ax = df .plot( kind="barh")
ax.invert_yaxis()
df.sort_values("importance")
for i, x in enumerate(df.Feats):
ax.text(0, i + .5, x, ha='left', fontsize='large')https://stackoverflow.com/questions/36545340
复制相似问题