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中的实例方法、静态方法、类方法、类变量和实例变量浅析
Apr 26 Python
跟老齐学Python之复习if语句
Oct 02 Python
python实现excel读写数据
Mar 02 Python
Python 将Matrix、Dict保存到文件的方法
Oct 30 Python
Python使用crontab模块设置和清除定时任务操作详解
Apr 09 Python
python如何解析配置文件并应用到项目中
Jun 27 Python
Python Excel vlookup函数实现过程解析
Jun 22 Python
对python pandas中 inplace 参数的理解
Jun 27 Python
python代数式括号有效性检验示例代码
Oct 04 Python
Python操控mysql批量插入数据的实现方法
Oct 27 Python
Pandas对每个分组应用apply函数的实现
Dec 13 Python
python3中celery异步框架简单使用+守护进程方式启动
Jan 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
全国FM电台频率大全 - 25 云南省
2020/03/11 无线电
中国的第一台收音机
2021/03/01 无线电
一个阿拉伯数字转中文数字的函数
2006/10/09 PHP
PHP语言中global和$GLOBALS[]的分析 之二
2012/02/02 PHP
PHP以及MYSQL日期比较方法
2012/11/29 PHP
php中限制ip段访问、禁止ip提交表单的代码分享
2014/08/22 PHP
PHP中使用循环实现的金字塔图形
2014/11/08 PHP
ECSHOP完美解决Deprecated: preg_replace()报错的问题
2016/05/17 PHP
Laravel 错误提示本地化的实现
2019/10/22 PHP
让getElementsByName适应IE和firefox的方法
2007/09/24 Javascript
jquery仿QQ商城带左右按钮控制焦点图片切换滚动效果
2013/06/27 Javascript
jquery监听div内容的变化具体实现思路
2013/11/04 Javascript
JavaScript的常见兼容问题及相关解决方法(chrome/IE/firefox)
2013/12/31 Javascript
jquery实现非叠加式的搜索框提示效果
2014/01/07 Javascript
动态添加option及createElement使用示例
2014/01/26 Javascript
jquery 页面滚动到底部自动加载插件集合
2014/01/31 Javascript
javascript单页面手势滑屏切换原理详解
2016/03/21 Javascript
简单实现js倒计时功能
2017/02/13 Javascript
使用Node.js实现ORM的一种思路详解(图文)
2017/10/24 Javascript
vue中的计算属性的使用和vue实例的方法示例
2017/12/04 Javascript
解决使用Vue.js显示数据的时,页面闪现原始代码的问题
2018/02/11 Javascript
详解从Vue-router到html5的pushState
2018/07/21 Javascript
socket在egg中的使用实例代码详解
2019/05/30 Javascript
Python3.4学习笔记之常用操作符,条件分支和循环用法示例
2019/03/01 Python
Python3中列表list合并的四种方法
2019/04/19 Python
Keras设置以及获取权重的实现
2020/06/19 Python
Pycharm的Available Packages为空的解决方法
2020/09/18 Python
一文彻底解决HTML5页面中长按保存图片功能
2019/06/10 HTML / CSS
美国知名的网上鞋类及相关服装零售商:Shoes.com
2017/05/06 全球购物
Smilodox官方运动服装店:从运动服到健身配件
2020/08/27 全球购物
交通法规咨询中心工作职责
2013/11/27 职场文书
应用英语专业自荐信
2014/01/26 职场文书
驾驶员岗位职责
2014/01/29 职场文书
洗车工岗位职责
2014/03/15 职场文书
婚纱摄影师求职信范文
2014/04/17 职场文书
python3实现常见的排序算法(示例代码)
2021/07/04 Python