Matplotlib绘图双纵坐标轴设置及控制设置时间格式
双y轴坐标轴图
今天利用matplotlib绘图,想要完成一个双坐标格式的图。
fig=plt.figure(figsize=(20,15))
ax1=fig.add_subplot(111)
ax1.plot(demo0719['TPS'],'b-',label='TPS',linewidth=2)
ax2=ax1.twinx()#这是双坐标关键一步
ax2.plot(demo0719['successRate']*100,'r-',label='successRate',linewidth=2)
横坐标设置时间间隔
import matplotlib.dates as mdate
ax1.xaxis.set_major_formatter(mdate.DateFormatter('%Y-%m-%d %H:%M:%S'))#设置时间标签显示格式
plt.xticks(pd.date_range(demo0719.index[0],demo0719.index[-1],freq='1min'))
纵坐标设置显示百分比
import matplotlib.ticker as mtick
fmt='%.2f%%'
yticks = mtick.FormatStrFormatter(fmt)
ax2.yaxis.set_major_formatter(yticks)
知识点
在matplotlib中,整个图像为一个Figure对象。在Figure对象中可以包含一个,或者多个Axes对象。每个Axes对象都是一个拥有自己坐标系统的绘图区域。其逻辑关系如下:
一个Figure对应一张图片。
Title为标题。Axis为坐标轴,Label为坐标轴标注。Tick为刻度线,Tick Label为刻度注释。
Title为标题。Axis为坐标轴,Label为坐标轴标注。Tick为刻度线,Tick Label为刻度注释。

add_subplot()
官网matplotlib.pyplot.figure
pyplot.figure()是返回一个Figure对象的,也就是一张图片。
The Axes instance will be returned.
twinx()
ax = twinx()
create a twin of Axes for generating a plot with a sharex x-axis but independent y axis. The y-axis of self will have ticks on left and the returned axes will have ticks on the right.
意思就是,创建了一个独立的Y轴,共享了X轴。双坐标轴!
类似的还有twiny()
ax1.xaxis.set_major_formatter
Set the formatter of the major ticker
ACCEPTS: A Formatter instance
DateFormatter()
class matplotlib.dates.DateFormatter(fmt, tz=None)
这是一个类,创建一个时间格式的实例。
strftime方法(传入格式化字符串)。
strftime(dt, fmt=None)
Refer to documentation for datetime.strftime.
fmt is a strftime() format string.
FormatStrFormatter()
Use a new-style format string (as used by str.format()) to format the tick. The field formatting must be labeled x
定义字符串格式。
plt.xticks
# return locs, labels where locs is an array of tick locations and
# labels is an array of tick labels.
locs, labels = xticks()
# set the locations of the xticks
xticks( arange(6) )
# set the locations and labels of the xticks
xticks( arange(5), ('Tom', 'Dick', 'Harry', 'Sally', 'Sue') )
代码汇总
#coding:utf-8
import matplotlib.pyplot as plt
import matplotlib as mpl
import matplotlib.dates as mdate
import matplotlib.ticker as mtick
import numpy as np
import pandas as pd
import os
mpl.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
mpl.rcParams['axes.unicode_minus']=False #用来正常显示负号
mpl.rc('xtick', labelsize=20) #设置坐标轴刻度显示大小
mpl.rc('ytick', labelsize=20)
font_size=30
#matplotlib.rcParams.update({'font.size': 60})
%matplotlib inline
plt.style.use('ggplot')
data=pd.read_csv('simsendLogConvert_20160803094801.csv',index_col=0,encoding='gb2312',parse_dates=True)
columns_len=len(data.columns)
data_columns=data.columns
for x in range(0,columns_len,2):
print('第{}列'.format(x))
total=data.ix[:,x]
print('第{}列'.format(x+1))
successRate=(data.ix[:,x+1]/data.ix[:,x]).fillna(0)
yLeftLabel=data_columns[x]
yRightLable=data_columns[x+1]
print('------------------开始绘制类型{}曲线图------------------'.format(data_columns[x]))
fig=plt.figure(figsize=(25,20))
ax1=fig.add_subplot(111)
#绘制Total曲线图
ax1.plot(total,color='#4A7EBB',label=yLeftLabel,linewidth=4)
# 设置X轴的坐标刻度线显示间隔
ax1.xaxis.set_major_formatter(mdate.DateFormatter('%Y-%m-%d %H:%M:%S'))#设置时间标签显示格式
plt.xticks(pd.date_range(data.index[0],data.index[-1],freq='1min'))#时间间隔
plt.xticks(rotation=90)
#设置双坐标轴,右侧Y轴
ax2=ax1.twinx()
#设置右侧Y轴显示百分数
fmt='%.2f%%'
yticks = mtick.FormatStrFormatter(fmt)
# 绘制成功率图像
ax2.set_ylim(0,110)
ax2.plot(successRate*100,color='#BE4B48',label=yRightLable,linewidth=4)
ax2.yaxis.set_major_formatter(yticks)
ax1.set_xlabel('Time',fontsize=font_size)
ax1.set_ylabel(yLeftLabel,fontsize=font_size)
ax2.set_ylabel(yRightLable,fontsize=font_size)
legend1=ax1.legend(loc=(.02,.94),fontsize=16,shadow=True)
legend2=ax2.legend(loc=(.02,.9),fontsize=16,shadow=True)
legend1.get_frame().set_facecolor('#FFFFFF')
legend2.get_frame().set_facecolor('#FFFFFF')
plt.title(yLeftLabel+'&'+yRightLable,fontsize=font_size)
plt.savefig('D:\\JGT\\Work-YL\\01布置的任务\\04绘制曲线图和报告文件\\0803\\出图\\{}-{}'.format(yLeftLabel.replace(r'/',' '),yRightLable.replace(r'/',' ')),dpi=300)

