Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python 3.5 matplotlib从csv读取日期,但不能表示为X轴上的日期_Python_Python 3.x_Csv_Datetime_Matplotlib - Fatal编程技术网

python 3.5 matplotlib从csv读取日期,但不能表示为X轴上的日期

python 3.5 matplotlib从csv读取日期,但不能表示为X轴上的日期,python,python-3.x,csv,datetime,matplotlib,Python,Python 3.x,Csv,Datetime,Matplotlib,我完全搞不懂这一点,如何从csv读取日期,但我无法将日期表示为x轴上的标签。我已经尝试了人们建议的所有方法,但我无法让它发挥作用。那么,有人能看看我的代码的精简版本,告诉我我遗漏了什么吗 从csv文件读取的数据示例 2015-08-04 02:14:05.249392,AA,0.0193103612,0.0193515212,0.0249713335,30.6542480634,30.7195875454,39.640763021,0.2131498442,29.0406746589,13524

我完全搞不懂这一点,如何从csv读取日期,但我无法将日期表示为x轴上的标签。我已经尝试了人们建议的所有方法,但我无法让它发挥作用。那么,有人能看看我的代码的精简版本,告诉我我遗漏了什么吗

从csv文件读取的数据示例

2015-08-04 02:14:05.249392,AA,0.0193103612,0.0193515212,0.0249713335,30.6542480634,30.7195875454,39.640763021,0.2131498442,29.0406746589,13524.5347810182,89,57,99
2015-08-05 02:14:05.325113,AAPL,0.0170506271,0.0137941891,0.0105915637,27.0670313481,21.8975963326,16.8135861893,-19.0986405157,-23.2172064279,21.5647072302,33,26,75
2015-08-06 02:14:05.415193,AIG,0.0080808151,0.0073296055,0.0076213535,12.8278962785,11.635388035,12.0985236788,-9.2962105215,3.980405659,-142.8175077335,71,42,33
2015-08-07 02:14:05.486185,AMZN,0.0235649449,0.0305828226,0.0092703502,37.4081902773,48.5487257749,14.7162247572,29.7810062852,-69.6877219282,-334.0005615016,2,92,10
精简代码

import matplotlib.pyplot as plt
import numpy as np
import matplotlib.font_manager as fm

ax = plt.subplots(1, 1, figsize=(16, 20), dpi=50) #width height inches
data=np.genfromtxt('/home/dave/Desktop/development/hvanal2015s.csv',
     dtype='M8[us],S5,float,float,float',delimiter=',',usecols= [0,1,11,12,13])

my_dates =  np.array([d[0] for d in data]).astype('datetime64[D]')
dates = np.unique(my_dates)
print(dates)

x_list  = []
y_list  = [10,11,12,13]

x_list  = dates

plt.plot(x_list,y_list)

plt.title('hv 20 to 10 ranks',fontsize=20)
plt.xlabel('dates')
plt.ylabel('symbol ranks',fontsize=30)
plt.show()
并将其输出为png文件

matplotlib不支持numpy datetime64对象,您需要将其转换为python datetime对象,然后选择格式化程序,如下面的代码所示:

import matplotlib.pyplot as plt
import numpy as np
import matplotlib.font_manager as fm
from datetime import datetime
import matplotlib.dates as mdates

fig,ax = plt.subplots(1, 1) #width height inches
data=np.genfromtxt('data',
     dtype='M8[us],S5,float,float,float',delimiter=',',usecols= [0,1,11,12,13])

my_dates =  np.array([d[0] for d in data]).astype('datetime64[D]')
dates = np.unique(my_dates)
print(dates)
x_list = []
x_list[:] = dates.astype(datetime)
y_list  = [10,11,12,13]
plt.plot(x_list,y_list)
plt.title('hv 20 to 10 ranks',fontsize=20)
plt.xlabel('dates',fontsize=16)
ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d'))
plt.ylabel('symbol ranks',fontsize=30)
plt.show()

简单的回答是导入pandas或将您的np.datetime64对象转换为datetime.datetime对象。@如果您是一位绅士和学者,我是如此接近,但没有雪茄!非常感谢你在这方面帮助了真正愚蠢的人。在过去的某个时候,我有点像你的答案,但我搞砸了。感谢您抽出时间。这对于mpl来说是一个严重的痛点,但要解决它并非易事。pandas通过一个基于cython的框来支持datetime64对象,该框深深嵌入到他们的Series类中,因此我们不能只移植它。这可能需要几天——一周的艰苦努力,但没有人找到时间。我理解,并向我深入解释了这个问题。我远离熊猫,因为我有点担心有一天它可能会成为专有的,我没有证据表明这会发生只是一种预感。我真的很喜欢Matplotlib,而且我对它的使用很感兴趣。我也是python新手,这是我的第三个程序,因为我没有太多的编码时间。您和Stanley R帮了我很多忙,非常感谢您,因为它是BSD许可的,不能成为专有的。有人可能会放弃资源并开始出售,但他们不太可能取代目前围绕熊猫的社区。实际上有两个专有的类似dataframe的库,它们正朝着另一个方向发展。请看dato的SFrame。哇,非常感谢您的帮助。我会花几个小时在荒野里搞错这件事。真的帮助我度过了一个美好的假期。