使用日期时间数据绘制图形时出现问题

时间:2018-09-17 09:11:46

标签: python python-3.x csv matplotlib graphics

我想使用日期时间格式的数据作为xaxis来绘制图形,但是该过程持续非常非常非常长,超过30分钟仍然没有图形。但是一旦将数据应用到另一列中,该图形将很快出现。所有数据的格式均为“列表”。 我对此感到困惑,因为它们都是相同的格式,为什么我不能使用datetime格式作为xaxis绘制图形? 这是我的代码,我非常珍惜您的时间和帮助!

from matplotlib import pyplot as plt
import csv

names = []
x = []
y = []
names=[]
with open('all.csv','r') as csvfile: #this csv file contains over 16000 datas
    plots= csv.reader(csvfile,delimiter=',')
    for row in plots:
        x.append(row[1]) #row1 is the datetime format data
        y.append(row[2])
    print(x,y)
plt.plot(x,y)
plt.show()

csv文件的行类似于:

2016/05/02 10:47:45,14.1,20.1,N.C.,170.7,518.3,-1259,-12.61,375.8,44.92,13.76,92.74,132.6,38.86,165.3,170.9,311.5,252.3,501.2,447.2,378.4,35.48,7.868,181.2,

我希望第一列作为xaxis,随后的列作为yaxis ...

无论我如何更改y轴限制,y轴都不会改变。

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

df = pd.read_csv('all.csv')
x = df.iloc[:,1]
y = df.iloc[:,3]
x = pd.to_datetime(x)
plt.figure(num=3, figsize=(15, 5))
plt.plot(x,y)
my_y_ticks = np.arange(0, 40, 10)
plt.xticks(rotation = 90)
plt.show()

1 个答案:

答案 0 :(得分:0)

我不确定您对all the datas' format are list的含义,但我认为您可以使用类似这样的内容:

import matplotlib.pyplot as plt
import pandas as pd
df = pd.read_csv('all.csv')
x = df.iloc[:,0]
y = df.iloc[:,1]
x = pd.to_datetime(x)
plt.plot(x,y)
plt.show()

也许显示一些行可能有用

编辑:

import matplotlib.pyplot as plt
import matplotlib.dates as mdates
df = pd.read_csv('all.csv')
x = df.iloc[:,0] 
y = df.iloc[:,1]

x = pd.to_datetime(x, format="%Y/%m/%d %H/%M/%S") #if the format is different, change here
fig, ax = plt.subplots()
ax.plot(x, y)
xfmt = mdates.DateFormatter("%Y/%m/%d %H:%M:%S")
ax.xaxis.set_major_formatter(xfmt)
plt.xticks(rotation=70)
plt.show()