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 相关文章推荐
在Django的session中使用User对象的方法
Jul 23 Python
Python字符串转换成浮点数函数分享
Jul 24 Python
Python元组及文件核心对象类型详解
Feb 11 Python
python使用Flask操作mysql实现登录功能
May 14 Python
详解flask表单提交的两种方式
Jul 21 Python
解决pyinstaller打包发布后的exe文件打开控制台闪退的问题
Jun 21 Python
python画环形图的方法
Mar 25 Python
Python Pandas 对列/行进行选择,增加,删除操作
May 17 Python
基于Python pyecharts实现多种图例代码解析
Aug 10 Python
工程师必须了解的LRU缓存淘汰算法以及python实现过程
Oct 15 Python
python selenium 获取接口数据的实现
Dec 07 Python
python画条形图的具体代码
Apr 20 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 数组遍历顺序理解
2009/09/09 PHP
php实现搜索一维数组元素并删除二维数组对应元素的方法
2015/07/06 PHP
CodeIgniter开发实现支付宝接口调用的方法示例
2016/11/14 PHP
PHP面向对象中new self()与 new static()的区别浅析
2017/08/17 PHP
Laravel如何自定义command命令浅析
2019/03/23 PHP
javascript 一段左右两边随屏滚动的代码
2009/06/18 Javascript
jquery关于页面焦点的定位(文本框获取焦点时改变样式 )
2010/09/10 Javascript
jquery 表格排序、实时搜索表格内容(附图)
2014/05/19 Javascript
node.js中的favicon.ico请求问题处理
2014/12/15 Javascript
Javascript基础教程之关键字和保留字汇总
2015/01/18 Javascript
简单谈谈javascript代码复用模式
2015/01/28 Javascript
nodejs爬虫抓取数据乱码问题总结
2015/07/03 NodeJs
Hammer.js+轮播原理实现简洁的滑屏功能
2016/02/02 Javascript
jQuery实现为LI列表前3行设置样式的方法【2种方法】
2016/09/04 Javascript
浅谈html转义及防止javascript注入攻击的方法
2016/12/04 Javascript
微信小程序 跳转方式总结
2017/04/20 Javascript
JavaScript 获取元素在父节点中的下标(推荐)
2017/06/28 Javascript
Vue中mintui的field实现blur和focus事件的方法
2018/08/25 Javascript
区别JavaScript函数声明与变量声明
2018/09/12 Javascript
javascrit中undefined和null的区别详解
2019/04/07 Javascript
jquery实现图片无缝滚动 蒙版遮蔽效果
2020/01/11 jQuery
[35:29]Secret vs VG 2018国际邀请赛淘汰赛BO3 第三场 8.23
2018/08/24 DOTA
Python的MongoDB模块PyMongo操作方法集锦
2016/01/05 Python
Python中时间datetime的处理与转换用法总结
2019/02/18 Python
HTML5的语法变化介绍
2013/08/13 HTML / CSS
HTML5+Canvas+CSS3实现齐天大圣孙悟空腾云驾雾效果
2016/04/26 HTML / CSS
ECCO爱步美国官网:来自丹麦的鞋履品牌
2016/11/23 全球购物
捷克厨房用品购物网站:Tescoma
2018/07/13 全球购物
正宗的日本零食和糖果订阅盒:Bokksu
2019/11/21 全球购物
网络工程与软件技术毕业生自荐信
2013/09/24 职场文书
关爱留守儿童标语
2014/06/18 职场文书
全国法制宣传日活动总结
2015/05/05 职场文书
2015年安置帮教工作总结
2015/05/22 职场文书
丧事酒宴答谢词
2015/09/30 职场文书
Go语言实现Snowflake雪花算法
2021/06/08 Golang