迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Python >

在 Matplotlib 中绘制日期

作者:迹忆客 最近更新:2023/03/17 浏览次数:

时间序列图使用自回归综合移动平均值等统计方法传达属性值如何随时间变化。

我们可以根据其产品先前销售的历史时间序列数据可靠地预测或预测特定零售产品的需求。

本文将演示如何使用 matplotlib.dates 和一些使用内置 Python 模块的日期的基本示例,然后我们将看到一个使用 CSV 文件中的数据在 Matplotlib 中绘制日期的示例。

在 Matplotlib 中使用 matplotlib.dates 绘制日期

我们将在 Matplotlib 中查看时间序列数据并绘制日期。大量数据包含日期信息,因此在创建一些图表时知道如何绘制日期将是一个巨大的帮助。

首先,我们将通过 datetime 模块使用一些日期来完成一些基本示例。所以,我们需要导入一些库。

from matplotlib import pyplot as plot
# A matplotlib date tool
import matplotlib.dates as mpl_dates

from datetime import datetime,timedelta

我们在这里有一个包含七个日期的示例数据列表,我们正在使用 Python 的内置 datetime 模块来创建这些日期。

这是连续 7 天,然后在下面,我们的 y 轴有一个 y1 变量。

# A list of dates for seven dates
dates=[
    datetime(2021,10,10),
    datetime(2021,10,11),
    datetime(2021,10,12),
    datetime(2021,10,13),
    datetime(2021,10,14),
    datetime(2021,10,15),
    datetime(2021,10,16)
]

# A data list
y1=[1,10,3,2,5,16,7]

plot_date() 方法有助于绘制日期,因此我们调用此方法并传递一个 dates 参数作为 x 轴,将 y1 参数作为 y 轴。

这个绘图不是默认的,而是由一条线连接的标记,但我们可以使用 linestyle 参数快速修复它。我们希望这个图的线条样式是实心的。

plot.plot_date(dates,y1,linestyle='solid')

要从 Pyplot 中获取当前图形,我们可以使用获取当前图形的 gca() 方法。然后我们可以在该图上运行 autofmt_xdate()

我们有不同的方式来格式化我们的图,让它看起来不错;我们可以使用 autofmt_xdate() 来格式化我们图形上的日期。这将旋转我们的日期以更好地适应并更改对齐方式。

plot.gcf().autofmt_xdate()

让我们看看如何更改日期的格式。

假设,我们希望它们以月、日和年开头,而不是如何显示年-月-日。为此,我们必须使用一些日期时间格式。

为此,我们将 matplotlib.dates 导入为 mpl_dates,并从该导入的模块中使用 DateFormatter 类。现在在这个类中,我们传递我们的格式字符串。

月份的缩写名称是%b,日期是%d,年份是%Y。我们需要将其设置为 x 轴的格式。

就像我们抓取图形来运行 autofmt_xdate() 方法一样,我们需要抓取轴来运行该方法。这与获取当前图形很相似,所以要获取当前轴,我们将调用 gca() 方法来获取当前轴。

现在,我们可以使用 xaxis.set_major_formatter() 格式化 x 轴,并传递存储格式化日期的 date_format

date_format=mpl_dates.DateFormatter("%b, %d %Y")
# Get the access of current figure
plot.gca().xaxis.set_major_formatter(date_format)

tight_layout() 方法为我们的绘图添加了填充。

plot.tight_layout()

完整的示例代码:

from matplotlib import pyplot as plot
# A matplotlib date tool
import matplotlib.dates as mpl_dates

from datetime import datetime,timedelta
# A list of dates for seven dates
dates=[
    datetime(2021,10,10),
    datetime(2021,10,11),
    datetime(2021,10,12),
    datetime(2021,10,13),
    datetime(2021,10,14),
    datetime(2021,10,15),
    datetime(2021,10,16)
]

# A data list
y1=[1,10,3,2,5,16,7]

plot.plot_date(dates,y1,linestyle='solid')

date_format=mpl_dates.DateFormatter("%b, %d %Y")
# Get the access of current figure
plot.gcf().autofmt_xdate()
# Get the access of current figure
plot.gca().xaxis.set_major_formatter(date_format)
# Make responsive
plot.tight_layout()
plot.show()

