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迭代用法实例教程
Sep 08 Python
Python的ORM框架中SQLAlchemy库的查询操作的教程
Apr 25 Python
在Django的视图中使用数据库查询的方法
Jul 16 Python
python删除文本中行数标签的方法
May 31 Python
python 中字典嵌套列表的方法
Jul 03 Python
python输出100以内的质数与合数实例代码
Jul 08 Python
python实现全盘扫描搜索功能的方法
Feb 14 Python
VPS CENTOS 上配置python,mysql,nginx,uwsgi,django的方法详解
Jul 01 Python
在django中form的label和verbose name的区别说明
May 20 Python
Tensorflow tensor 数学运算和逻辑运算方式
Jun 30 Python
Pytorch 图像变换函数集合小结
Feb 01 Python
python3 实现mysql数据库连接池的示例代码
Apr 17 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 xml留言板 xml存储数据的简单例子
2009/08/24 PHP
PHP序列号生成函数和字符串替换函数代码
2012/06/07 PHP
PHP上传图片类显示缩略图功能
2016/06/30 PHP
PHP实现的解汉诺塔问题算法示例
2018/08/06 PHP
PHP文件操作实例总结【文件上传、下载、分页】
2018/12/08 PHP
扩展JavaScript功能的正确方法(译文)
2012/04/12 Javascript
js利用事件的阻止冒泡实现点击空白模态框的隐藏
2014/01/24 Javascript
文本框倒叙输入让输入框的焦点始终在最开始的位置
2014/09/01 Javascript
EasyUI,点击开启编辑框,并且编辑框获得焦点的方法
2015/03/01 Javascript
JavaScript中实现Map的示例代码
2015/09/09 Javascript
JS克隆,属性,数组,对象,函数实例分析
2016/11/26 Javascript
AngularJS 限定$scope的范围实例详解
2017/06/23 Javascript
jQuery DOM节点的遍历方法小结
2017/08/15 jQuery
微信小程序 获取javascript 里的数据
2017/08/17 Javascript
基于js粘贴事件paste简单解析以及遇到的坑
2017/09/07 Javascript
javascript回调函数详解
2018/02/06 Javascript
在JavaScript中如何访问暂未存在的嵌套对象
2019/06/18 Javascript
ES6 Generator函数的应用实例分析
2019/06/26 Javascript
js定时器出现第一次延迟的原因及解决方法
2021/01/04 Javascript
[01:03:27]Optic vs VGJ.S 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
Python读取环境变量的方法和自定义类分享
2014/11/22 Python
在cmder下安装ipython以及环境的搭建
2018/10/19 Python
pytorch 模拟关系拟合——回归实例
2020/01/14 Python
Python面向对象程序设计之静态方法、类方法、属性方法原理与用法分析
2020/03/23 Python
css3动画效果抖动解决方法
2018/09/03 HTML / CSS
Anya Hindmarch官网:奢侈设计师手袋及配饰
2018/11/15 全球购物
JSF面试题:Jsf中导航的标签是什么
2013/04/20 面试题
中学实习教师自我鉴定
2013/12/12 职场文书
一年级学生期末评语
2014/04/21 职场文书
白血病募捐倡议书
2014/05/14 职场文书
企业诚信承诺书
2014/05/23 职场文书
新农村建设汇报材料
2014/08/15 职场文书
学习三严三实对照检查材料思想汇报
2014/09/22 职场文书
新闻人物通讯稿
2014/10/09 职场文书
2015年行政工作总结范文
2015/04/09 职场文书
golang实现浏览器导出excel文件功能
2022/03/25 Golang