matplotlib polt 使用日期作为横坐标轴
一般来说,matplotlib polt 得坐标轴都是 数值, 画折线时,坐标点是在直角坐标系中。
但我们展示可视化结果时经常需要用到日期作为横坐标轴。
比如以下数据,如果直接把日期作为Xdata , 会出现一个 类似这样得错误
ValueError: could not convert string to float: '2020-02-05'
源数据是一个Excel 文件(KMI.xls) , 大概如此:
综合 | 服务 | 制造业 | ||||||
2021-10-08 | 51.4 | 2021-10-08 | 53.4 | 2021-09-30 | 50 | |||
2021-09-03 | 47.2 | 2021-09-03 | 46.7 | 2021-09-01 | 49.2 | |||
2021-08-04 | 53.1 | 2021-08-04 | 54.9 | 2021-08-02 | 50.3 | |||
2021-07-05 | 50.6 | 2021-07-05 | 50.3 | 2021-07-01 | 51.3 | |||
2021-06-03 | 53.8 | 2021-06-03 | 55.1 | 2021-06-01 | 52 | |||
2021-05-07 | 54.7 | 2021-05-07 | 56.3 | 2021-04-30 | 51.9 | |||
2021-04-06 | 53.1 | 2021-04-06 | 54.3 | 2021-04-01 | 50.6 | |||
2021-03-03 | 51.7 | 2021-03-03 | 51.5 | 2021-03-01 | 50.9 | |||
2021-02-03 | 52.2 | 2021-02-03 | 52 | 2021-02-01 | 51.5 | |||
2021-01-06 | 55.8 | 2021-01-06 | 56.3 | 2021-01-04 | 53 | |||
2020-12-03 | 57.5 | 2020-12-03 | 57.8 | 2020-12-01 | 54.9 | |||
2020-11-04 | 55.7 | 2020-11-04 | 56.8 | 2020-11-02 | 53.6 | |||
2020-10-09 | 54.5 | 2020-10-09 | 54.8 | 2020-09-30 | 53 | |||
2020-09-03 | 55.1 | 2020-09-03 | 54 | 2020-09-01 | 53.1 | |||
2020-08-05 | 54.5 | 2020-08-05 | 54.1 | 2020-08-03 | 52.8 | |||
2020-06-03 | 54.5 | 2020-06-03 | 55 | 2020-07-01 | 51.2 | |||
2020-05-07 | 47.6 | 2020-05-07 | 44.4 | 2020-06-01 | 50.7 | |||
2020-04-03 | 46.7 | 2020-04-03 | 43 | 2020-04-30 | 49.4 | |||
2020-03-04 | 27.5 | 2020-03-04 | 26.5 | 2020-04-01 | 50.1 | |||
2020-02-05 | 51.9 | 2020-02-05 | 51.8 | 2020-03-02 | 40.3 |
实现代码如下
# encoding: utf-8
"""
@author: 陈年椰子
@contact: hndm@qq.com
@version: 1.0
@project:test
@file: KMI_plot.py
@time: 2021-12-13 14:11说明
"""
import pandas as pd
import matplotlib.dates as mdates
import matplotlib.pyplot as plt# 为日期转换做准备
from pandas.plotting import register_matplotlib_converters
register_matplotlib_converters()# 读取数据 修改字段名,选择6列数据
KMI_col = ['zh_d','k1','zh','fw_d','k2','fw','zz_d','k3','zz']
df1 = pd.read_excel("KMI.xls", names = KMI_col)
# print(df1.head())
df2 = df1[['zh_d','zh','fw_d','fw','zz_d','zz']]
print(df2.head())# 准备画布
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)# 获取日期列表
x = pd.to_datetime(df1['zh_d'])
y = pd.to_datetime(df1['fw_d'])
z = pd.to_datetime(df1['zz_d'])# 画折线
ax.plot(x, df1['zh'], color='tab:blue')
ax.plot(y, df1['fw'], color='tab:orange')
ax.plot(z, df1['zz'], color='tab:green')#设置月定位符 , 按季度显示,否则太挤了
ax.xaxis.set_major_locator(mdates.MonthLocator(interval=3)) # interval = 3 季度#设置日期的格式
ax.xaxis.set_major_formatter(mdates.DateFormatter('%Y%m'))# 显示
plt.show()
matplotlib polt 使用日期作为横坐标轴相关推荐
- Matplotlib设置坐标轴日期格式
Matplotlib设置坐标轴日期格式 绘制双坐标轴 ax2=ax1.twinx() 创建了一个独立的Y轴,共享了X轴.双坐标轴! 类似的还有twiny() 设置坐标轴日期格式 需要导入matplot ...
- python matplotlib x轴日期显示问题。matplotlib 坐标轴设置文本间隔,matplotlib 坐标轴过于密集、无法实现其他功能。
笔者想要达成的目的:分区作图.日期坐标轴 笔者遇到的问题: 1.日期坐标轴变成一个大黑条: 2.按照其他帖子设置后,要么调整不成功,要么调整成功了但是其他的调整(包括画面尺寸)失效,要么同时产生了一堆 ...
- 深入浅出matplotlib(74): 股票数据按日期显示
前面已经学习Matplotlib在坐标格式化显示日期,这里再次来学习一下日期显示,因为股票的数据都是以交易日期为主轴的数据,自然而然,日期就是股票数据显示的关键信息,无论进行单日比较,还是同期比较,都 ...
- Matplotlib(五)matplotlib基础用法
Matplotlib是一个综合的(comprehensive ).用于创建静态.动态和交互性可视化Python库.先来看看一个典型的使用这个库的一个例子: import matplotlib.pypl ...
- Matplotlib的一些基本概念
快速入门 这个教程包含了些基础的用法示例和练习,可以帮助您很快熟悉Matplotlib. import matplotlib as mpl import matplotlib.pyplot as pl ...
- python 坐标轴刻度_给妹子讲python-S02E08坐标轴与主次刻度
微信公众号: python数据科学家 [要点抢先看] 1.剖析plt和坐标轴对象ax的关系 2.主刻度与次刻度的概念 3.格式生成器与定位器的概念 4.数值型主次刻度与自定义格式生成器函数举例 5.日 ...
- Python股票分析系列——基础股票数据操作(二).p4
该系列视频已经搬运至bilibili: 点击查看 欢迎来到Python for Finance教程系列的第4部分.在本教程中,我们将基于Adj Close列创建烛台/ OHLC图,这将允许我介绍重新采 ...
- 05.序列模型 W3.序列模型和注意力机制(作业:机器翻译+触发词检测)
文章目录 作业1:机器翻译 1. 日期转换 1.1 数据集 2. 用注意力模型进行机器翻译 2.1 注意力机制 3. 可视化注意力 作业2:触发词检测 1. 数据合成:创建语音数据集 1.1 听一下数 ...
- python画k线图_Python绘制K线图
不管是对量化分析师还是普通的投资者来说,K线图(蜡烛图)都是一种很经典.很重要的工具.在K线图中,它会绘制每天的最高价.最低价.开盘价和收盘价,这对于我们理解股票的趋势以及每天的多空对比很有帮助. 一 ...
最新文章
- 有多少智能,就有多少人工?人工智能背后的数据标注师
- ubuntu创建新用户名和密码以及查看删除用户
- 在iis中注册.net framework
- Java构造函数的深入理解
- 复制含有随机指针节点的链表~哈希表的使用~(⌒▽⌒)
- django-cookie与session的应用场景
- canny算子_Canny边缘检测算法
- 何小鹏:雷军造车是我“怂恿的” 我一直建议小米要造车
- 敏捷开发一千零一问系列之九:总体架构什么时机进行?(上)
- 用python画图代码-【Matplotlib】利用Python进行绘图
- bzoj 3170: [Tjoi 2013]松鼠聚会
- 基于人脸识别实现课堂抬头率检测
- linux oracle client 安装,Instant Client 下载 适用于 Linux x86-64(64 位)
- 复旦大学高等数学学习网站
- 测试计划与测试方案区别
- 大家说说有必要免费建网站吗?
- spring cloud-熔断(六)
- WIFI限制敏感网页_秒杀同类“付费投屏”软件,完全免费无限制
- ubuntu美化--壁纸软件
- Linux的软件包封装格式有,RED HAT LINUX所提供的安装软件包,默认的打包格式为( )。...
热门文章
- 3D游戏编程实践——Priests and Devils(动作分离版)
- 读书有益——》言归正传:单田芳说单田芳
- nginx代理mysql数据库 stream
- Vue2 中 ?. 可选链式调用操作符出现的问题
- 从零开始搭建一个艺术风格(深度学习)转换ios app
- 在苹果手机html变大,iPhone手机屏幕变大了怎么办?iPhone设置屏幕缩放的方法
- 小程序如何制作和代理
- Python 实现四边形分割:用 Python 切割图片
- 安装时间大于30秒_新笑傲江湖手游牧羊度谷玩法即将上线,4月30日更新维护公告...
- 迅雷前CEO陈磊涉嫌职务侵占被调查,案由包括挪用公司数千万资金用于非法炒币