2017-04-17 10 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ラインはTypeError例外を提供します::。HIST()不足している1つの必要な位置引数: 'X' エラーが、その後、ここで

は、私がこれまでやってんですよplt.show()doeは集団の線図を作成します。

何が起こっているのですか?

完全なコードはここで見つけることができます: https://github.com/d80b2t/python/blob/master/wealth_and_population/population_barchart_forStackOverflow.ipynb

+0

ヒストグラムがまったく必要ないと思います。ヒストグラムはデータをビンにしますが、データは既にビンに入れられており、各国ごとに別々の母集団番号が付けられています。あなたは棒グラフがほしいのです。 – BrenBarn

答えて

0

あなたがTypeErrorを取得する理由は、あなたが(plotの後に括弧の欠如に注意してください)plot.hist()を呼び出すべきであるときは、plot().hist()を呼び出しているということです。

括弧なしのDataFrame.plotオブジェクトは、関連するデータフレームを参照するhist()メソッドを持つパンダプロットAPIインスタンスです。 を呼び出すと、DataFrame.plot()というプロットAPIオブジェクト自体が呼び出されます。これは、最初の引数として配列を必要とするhist()メソッドを持つmatplotlib軸インスタンスを返します。これは、matplotlibから慣れ親しんだ通常のax.hist()メソッドです。

プロットがまだ表示される理由は、pop_list.plot()を実行すると折れ線グラフが作成されるためです。その軸のhist()メソッドを呼び出すまでは、エラーが発生していません...あなたは既にプロットを作成しています!タイプエラーを取り除くためにそう

は、

pop_list.plot.hist() 

しかし、あなたの集団のヒストグラムを与え、そしてあなたが棒グラフ、ないヒストグラムをしたいように聞こえるだろう固定を使用しています。棒グラフを作成するには、pop_list.plot.barを使用します。これはあなたが望むようなものです:

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

しかし、あなたのデータには非常に多くの国があり、非常に役に立って忙しいです。

関連する問題