Проблема при использовании данных даты и времени для рисования графики - PullRequest
0 голосов
/ 17 сентября 2018

Я хочу нарисовать графику с использованием данных в формате datetime в качестве 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 голосов
/ 17 сентября 2018

Я не совсем понял, что вы имеете в виду под 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()

Может быть полезно показать некоторые строки

EDIT:

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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...