2017-04-17 105 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') 

但有如此多的國家在您的數據圖表是太忙了,是非常有用的。