zl程序教程

您现在的位置是:首页 >  其他

当前栏目

Matplotlib绘图双纵坐标轴设置及控制设置时间格式

控制matplotlib 设置 时间 格式 绘图 坐标轴
2023-09-27 14:21:45 时间
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对象的,也就是一张图片。 add_subplot(args, *kwargs)

The Axes instance will be returned.

twinx()

matplotlib.axes.Axes method2 

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_major_formatter(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()

class matplotlib.ticker.FormatStrFormatter(fmt)

Use a new-style format string (as used by str.format()) to format the tick. The field formatting must be labeled x

定义字符串格式。

plt.xticks

matplotlib.pyplot.xticks(args, *kwargs)

# 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)  



作者:Michael_翔_

来源:51CTO


Python Matplotlib库:基本绘图补充 上期我们讲了 Matplotlib 库的基本语法,并以折线图为例,绘制了我们的第一幅图表。这期我们来说说如何用 Matplotlib 库绘制其他常用图表。plot()是 Matplotlib 库中绘制折线图的方法,而绘制散点图,我们会使用scatter()。在 Matplotlib 库中,我们使用bar()方法来绘制柱状图。使用stem()方法来绘制火柴图。使用step()方法来绘制阶梯图。使用fill_between()方法来填充一段区间。