matplotlib命令与格式之tick坐标轴日期格式(设置日期主副刻度)


Posted in Python onAugust 06, 2019

1.横坐标设置时间格式

import matplotlib.pyplot as plt
import matplotlib.dates as mdates
# 配置横坐标为日期格式
plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%Y/%m/%d'))
plt.gca().xaxis.set_major_locator(mdates.DayLocator())

例子:

from datetime import datetime
import matplotlib.dates as mdates
import matplotlib.pyplot as plt
# 生成横纵坐标信息
dates = ['01/02/1991', '01/03/1991', '01/04/1991']
xs = [datetime.strptime(d, '%m/%d/%Y').date() for d in dates]
ys = range(len(xs))
# 配置横坐标
plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%m/%d/%Y'))
plt.gca().xaxis.set_major_locator(mdates.DayLocator())
# Plot
plt.plot(xs, ys)
plt.gcf().autofmt_xdate() # 自动旋转日期标记
plt.show()

2.设置日期坐标轴主副刻度值

所有坐标轴日期格式类型

MinuteLocator: locate minutes(f)

HourLocator: locate hours

DayLocator: locate specified days of the month

WeekdayLocator: Locate days of the week, e.g., MO, TU

MonthLocator: locate months, e.g., 7 for july

YearLocator: locate years that are multiples of base

RRuleLocator: locate using a matplotlib.dates.rrulewrapper. The rrulewrapper is a simple wrapper around adateutil.rrule (dateutil) which allow almost arbitrary date tick specifications. See rrule example.

AutoDateLocator: On autoscale, this class picks the best MultipleDateLocator to set the view limits and the tick locations.

(1)获取坐标轴日期格式类型

from matplotlib.dates import DateFormatter, WeekdayLocator, DayLocator, MONDAY,YEARLY
#获取每月一日数据
monthdays = MonthLocator()
#获取每周一的日期数据
mondays = WeekdayLocator(MONDAY)
#获取每日数据
alldays = DayLocator()
# import constants for the days of the week
from matplotlib.dates import MO, TU, WE, TH, FR, SA, SU
# tick on mondays every week
loc = WeekdayLocator(byweekday=MO, tz=tz)
# tick on mondays and saturdays
loc = WeekdayLocator(byweekday=(MO, SA))
# tick on mondays every second week
loc = WeekdayLocator(byweekday=MO, interval=2)
# tick every 5th easter(每隔5个选1个)
rule = rrulewrapper(YEARLY, byeaster=1, interval=5)
loc = RRuleLocator(rule)

(2)设置坐标轴日期格式

#设置主副刻度
ax.xaxis.set_major_locator(mondays)ax.xaxis.set_minor_locator(alldays)
#设置坐标轴刻度标签格式
mondayFormatter = DateFormatter('%Y-%m-%d') # 如:2-29-2015dayFormatter = DateFormatter('%d') # 如:12ax.xaxis.set_major_formatter(mondayFormatter)
#字符串旋转
for label in ax1.get_xticklabels(): label.set_rotation(30) label.set_horizontalalignment('right')

(3)例子

import matplotlib.pyplot as plt
import matplotlib.dates as mdates
from datetime import datetime
 
#销售数据
dates=[20171101,20171102,20171103,20171104]
sales=[102.1,100.6,849,682]
#将dates改成日期格式
x= [datetime.strptime(str(d), '%Y%m%d').date() for d in dates]
 
#figure布局
fig=plt.figure(figsize=(8,4))
ax1=fig.add_subplot(1,1,1) 
#绘图
ax1.plot(x,y,ls='--',lw=3,color='b',marker='o',ms=6, mec='r',mew=2, mfc='w',label='业绩趋势走向')
plt.gcf().autofmt_xdate() # 自动旋转日期标记
 
#设置x轴主刻度格式
alldays = mdates.DayLocator()        #主刻度为每天
ax1.xaxis.set_major_locator(alldays)     #设置主刻度
ax1.xaxis.set_major_formatter(mdates.DateFormatter('%Y%m%d')) 
#设置副刻度格式
hoursLoc = mpl.dates.HourLocator(interval=6) #为6小时为1副刻度
ax1.xaxis.set_minor_locator(hoursLoc)
ax1.xaxis.set_minor_formatter(mdates.DateFormatter('%H'))
#参数pad用于设置刻度线与标签间的距离
ax1.tick_params(pad=10)
 
#显示图像
plt.show()

matplotlib命令与格式之tick坐标轴日期格式(设置日期主副刻度)

3.设置日期时间刻度值

import matplotlib.pyplot as plt
import numpy as np
import matplotlib as mpl
import datetime as dt
 
fig = plt.figure()
ax2 = fig.add_subplot(212)
date2_1 = dt.datetime(2008,9,23)
date2_2 = dt.datetime(2008,10,3)
delta2 = dt.timedelta(days=1)
dates2 = mpl.dates.drange(date2_1, date2_2, delta2)
y2 = np.random.rand(len(dates2))
ax2.plot_date(dates2, y2, linestyle='-')
dateFmt = mpl.dates.DateFormatter('%Y-%m-%d')
ax2.xaxis.set_major_formatter(dateFmt)
 
