【问题标题】:plotting datetime along the x-Axis沿 x 轴绘制日期时间
【发布时间】:2016-07-29 20:09:05
【问题描述】:

嗨,我正在尝试在 x 轴上绘制一个日期时间数组。但是,我似乎在实际绘制它们时遇到了问题,并且不断收到以下值错误:

ValueError: invalid literal for long() with base 10: '2013-02-18 00:00:00'

有没有人知道我哪里出错了?

数据本身格式化为四列,打印时如下所示:('04/03/2013', 7.0, 12.0, 17.0) ('11/03/2013', 23.0, 15.0, 23.0)。

import csv
import numpy as np
import pylab as pl
import datetime
from datetime import datetime
data = np.genfromtxt('H:/AppliedGIS/Python/AssignmentData/GrowthDistribution/full.csv', names=True, usecols=(0, 1, 2, 3), delimiter= ',', skiprows=1, dtype =[('Date', 'S10'),('HIGH', '<f8'), ('Medium', '<f8'), ('Low', '<f8')])
print data
x =  [foo[0] for foo in data]
y =  [foo[1] for foo in data]
y2 = [foo[2] for foo in data]
y3 = [foo[3] for foo in data]
print x, y, y2, y3
dates = []
for i in x:
    date = datetime.datetime.strptime['i', '%d/%m/%Y']
    dates.append(date)

pl.plot(data[:, dates], data[:, y], '-r', label= 'High Stocking Rate')
pl.plot(data[:, dates], data[:, y2], '-g', label= 'Medium Stocking Rate')
pl.plot(data[:, dates], data[:, y3], '-b', label= 'Low Stocking Rate')
pl.title('Amount of Livestock Grazing per hectare', fontsize=18)
pl.ylabel('Livestock per ha')
pl.xlabel('Date')
pl.grid(True)
pl.ylim(0,100)
pl.show()

【问题讨论】:

    标签: csv datetime numpy matplotlib


    【解决方案1】:

    我立即发现代码中有两个问题。

    date = datetime.datetime.strptime['i', '%d/%m/%Y'] should be
    date = datetime.datetime.strptime('i', '%d/%m/%Y')
    
    pl.plot(data[:, dates], data[:, y], '-r', label= 'High Stocking Rate')
    
    Try this instead:
    pl.plot_date(dates, y, '-r', label= 'High Stocking Rate')
    

    【讨论】:

      猜你喜欢
      • 2021-05-18
      • 1970-01-01
      • 2018-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-24
      • 1970-01-01
      相关资源
      最近更新 更多