Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.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 使用文件中的数据打印日期和时间(x轴)与值(y轴)_Python_Matplotlib - Fatal编程技术网

Python 使用文件中的数据打印日期和时间(x轴)与值(y轴)

Python 使用文件中的数据打印日期和时间(x轴)与值(y轴),python,matplotlib,Python,Matplotlib,文件(.dat)中的数据格式为 %dd%mm%yyyy%HH%mm%SS值 用空格隔开。我想在x轴上绘制日、月、年和时间,在y轴上绘制值。它应该总是从文件中读取,因为我有很多文件非常大,需要分析 我的最新尝试: import numpy as np import matplotlib.pyplot as plt import matplotlib.dates as mdates from time import gmtime, strftime date, time, level = np.lo

文件(.dat)中的数据格式为

%dd%mm%yyyy%HH%mm%SS值

用空格隔开。我想在x轴上绘制日、月、年和时间,在y轴上绘制值。它应该总是从文件中读取,因为我有很多文件非常大,需要分析

我的最新尝试:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.dates as mdates
from time import gmtime, strftime
date, time, level = np.loadtxt('my_file.txt', unpack=True, usecols = (0,1,2,3), converters={ 0,1: mdates.strpdate2num('%dd/%mm/%YY %HH:%MM')}) #read format of file
# then to plot 
plt.plot_date(x=date, y=level, fmt='%dd/%mm/%YY %HH:%MM') # fmt is changed from r- 
plt.title('title')
plt.ylabel('Waterlevel (m)')
plt.grid(True)
plt.show()

如果我正确理解了您的问题,我相信这是一个可能的解决方案:

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

# Converter function
datefunc = lambda x: mdates.date2num(datetime.strptime(x, '%d %m %Y %H %M %S'))

# Read data from 'file.dat'
dates, levels = np.genfromtxt('file.dat',    # Data to be read
                              delimiter=19,  # First column is 19 characters wide
                              converters={0: datefunc}, # Formatting of column 0
                              dtype=float,   # All values are floats
                              unpack=True)   # Unpack to several variables

fig = plt.figure()
ax = fig.add_subplot(111)

# Configure x-ticks
ax.set_xticks(dates) # Tickmark + label at every plotted point
ax.xaxis.set_major_formatter(mdates.DateFormatter('%d/%m/%Y %H:%M'))

ax.plot_date(dates, levels, ls='-', marker='o')
ax.set_title('title')
ax.set_ylabel('Waterlevel (m)')
ax.grid(True)

# Format the x-axis for dates (label formatting, rotation)
fig.autofmt_xdate(rotation=45)
fig.tight_layout()

fig.show()
使用
file.dat
作为

01 06 2013 00 00 00 24.23
02 06 2013 01 00 00 22.23
03 06 2013 02 00 00 21.43
04 06 2013 03 00 00 24.32
04 06 2013 14 30 00 23.42
06 06 2013 03 00 00 24.32
07 06 2013 19 20 00 23.54
08 06 2013 03 00 00 26.23
08 06 2013 19 00 00 24.43
10 06 2013 12 40 00 23.22
输出如下所示: