2017-10-10 65 views
0

私はPythonで初心者ですが、次の問題があります。私はx軸が日付データを表示するデータセットをプロットしたいと思います。Pythonのmatplotlibでx軸のラベル(日付)がずれます

datum, start, end 
2017.09.01 38086 37719,8984 
2017.09.04 37707.3906 37465.2617 
2017.09.05 37471.5117 37736.1016 
2017.09.06 37723.5898 37878.8594 
2017.09.07 37878.8594 37783.5117 
2017.09.08 37764.7383 37596.75 
2017.09.11 37615.5117 37895.8516 
2017.09.12 37889.6016 38076.8789 
2017.09.13 38089.1406 38119.0898 
2017.09.14 38119.2617 38243.1992 
2017.09.15 38243.7188 38325.9297 
2017.09.18 38325.3086 38387.2188 
2017.09.19 38387.2188 38176.0781 
2017.09.20 38173.2109 38108.0391 
2017.09.21 38107.2617 38109.2109 
2017.09.22 38110.4609 38178.6289 
2017.09.25 38121.9102 38107.8711 
2017.09.26 38127.25 37319.2383 
2017.09.27 37360.8398 37244.3008 
2017.09.28 37282.1094 37191.6484 
2017.09.29 37192.1484 37290.6484 

最初の列には、x軸のラベル(これは日付です)があります。

Iは、X軸データがスリップ次のコードを書く場合:

import pandas as pd 
import matplotlib.pyplot as plt 

bux = pd.read_csv('C:\\Home\\BUX.txt', 
       sep='\t', 
       decimal='.', 
       header=0) 
fig1 = bux.plot(marker='o') 
fig1.set_xticklabels(bux.datum, rotation='vertical', fontsize=8) 

を次のように得られた図形の外観が好き:

resulted figure

データセット内の第二データ列「が2017.09であります.04 37707.3906 37465.2617 '、BUT' 2017.09.04 'は開始値= 37471.5117の3番目のデータ行での収量です。

私が行うシェル正しいx軸ラベルを取得するには?

ありがとうございました!
Agnes

答えて

0

最初に、.の代わりに2行目にカンマがあります。これは調整する必要があります。次に、 "datum"カラムを実際の日付に変換し、単にmatplotlibを使ってデータフレームをプロットします。

import pandas as pd 
import matplotlib.pyplot as plt 

df = pd.read_csv('data/BUX.txt', sep='\s+') 
df["datum,"] = pd.to_datetime(df["datum,"], format="%Y.%m.%d") 

plt.plot(df["datum,"], df["start,"], marker="o") 
plt.plot(df["datum,"], df["end"], marker="o") 
plt.gcf().autofmt_xdate() 
plt.show() 

enter image description here

0

ありがとうございます!それは完全に動作します。重要な瞬間は、データを日付形式に変換することでした。ありがとうございました!

アグネス

0

実際にあなたが簡単にそれを修正するためにdf.plot()を使用することができます。

import pandas as pd 
import matplotlib.pyplot as plt 
import io 
t=""" 
date  start  end 
2017.09.01 38086  37719.8984 
2017.09.04 37707.3906 37465.2617 
2017.09.05 37471.5117 37736.1016 
2017.09.06 37723.5898 37878.8594 
2017.09.07 37878.8594 37783.5117 
2017.09.08 37764.7383 37596.75 
2017.09.11 37615.5117 37895.8516 
2017.09.12 37889.6016 38076.8789 
2017.09.13 38089.1406 38119.0898 
2017.09.14 38119.2617 38243.1992 
2017.09.15 38243.7188 38325.9297 
2017.09.18 38325.3086 38387.2188 
2017.09.19 38387.2188 38176.0781 
2017.09.20 38173.2109 38108.0391 
2017.09.21 38107.2617 38109.2109 
2017.09.22 38110.4609 38178.6289 
2017.09.25 38121.9102 38107.8711 
2017.09.26 38127.25 37319.2383 
2017.09.27 37360.8398 37244.3008 
2017.09.28 37282.1094 37191.6484 
2017.09.29 37192.1484 37290.6484 
""" 
import numpy as np 

data=pd.read_fwf(io.StringIO(t),header=1,parse_dates=['date']) 
data.plot(x='date',marker='o') 
plt.show() 

enter image description here

関連する問題