2017-03-29 6 views
1

matplotlibで棒グラフを作成しようとしています。matplotlib棒グラフのバー間に余裕があります

x軸データ年のリストである:[1950,1960,1970,1980,1990,1995-2015]

y軸データは、年として数値の等しい量のリストであります。

import csv 
import matplotlib.pyplot as plt 

path = "bevoelkerung_entwicklung.csv" 



with open(path, 'r') as datei: 
    reader = csv.reader(datei, delimiter=';') 
    jahr = next(reader) 
    population = next(reader) 

population_list = [] 

for p in population: 
    population_list.append(str(p).replace("'","")) 

population_list = list(map(int, population_list)) 
jahr = list(map(int, jahr)) 

datei.close() 

plt.bar(jahr,population_list, color='c') 

plt.xlabel('Year') 
plt.ylabel('Population in 1000') 
plt.title('Population growth') 
plt.legend() 
plt.show() 

と結果は以下の通りです::

これは私のコードです Too much space between bars

あなたは1950年から1960年の間に隙間が巨大で見ることができるように。バー1950-1995の間に隙間がないように、どうすれば作れますか?私はそれが10年の間隔を持っていることを得るが、それは良く見えない。

助けが必要です。

+0

だから、バーの幅は、xの間隔に基づいて調整したいですか?その場合、バーはもはや実際のデータポイントの中央に置かれません – Suever

+0

私は26のエントリがあると思います。私はそれらの間に等しい量のスペースを持つ26のバーを持っていたいと思います。それが私が達成したいものです。 – Prc

答えて

0

増加する整数の関数として母集団データをプロットする必要があります。これにより、バーの間隔が等しくなります。次に、各グラフが表す年にラベルを適合させることができます。

import matplotlib.pyplot as plt 
import numpy as np 

jahre = np.append(np.arange(1950,2000,10), np.arange(1995,2017)) 
bevoelkerung = np.cumsum(np.ones_like(jahre)) 
x = np.arange(len(jahre)) 

plt.bar(x, bevoelkerung) 
plt.xticks(x, jahre, rotation=90) 
plt.show() 

enter image description here

+0

ありがとうございます。これは私のために働いた – Prc

関連する問題