2017-04-17 115 views
0

我只想做一个世界各国人口的简单条形图。理想情况下,x轴应该有国家名称,小字体,但斜对角倾斜; y轴将是对数的。熊猫世界各国人口的简单条形图

下面是我在做什么至今:

import pandas as pd 
import numpy as np 
import matplotlib as plt 
import matplotlib.pyplot as plt 

cols = ['Rank', 'Country', 'UN_Continental_region', 'UN_Statistical_region', 'Population', 'Population2015', 'percent_change'] 

pop_list = pd.read_table('country.dat', names=cols) 

pop_list['Population'].plot().hist(alpha=0.5) 
plt.show() 

情节()HIST行给出一个类型错误:HIST()失踪1个人需要的位置参数:“X” 错误,但随后的plt.show()做一个人口的线图。

发生了什么??? !!

完整的代码可以在这里找到: https://github.com/d80b2t/python/blob/master/wealth_and_population/population_barchart_forStackOverflow.ipynb

+0

我不认为你想要一个直方图。直方图会将数据装箱,但您的数据已经分箱,每个国家都有一个单独的人口编号。你只是想要一个条形图。 – BrenBarn

回答

0

你得到一个TypeError的原因是,您所呼叫plot().hist()时,你应该调用plot.hist()(注意plot后缺少括号)。

DataFrame.plot没有括号的对象是一个熊猫图API实例,它有一个引用相关数据帧的hist()方法。当你调用绘制API对象本身与DataFrame.plot(),它返回一个matplotlib轴实例,它有一个hist()方法需要一个数组作为第一个参数(这是你可能熟悉的matplotlib的正常ax.hist()方法)。

情节仍然显示的原因是当你做pop_list.plot()时,它会创建一个折线图。直到你打电话给那个轴的hist()方法,你会得到错误......你已经创建了情节!

所以,摆脱错误的类型,使用

pop_list.plot.hist() 

但固定,会给你的人口的直方图,这听起来像你想有一个条形图,而不是一个直方图。要创建条形图,您可以使用pop_list.plot.bar。这有点像你想要什么:

pop_list.plot.bar('Country', 'Population') 

但有如此多的国家在您的数据图表是太忙了,是非常有用的。