我想创建一个函数或for循环,将为DataFrame的每一列显示排序的水平条形图。可以在下面看到一列代码的示例。 plt.savefig()很不错,但不是必需的。
frame ['Population-current year']是DataFrame中的列之一。我似乎无法在语法上为循环制定必要的结构。
DataFrame标头:
地名人口当前年份
圣达菲82980.0
纳什维尔·戴维森654187.0
桑迪亚公园72.0
石山6209.0
阿什维尔89318.0
地名Pct人口变化,2010-当前年\
圣达菲0.2277
纳什维尔·戴维森0.1130
桑迪亚公园0.0286
石山0.0362
阿什维尔0.0896
地名人口中位年龄住房中位年龄\
圣达菲42.8 34.0
纳什维尔·戴维森34.1 38.0
桑迪亚公园60.2 24.0
石山38.8 38.0
阿什维尔38.6 44.0
预先感谢。
ax = (frame['Population-current year']/1000).sort_values().plot(kind='barh', figsize=(8, 10), color='#86bf91', zorder=2, width=0.85)
ax.spines['right'].set_visible(False)
ax.spines['top'].set_visible(False)
ax.spines['left'].set_visible(False)
ax.spines['bottom'].set_visible(False)
ax.tick_params(axis="both", which="both", bottom="off", top="off", labelbottom="on", left="off", right="off", labelleft="on")
vals = ax.get_xticks()
for tick in vals:
ax.axvline(x=tick, linestyle='dashed', alpha=0.4, color='#eeeeee', zorder=1)
ax.set_title("Population - 2017 (1000s)", weight='bold', size=12)
ax.set_xlabel("Population - 2017 (1000s)", labelpad=20, weight='bold', size=12)
ax.set_ylabel("City", labelpad=20, weight='bold', size=12)
ax.xaxis.set_major_formatter(StrMethodFormatter('{x:,g}'))
plt.savefig('pop_chart.png')