daysLoc = mpl.dates.DayLocator()
hoursLoc = mpl.dates.HourLocator(interval=6)
ax2.xaxis.set_major_locator(daysLoc)
ax2.xaxis.set_minor_locator(hoursLoc)
 
fig.autofmt_xdate(bottom=0.18)
fig.subplots_adjust(left=0.18)
 
ax1 = fig.add_subplot(211)
date1_1 = dt.datetime(2008, 9, 23)
date1_2 = dt.datetime(2009, 2, 16)
delta1 = dt.timedelta(days=10)
dates1 = mpl.dates.drange(date1_1, date1_2, delta1)
y1 = np.random.rand(len(dates1))
ax1.plot_date(dates1, y1, linestyle='--')
monthsLoc = mpl.dates.MonthLocator()
weeksLoc = mpl.dates.WeekdayLocator()
ax1.xaxis.set_major_locator(monthsLoc)
ax1.xaxis.set_minor_locator(weeksLoc)
monthsFmt = mpl.dates.DateFormatter('%b')
ax1.xaxis.set_major_formatter(monthsFmt)
 
plt.show()

matplotlib命令与格式之tick坐标轴日期格式(设置日期主副刻度)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python递归遍历列表及输出的实现方法
May 19 Python
Python中with及contextlib的用法详解
Jun 08 Python
Python简单实现阿拉伯数字和罗马数字的互相转换功能示例
Apr 17 Python
python实现简单登陆系统
Oct 18 Python
Numpy截取指定范围内的数据方法
Nov 14 Python
pytorch使用Variable实现线性回归
May 21 Python
解决python xx.py文件点击完之后一闪而过的问题
Jun 24 Python
Django框架中序列化和反序列化的例子
Aug 06 Python
pip 安装库比较慢的解决方法(国内镜像)
Oct 06 Python
Python3实现监控新型冠状病毒肺炎疫情的示例代码
Feb 13 Python
Python 实现敏感目录扫描的示例代码
May 21 Python
Python matplotlib安装以及实现简单曲线的绘制
Apr 26 Python
python+openCV调用摄像头拍摄和处理图片的实现
Aug 06 #Python
对Django 转发和重定向的实例详解
Aug 06 #Python
django 环境变量配置过程详解
Aug 06 #Python
PyQt5基本控件使用之消息弹出、用户输入、文件对话框的使用方法
Aug 06 #Python
如何在Django配置文件里配置session链接
Aug 06 #Python
在django中,关于session的通用设置方法
Aug 06 #Python
Django 对象关系映射(ORM)源码详解
Aug 06 #Python
You might like
php 生成WML页面方法详解
2009/08/09 PHP
探讨如何把session存入数据库
2013/06/07 PHP
在win7中搭建Linux+PHP 开发环境
2014/10/08 PHP
php批量删除cookie的简单实现方法
2015/01/26 PHP
php pdo连接数据库操作示例
2019/11/18 PHP
jQuery数据缓存功能的实现思路及简单模拟
2013/05/27 Javascript
Js日期选择器并自动加入到输入框中示例代码
2013/08/02 Javascript
基于jquery的手风琴图片展示效果实现方法
2014/12/16 Javascript
使用JavaScript链式编程实现模拟Jquery函数
2014/12/21 Javascript
浅析Node.js的Stream模块中的Readable对象
2015/07/29 Javascript
jQuery对象的链式操作用法分析
2016/05/10 Javascript
浅谈jQuery效果函数
2016/09/16 Javascript
jQuery实现Select下拉列表进行状态选择功能
2017/03/30 jQuery
深入理解vuex2.0 之 modules
2017/11/20 Javascript
解决vue打包项目后刷新404的问题
2018/03/06 Javascript
详解小程序缓存插件(mrc)
2018/08/17 Javascript
微信小程序页面间值传递的两种方法
2018/11/26 Javascript
React 实现拖拽功能的示例代码
2019/01/06 Javascript
从0到1搭建Element的后台框架的方法步骤
2019/04/10 Javascript
微信小程序自定义纯净模态框(弹出框)的实例代码
2020/03/09 Javascript
解决vue路由name同名,路由重复的问题
2020/08/05 Javascript
js实现简单的随机点名器
2020/09/17 Javascript
[59:35]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#1COL VS Alliance第二局
2016/03/04 DOTA
简单介绍Python中的RSS处理
2015/04/13 Python
举例讲解Python的Tornado框架实现数据可视化的教程
2015/05/02 Python
Python高斯消除矩阵
2019/01/02 Python
Django框架基础模板标签与filter使用方法详解
2019/07/23 Python
Pytho爬虫中Requests设置请求头Headers的方法
2020/09/22 Python
单位门卫岗位职责
2013/12/20 职场文书
DIY手工制作经营店创业计划书
2014/02/01 职场文书
《静夜思》教学反思
2016/02/17 职场文书
2016年“6.26”禁毒宣传月系列活动总结
2016/04/05 职场文书
2019最新激励员工口号大全!
2019/06/28 职场文书
python文件名批量重命名脚本实例代码
2021/04/22 Python
Python快速优雅的批量修改Word文档样式
2021/05/20 Python
详解OpenCV曝光融合
2022/04/29 Python