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 Socket编程入门教程
Jul 11 Python
python实现list元素按关键字相加减的方法示例
Jun 09 Python
Python 实现某个功能每隔一段时间被执行一次的功能方法
Oct 14 Python
django+mysql的使用示例
Nov 23 Python
Python 网络编程之UDP发送接收数据功能示例【基于socket套接字】
Oct 11 Python
python实现梯度法 python最速下降法
Mar 24 Python
Selenium常见异常解析及解决方案示范
Apr 10 Python
Django 解决上传文件时,request.FILES为空的问题
May 20 Python
Python基于pandas绘制散点图矩阵代码实例
Jun 04 Python
python开发入门——set的使用
Sep 03 Python
python安装第三方库如xlrd的方法
Oct 31 Python
Python序列化与反序列化相关知识总结
Jun 08 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
多文件上载系统完整版
2006/10/09 PHP
PHP测试成功的邮件发送案例
2015/10/26 PHP
PHP中substr_count()函数获取子字符串出现次数的方法
2016/01/07 PHP
smarty的section嵌套循环用法示例
2016/05/28 PHP
PHP中include和require的区别实例分析
2017/05/07 PHP
jQuery Dialog 弹出层对话框插件
2010/08/09 Javascript
innerHTML与jquery里的html()区别介绍
2012/10/12 Javascript
jquery 操作iframe的几种方法总结
2013/12/13 Javascript
jQuery中slideUp()方法用法分析
2014/12/24 Javascript
NodeJS学习笔记之(Url,QueryString,Path)模块
2015/01/13 NodeJs
jQuery 1.9.1源码分析系列(十)事件系统之绑定事件
2015/11/19 Javascript
JS设置下拉列表框当前所选值的方法
2015/12/22 Javascript
jquery ui dialog替代confirm实例分析
2016/01/25 Javascript
node.js使用cluster实现多进程
2016/03/17 Javascript
jQuery控制li上下循环滚动插件用法实例(附demo源码下载)
2016/05/28 Javascript
AngularJS入门教程之ng-checked 指令详解
2016/08/01 Javascript
js实现图片缓慢放大缩小效果
2016/08/02 Javascript
浅谈jquery高级方法描述与应用
2016/10/04 Javascript
基于Vue实现拖拽功能
2020/07/29 Javascript
微信小程序API—获取定位的详解
2019/04/30 Javascript
详解从vue-loader源码分析CSS Scoped的实现
2019/09/23 Javascript
Python随机生成信用卡卡号的实现方法
2015/05/14 Python
Python实现身份证号码解析
2015/09/01 Python
Python的Asyncore异步Socket模块及实现端口转发的例子
2016/06/14 Python
VTK与Python实现机械臂三维模型可视化详解
2017/12/13 Python
python socket 聊天室实例代码详解
2019/11/14 Python
Python pandas库中的isnull()详解
2019/12/26 Python
HTML5几个设计和修改的页面范例分享
2015/09/29 HTML / CSS
香港家用健身器材、运动器材及健康美容仪器专门店:FitBoxx
2019/12/05 全球购物
德国在线香料制造商:Gewürzland
2020/03/10 全球购物
市政施工员自我鉴定
2014/01/15 职场文书
小学毕业感言500字
2014/02/28 职场文书
庆七一晚会主持词
2015/06/30 职场文书
网吧管理制度范本
2015/08/05 职场文书
《水浒传》读后感3篇(范文)
2019/09/19 职场文书
Win11怎么把合并的任务栏分开 Win11任务栏合并分开教程
2022/04/06 数码科技