Gru*_*ter 3 matplotlib python-2.7
我有一个文件(.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()
Run Code Online (Sandbox Code Playgroud)
sod*_*odd 12
如果我已正确理解您的问题,我相信这是一个可能的解决方案:
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()
Run Code Online (Sandbox Code Playgroud)
以此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
Run Code Online (Sandbox Code Playgroud)
输出变成这样:

| 归档时间: |
|
| 查看次数: |
18069 次 |
| 最近记录: |