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 代码效率的方法
Jul 03 Python
wxPython事件驱动实例详解
Sep 28 Python
python过滤字符串中不属于指定集合中字符的类实例
Jun 30 Python
Python实现可自定义大小的截屏功能
Jan 20 Python
Python实现输入二叉树的先序和中序遍历,再输出后序遍历操作示例
Jul 27 Python
Python爬虫爬取新浪微博内容示例【基于代理IP】
Aug 03 Python
解决项目pycharm能运行,在终端却无法运行的问题
Jan 19 Python
[机器视觉]使用python自动识别验证码详解
May 16 Python
Pytorch Tensor基本数学运算详解
Dec 30 Python
浅析NumPy 切片和索引
Sep 02 Python
详解python对象之间的交互
Sep 29 Python
python数字转对应中文的方法总结
Aug 02 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
外媒评选出10支2020年最受欢迎的Dota2战队
2021/03/05 DOTA
php引用计数器进行垃圾收集机制介绍
2012/09/19 PHP
js限制checkbox勾选的个数以及php获取多个checkbbox的方法深入解析
2013/07/18 PHP
PHP小技巧之JS和CSS优化工具Minify的使用方法
2014/05/19 PHP
PHP实现的权重算法示例【可用于游戏根据权限来随机物品】
2019/02/15 PHP
兼容多浏览器的字幕特效Marquee的通用js类
2008/07/20 Javascript
jquery 学习笔记一
2010/04/07 Javascript
js 禁止选择功能实现代码(兼容IE/Firefox)
2010/04/23 Javascript
jquery.autocomplete修改实现键盘上下键自动填充示例
2013/11/19 Javascript
javascript操作符"!~"详解
2015/02/10 Javascript
js使用split函数按照多个字符对字符串进行分割的方法
2015/03/20 Javascript
javascript实现图片自动和可控的轮播切换特效
2015/04/13 Javascript
jQuery插件开发精品教程(让你的jQuery更上一个台阶)
2015/11/07 Javascript
全面解析Bootstrap弹窗的实现方法
2015/12/01 Javascript
JavaScript组件开发完整示例
2015/12/15 Javascript
vue-cli3.0使用及部分配置详解
2018/08/29 Javascript
vue侧边栏动态生成下级菜单的方法
2018/09/07 Javascript
JavaScript实现简单音乐播放器
2020/04/17 Javascript
启动targetcli时遇到错误解决办法
2017/10/26 Python
Python with语句上下文管理器两种实现方法分析
2018/02/09 Python
Python爬豆瓣电影实例
2018/02/23 Python
python自动化报告的输出用例详解
2018/05/30 Python
Python常见排序操作示例【字典、列表、指定元素等】
2018/08/15 Python
Python实现快速排序的方法详解
2019/10/25 Python
jupyter notebook 多环境conda kernel配置方式
2020/04/10 Python
Python 合并拼接字符串的方法
2020/07/28 Python
澳大利亚墨尔本的在线时装店:LORETA
2018/09/14 全球购物
先进工作者获奖感言
2014/02/08 职场文书
预备党员综合考察材料
2014/05/31 职场文书
2015年化妆品销售工作总结
2015/05/11 职场文书
2015大学迎新晚会主持词
2015/07/16 职场文书
2016年社区中秋节活动总结
2016/04/05 职场文书
解决numpy数组互换两行及赋值的问题
2021/04/17 Python
Python OpenCV形态学运算示例详解
2022/04/07 Python
电脑关机速度很慢怎么办 提升电脑关机速度设置教程
2022/04/08 数码科技
CSS文本阴影 text-shadow 悬停效果详解
2022/05/25 HTML / CSS