用python画时序图源代码_python matplotlib模块: plot_date(时序图)

本文介绍了如何使用Python的matplotlib库绘制时序图,包括设置线条样式、自定义横轴日期格式以及自动和手动格式化横轴显示。示例代码展示了从CSV文件读取数据,按日期排序后绘制股票价格时序图的过程。
部署运行你感兴趣的模型镜像

需要注意的是plot_date默认的linestyle是‘ ’, 也就是空, 不改变这个参数的话我们绘制出来的图形看上去就像散点图, 将linestyle这个参数设置成实线后:

a1a7b1bcc623

image.png

我们使用gca 和 gcf 方法 分别获取plt对象当前的 轴线(axes)和 特征(figure), 然后可以通过这两个对象分贝设置我们需要绘制的图象的某些特征。

自定义横轴日期格式:

a1a7b1bcc623

image.png

自动格式化横轴显示的格式:

a1a7b1bcc623

image.png

a1a7b1bcc623

image.png

源码:

# coding=utf-8

import pandas as pd

from datetime import datetime, timedelta

from matplotlib import pyplot as plt

from matplotlib import dates as mpl_dates

# 使用seaborn风格

plt.style.use('seaborn')

'''

# 创建datetime对象列表, 用来表示点在横轴上的位置和标签

dates = [

datetime(2019, 5, 24),

datetime(2019, 5, 25),

datetime(2019, 5, 26),

datetime(2019, 5, 27),

datetime(2019, 5, 28),

datetime(2019, 5, 29),

datetime(2019, 5, 30)

]

# 表示竖轴上的位置和标签, 数量必须和横轴上的日期数量对应上

y = [0, 1, 3, 4, 6, 5, 7]

# 默认的linestyle是无, 也就是所有的点看上去像散点, 我们手动设置成实线

plt.plot_date(dates, y, linestyle='-')

'''

# 利用pandas快速读取数据集csv中的所有数据

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

# 取出数据集中所有列名为Date的数据, 并将其格式转化成标准的datetime格式:XXXX-XX-XX

data['Date'] = pd.to_datetime(data['Date'])

# 根据数据集的Date列对所有数据进行原地的排序(inplace=True并且排序的key是Date列的数据 默认是从小到大)

data.sort_values('Date', inplace=True)

# 取出排序后的所有日期和每日的价格指标

price_date = data['Date']

price_close = data['Close']

# 利用plot_date绘制时序图,横坐标是每日的时间,纵坐标是每日的价格,点与点之间通过实线连接

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

# plt对象的gcf方法全称: get current figure: 获得当前plt对象所绘制图形的所有特征, 并且可以利用这个对象来改变某些特征

# 这里我们进行的改变是使得横轴的日期能够自动格式化(更美观): fmt: format(格式化)

plt.gcf().autofmt_xdate()

# 如果我们想使用其他风格的格式化时间, 我们可以使用matplotlib包下面的dates模块(有一点复杂)

# mpl_dates模块下的DateFormatter类接受实例化参数是一个datetime 格式化字符串, 在这里简单说下: %b 表示月份, %d表示日期, %Y表示年份

date_format = mpl_dates.DateFormatter('%b, %d %Y')

# plt对象的gca方法: get current axes(其实也就是获取当前正在绘制的图形的实例[因为一个figure可以绘制多个实例]),\

# 我们将当前axes对象的横轴(x- axis[轴])改变风格, 传进去的参数是前面获取的格式化日期, 即可.

plt.gca().xaxis.set_major_formatter(date_format)

plt.title('First time series')

plt.xlabel('Date')

plt.ylabel('Price')

plt.tight_layout()

plt.show()

结果:

a1a7b1bcc623

image.png

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值