2017-10-10 177 views
0

我是Python初学者,我有以下问题。我想绘制一个数据集,其中x轴显示日期数据。数据集的外观如下所示:x轴标签(日期)在Python中滑动matplotlib

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轴的标签(这是日期)。

当我写入以下代码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

我做了什么壳获得正确的x轴标签?

谢谢!
Agnes

回答

0

首先,在第二行中有逗号而不是.。这应该调整。然后,将“数据”列转换为实际日期,并简单地使用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