如何使用matplotlib在绘图的X轴上同时显示日期和时间

2024-10-04 05:29:12 发布

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

我有以下代码,用于绘制预期输出:

import matplotlib.pyplot as plt
import csv
import datetime
import matplotlib.dates as mdates
import re

Time = []
station12SRV = []
station18SRV = []

with open('Book2.csv','r') as csvfile:
    plots = csv.reader(csvfile, delimiter=',')
    for row in plots:

        datetime_format = '%d/%m/%Y %H:%M'
        date_time_data = datetime.datetime.strptime(row[0],datetime_format)
        Time.append(date_time_data)
        station12SRV.append(float(row[1]))
        station18SRV.append(float(row[2]))

plt.plot(Time,station12SRV, label='Tracker Station 12')
plt.plot(Time,station18SRV, label='Tracker Station 18')

plt.xlabel('Date & Time')
plt.ylabel('Pressure (Torr)')
plt.yscale('log')
#plt.title('SRV Plot vs Time')
plt.legend()
plt.savefig('trackers_srv.pdf')
#plt.show()

但是,在绘图上,x轴不同时显示日期和时间,只显示时间:

the plot

如何使它在x轴上同时显示日期和时间?谢谢


Tags: csvcsvfileimportformatdatetimetimematplotlibas
1条回答
网友
1楼 · 发布于 2024-10-04 05:29:12

在x轴上格式化日期和时间的最简单方法之一是将数据放在Pandas数据框中并使用df.plot()

import matplotlib.pyplot as plt
import numpy as np; np.random.seed(3)
import pandas as pd

# Generate sample data
Time = pd.date_range('3/1/19 12:00 AM', '3/3/19 12:00 AM', freq='1H')
n = len(Time)
df = pd.DataFrame({'Tracker Station 12': np.random.rand(n), 'Tracker Station 18': 1+np.random.rand(n), 'Time': Time})
df = df.set_index('Time')

df.plot()
plt.ylabel('Pressure (Torr)')
plt.yscale('log')

Plot with date on x axis

相关问题 更多 >