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

Posted

技术标签:

【中文标题】使用文件中的数据绘制日期和时间(x 轴)与值(y 轴)【英文标题】:Plot date and time (x axis) versus a value (y axis) using data from file 【发布时间】:2013-02-22 01:33:54 【问题描述】:

我在文件 (.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()

【问题讨论】:

【参考方案1】:

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

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

输出变成这样:

【讨论】:

以上是关于使用文件中的数据绘制日期和时间(x 轴)与值(y 轴)的主要内容,如果未能解决你的问题,请参考以下文章

如何沿 x 轴均匀地绘制日期数据?

R语言ggplot2可视化:可视化所有日期不同时段任务的持续时间将持续时间绘制成一条线(起始时间到结束时间),y轴表示活动发生的日期,x轴表示以小时为单位的时间

使用 JFreeChart 在 x 轴上的日期时间

在日期轴上绘制函数

R语言ggplot2可视化:可视化所有日期不同时段任务的持续时间将持续时间绘制成一条线(起始时间到结束时间),y轴表示活动发生的日期,x轴表示以小时为单位的时间适应时间段跨越多天的情况

绘制水平堆积条形图不适用于日期中的 x 轴