参考
Matplotlib绘图双纵坐标轴设置及控制设置时间格式的更多相关文章
- element-ui 时间设置 获取固定的时间格式
<el-date-picker v-model="time1" type="daterange" start-placeholder="开始日期 ...
- WordPress 博客文章时间格式the_time()设置
国外设计的WordPress 主题里的文章的时间格式是类似“十一月 21, 2010”这种格式的,而中国人习惯的是年在前,月紧跟其后,日在末尾,所以看国外的就显得很别扭,但是我们可以通过修改WP时间代 ...
- matplotlib绘图教程,设置标签与图例
大家好,欢迎大家阅读周四数据处理专题,我们继续介绍matplotlib作图工具. 在上一篇文章当中我们介绍了matplotlib这个包当中颜色.标记和线条这三种画图的设置,今天我们同样也介绍三种新的设 ...
- Python matplotlib绘图设置图例
一.语法简介 plt.legend(loc=2,edgecolor='red',facecolor='green',shadow='True',fontsize=10) #edgecolor 图例边框 ...
- SAP、BW 权限控制设置
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- matplotlib交互模式与pacharm单独Figure设置
matplotlib交互模式与pacharm单独Figure设置 觉得有用的话,欢迎一起讨论相互学习~Follow Me Matpotlib交互模式 在运行python程序时有时候需要生成以下的 动态 ...
- 使用matplotlib绘制常用图表(2)-常用图标设置
一.使用subplots绘制子图 import numpy as np from matplotlib import pyplot as plt %matplotlib inline x = np.a ...
- matplotlib 绘图
http://blog.csdn.net/jkhere/article/details/9324823 都打一遍 5 matplotlib-绘制精美的图表 matplotlib 是python最著名的 ...
- python之matplotlib绘图基础
Python之matplotlib基础 matplotlib是Python优秀的数据可视化第三方库 matplotlib库的效果可参考 http://matplotlib.org/gallery.ht ...
随机推荐
- 开源的在线评测系统——Vakuum
项目地址 http://code.google.com/p/vakuum-oj/ https://github.com/BYVoid/vakuum 简介 Vakuum是一个基于Linux+PHP的在线 ...
- BZOJ4242 : 水壶
对于任意两个建筑物,以它们之间的最短路为边权求出最小生成树. 则询问(x,y)的答案为最小生成树上x到y路径上边权的最大值. BFS求出离每个点最近的建筑物以及到它的距离,可以发现只有交界处的边才有用 ...
- Xtreme9.0 - Light Gremlins 容斥
Xtreme9.0 - Light Gremlins 题目连接: https://www.hackerrank.com/contests/ieeextreme-challenges/challenge ...
- 数据库操作类——C#
整理数据库操作类以便取用: using System; using System.Collections.Generic; using System.Linq; using System.Web; u ...
- ICE::Handle 使用崩溃问题
简单例子如下: #include "Ice/Ice.h" #include "IceUtil/IceUtil.h" #include "Printer ...
- Android 内存泄露测试数据处理--procrank,setprop,getprop(转)
1.Android内存测试常用的几个概念. VSS--virtual set size 虚拟耗用内存(包含共享库占用的内存)RSS--Resident set size实际使用的物理内存(包含共享库占 ...
- SQLSERVER误删Windows登录用户验证方式使用Windows身份验证的解决方法
今天看到这篇文章:没有了SA密码,无法Windows集成身份登录,DBA怎么办? 想起来之前着急哥问我的一个问题,一个DBA删除了Windows登录用户,而且SQLSERVER服务器的验证方式是Win ...
- Go - 反射中 函数 和 方法 的调用 - v.Call()
上一篇文章 说到了 Golang 中的反射的一些基本规则,重点就是文章中最后的三点,但是这篇文章并没有说如何在反射中调用函数和方法,这就是接下来要说的. 反射中调用 函数 众所周知,Golang 中的 ...
- GO环境变量设置
GOROOT就是go的安装路径在~/.bash_profile中添加下面语句: GOROOT=/usr/local/go export GOROOT 当然, 要执行go命令和go工具, 就要配置go的 ...
- MyEclipse使用总结——MyEclipse中配置WebLogic12c服务器
MyEclipse中配置WebLogic12c服务器的步骤如下: [Window]→[Preferences],如下图所示: 找到WebLogic的配置,如下图所示: