如何使用matplotlib将“%d.%m.%Y%h:%min:%sec”绘制为时间戳

2024-09-30 20:18:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我很难理解如何将数据中的时间戳用于matplotlib

以下是我的数据:

Label   Power   Cold_junction   Prof100 Prof200 Prof300 Prof400 Prof600 Prof1000    Temp05      Temp10  Temp20  Temp30  Temp50  Temp100
Units   V   deg C   %   %   %   %   %   %   °C  °C  °C  °C  °C  °C
29.09.2020 11:20:00 10,9    25,4    1,8 4,6 3,5 0,2 #-INF   #-INF   22,9    23,1    23,0    23,2    23,0    23,1
29.09.2020 11:30:00 10,9    25,5    1,8 4,5 3,5 0,1 #-INF   #-INF   23,0    23,2    23,1    23,3    23,2    23,3
29.09.2020 11:40:00 10,9    25,7    1,8 4,5 3,4 0,0 #-INF   #-INF   23,1    23,3    23,2    23,3    23,3    23,4
29.09.2020 11:50:00 10,9    25,8    1,7 4,4 3,4 0,0 #-INF   #-INF   23,2    23,4    23,3    23,5    23,4    23,5

到目前为止,我知道如何使用以下代码将此数据导入numpy.ndarray:

import matplotlib.pyplot as plt
import numpy as np
import matplotlib.dates as mdates
a = np.genfromtxt(r'shortglienig.txt', delimiter=None, skip_header=2, dtype=str, comments=None)
a = np.char.replace(a, ',','.')
a = np.char.replace(a,'\t',' ')
date = a[0:len(a),0]
time = a[0:len(a),1]
prof100 = a[0:len(a), 4]

这就是如何将prof100的日期、时间和数据转换为类型为<;类“numpy.ndarray”>

现在我如何绘制,把日期和时间放在X轴上,把prof100数据放在Y轴上? 我想下一步是将时间数据转换成matlplotlib可以使用的格式。。。 我认为mdates.date2num或mdates.datestr2num可能有用。但这有意义吗


Tags: 数据importnumpynonelenmatplotlibasnp
1条回答
网友
1楼 · 发布于 2024-09-30 20:18:49

您可以从将proof100值转换为浮点数开始。然后还可以将datetime连接成一个字符串,您可以使用plt.xticks函数将其用作x轴的标签。代码如下所示:

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

#Loading data
a = np.genfromtxt(r'shortglienig.txt', delimiter=None, skip_header=2, dtype=str, comments=None)
a = np.char.replace(a, ',','.')
a = np.char.replace(a,'\t',' ')


date = a[:,0]
time = a[:,1]

#Concatenating date and time
N_lines=len(date)
date_and_time=[]
[date_and_time.append(date[i]+'_'+time[i]) for i in range(N_lines)]

#Converting proof100 to floats   
proof100=[]
[proof100.append(float(a[i,4])) for i in range(N_lines)]

#Plotting
plt.plot(np.arange(N_lines),proof100)
plt.xlabel('date and time')
plt.ylabel('proof100')

#Setting up date and time as xticks
plt.xticks(np.arange(N_lines), date_and_time,fontsize='8')
plt.show()

输出结果为:

enter image description here

相关问题 更多 >