在 Matplotlib 中绘制日期
时间序列图使用自回归综合移动平均值等统计方法传达属性值如何随时间变化。
我们可以根据其产品先前销售的历史时间序列数据可靠地预测或预测特定零售产品的需求。
本文将演示如何使用 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 中使用 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()
输出:
相关文章
Django 中的 Slug
发布时间:2023/05/04 浏览次数:173 分类:Python
-
本篇文章旨在定义一个 slug 以及我们如何使用 slug 字段在 Python 中使用 Django 获得独特的帖子。
在 Django 中按降序过滤查询集中的项目
发布时间:2023/05/04 浏览次数:157 分类:Python
-
在这个讲解中,学习如何借助 Django 中的 order_by() 方法按降序过滤出查询集中的项目。
Django ALLOWED_HOSTS 介绍
发布时间:2023/05/04 浏览次数:181 分类:Python
-
本文展示了如何创建您的 Django 网站,为公开发布做好准备,如何设置 ALLOWED_HOSTS 以及如何在使用 Django 进行 Web 部署期间修复预期的主要问题。
Django 中的 Select_related 方法
发布时间:2023/05/04 浏览次数:129 分类:Python
-
本文介绍了什么是查询集,如何处理这些查询以及我们如何利用 select_related() 方法来过滤 Django 中相关模型的查询。
使用 Post 请求将数据发送到 Django 服务器
发布时间:2023/05/04 浏览次数:159 分类:Python
-
在这篇关于Django的讲解中,我们简要介绍了post和get请求以及如何在Django中用post实现CSRF token。
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 中进行多项选择。