输出:

使用 matplotlib.dates 输出绘图

在 Matplotlib 中使用 CSV 文件中的数据绘制日期

本节将提供一个使用 CSV 文件中的数据的示例。CSV 文件中的数据是几周内的比特币价格。

首先,我们需要导入 Pandas。

import pandas as pd

我们读取数据以将其加载为 Pandas 数据框并上传 CSV 文件,因此我们的目录中有 data.sv 文件。我们可以使用 read_csv() 方法上传它,这是一个 CSV 文件阅读器。

data = pd.read_csv('data.csv')

我们必须将 Date 列转换为日期时间,因此我们需要使用 Pandas 的 to_datetime() 方法。然后,我们将所有字符串值替换为转换后的日期时间。

在下面的代码行中,我们使用 sort_values() 方法对数据进行排序并传递 inplace=True,这将修改已排序列的数据。

每当 price_date 等于数据然后传入 Date 的那个键时,它会将 price_date equal 设置为我们数据中与该日期列等效的所有这些日期。

现在,我们将对 price_close 变量做同样的事情,并将其设置为 Close 以获取那些日子的所有收盘价,因此我们有价格日期,以及从 CSV 文件加载的价格收盘数据。

data['Date'] = pd.to_datetime(data['Date'])
data.sort_values('Date', inplace=True)

price_date = data['Date']
price_close = data['Close']

为了绘制它,我们将数据传递给 plot_date() 方法。我们将 price_date 作为 x 值传递,将 price_close 作为 y 值传递。

plot.plot_date(price_date,price_close,linestyle='solid')

完整的示例代码:

from matplotlib import pyplot as plot
# A matplotlib date tool
import matplotlib.dates as mpl_dates

from datetime import datetime,timedelta
import pandas as pd

data = pd.read_csv('data.csv')

data['Date'] = pd.to_datetime(data['Date'])
data.sort_values('Date', inplace=True)

price_date = data['Date']
price_close = data['Close']


plot.plot_date(price_date,price_close,linestyle='solid')

date_format=mpl_dates.DateFormatter("%b, %d %Y")
# Get the access of current figure
plot.gcf().autofmt_xdate()
# Get the access of current figure
plot.gca().xaxis.set_major_formatter(date_format)

plot.title('Bitcoin Prices')
plot.xlabel('Date')
plot.ylabel('Closing Price')

# Make responsive
plot.tight_layout()
plot.show()

输出:

使用 CSV 文件中的数据输出绘图

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

Django 中的 Slug

发布时间:2023/05/04 浏览次数:173 分类:Python

本篇文章旨在定义一个 slug 以及我们如何使用 slug 字段在 Python 中使用 Django 获得独特的帖子。

Django ALLOWED_HOSTS 介绍

发布时间:2023/05/04 浏览次数:181 分类:Python

本文展示了如何创建您的 Django 网站,为公开发布做好准备,如何设置 ALLOWED_HOSTS 以及如何在使用 Django 进行 Web 部署期间修复预期的主要问题。

Django 中的 Select_related 方法

发布时间:2023/05/04 浏览次数:129 分类:Python

本文介绍了什么是查询集,如何处理这些查询以及我们如何利用 select_related() 方法来过滤 Django 中相关模型的查询。

在 Django 中上传媒体文件

发布时间:2023/05/04 浏览次数:198 分类:Python

在本文中,我们简要介绍了媒体文件以及如何在 Django 项目中操作媒体文件。

Django 返回 JSON

发布时间:2023/05/04 浏览次数:106 分类:Python

在与我们的讨论中,我们简要介绍了 JSON 格式,并讨论了如何借助 Django 中的 JsonResponse 类将数据返回为 JSON 格式。

在 Django 中创建对象

发布时间:2023/05/04 浏览次数:59 分类:Python

本文的目的是解释什么是模型以及如何使用 create() 方法创建对象,并了解如何在 Django 中使用 save() 方法。

在 Django 中为多项选择创建字段

发布时间:2023/05/04 浏览次数:75 分类:Python

在本文中,我们将着眼于为多项选择创建一个字段,并向您展示如何允许用户在 Django 中进行多项选择。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便