微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在Matplotlib中绘制非常大的数据集日期,时间x轴与一年中每天每15分钟记录的值y轴对比

如何解决如何在Matplotlib中绘制非常大的数据集日期,时间x轴与一年中每天每15分钟记录的值y轴对比

我应该在python中准备一个x vs y图。我的数据集包含“日期-时间和温度”,它们以一年15分钟的间隔记录。假设我有一个月的数据,并尝试在Matplotlib中进行绘制。我得到的图不太清楚,因为x轴(数据时间)在整个轴上都充满了,而且我没有得到清晰的图像,而Excel与matplotlib相比,绘图效果很好。

我用来打开30个日常csv数据记录文件并将其连接起来以形成一个数据帧的代码如下

require("./myserver");

数据示例

enter image description here

输出图如下:

enter image description here

正如您在输出图中所看到的,x轴上的数据点是繁荣的,并且不是可读形式。此外,如果我将.csv文件加载和连接几天,则matplotlib会给出多个图形。

在Excel / Libre中绘制的相同数据集提供了一个平滑的图形,其x轴上的日期安排得井井有条,线形图也很完美。

enter image description here

我想重写代码以绘制类似于Excel / Libre中绘制的图形。请帮忙

解决方法

尝试这种方法:

使用date locators格式化具有所需日期范围的x轴。 日期定位器可用于定义间隔,以秒,分钟,...:

  • SecondLocator:定位秒数
  • MinuteLocator:查找分钟数
  • HourLocator:查找时间
  • DayLocator:查找每月的指定日期
  • MonthLocator:查找月份
  • YearLocator:定位年份

在示例中,我使用MinuteLocator,间隔为15分钟。

matplotlib.dates导入绘图中的工作日期:

import matplotlib.dates as mdates

import pandas as pd
import matplotlib.pyplot as plt

获取数据

# Sample data
# Data
df = pd.DataFrame({
    'Date': ['07/14/2020','07/14/2020','07/14/2020'],'Time': ['12:15:00 AM','12:30:00 AM','12:45:00 AM','01:00:00 AM'],'Temperature': [22.5,22.5,23.0]
})

Time period从字符串转换为日期对象:

# Convert data to Date and Time
df["Time period"] = pd.to_datetime(df['Date'] + ' ' + df['Time'])

定义minmax的时间间隔:

min = min(df['Time period'])
max = max(df['Time period'])

创建情节:

# Plot

# Create figure and plot space
fig = plt.figure(figsize=(10,10))
ax = fig.add_subplot()

使用定位符设置时间间隔:

# Set Time Interval
ax.xaxis.set_major_locator(mdates.MinuteLocator(interval=15))
ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d %H:%M'))

设置绘图选项和绘图:

# Set labels
ax.set(xlabel="Time",ylabel="Temperature",title="Temperature distribution Graph",xlim=[min,max])

# Plot chart
ax.plot('Time period','Temperature',data=df,linewidth=2,color='g')
ax.grid(True)
fig.autofmt_xdate()
plt.show()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。