日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Matplotlib繪圖雙縱坐標(biāo)軸設(shè)置及控制設(shè)置時(shí)間格式

 雙y軸坐標(biāo)軸圖

成都創(chuàng)新互聯(lián)公司是一家專注于成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)與策劃設(shè)計(jì),龍山網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)公司做網(wǎng)站,專注于網(wǎng)站建設(shè)十多年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:龍山等地區(qū)。龍山做網(wǎng)站價(jià)格咨詢:13518219792

今天利用matplotlib繪圖,想要完成一個(gè)雙坐標(biāo)格式的圖。 

 
 
  1. fig=plt.figure(figsize=(20,15)) 
  2. ax1=fig.add_subplot(111) 
  3. ax1.plot(demo0719['TPS'],'b-',label='TPS',linewidth=2) 
  4. ax2=ax1.twinx()#這是雙坐標(biāo)關(guān)鍵一步 
  5. ax2.plot(demo0719['successRate']*100,'r-',label='successRate',linewidth=2)  

橫坐標(biāo)設(shè)置時(shí)間間隔 

 
 
  1. import matplotlib.dates as mdate 
  2. ax1.xaxis.set_major_formatter(mdate.DateFormatter('%Y-%m-%d %H:%M:%S'))#設(shè)置時(shí)間標(biāo)簽顯示格式 
  3. plt.xticks(pd.date_range(demo0719.index[0],demo0719.index[-1],freq='1min'))  

縱坐標(biāo)設(shè)置顯示百分比 

 
 
  1. import matplotlib.ticker as mtick 
  2.  
  3. fmt='%.2f%%' 
  4.  
  5. yticks = mtick.FormatStrFormatter(fmt) 
  6.  
  7. ax2.yaxis.set_major_formatter(yticks) 

 知識(shí)點(diǎn)

在matplotlib中,整個(gè)圖像為一個(gè)Figure對(duì)象。在Figure對(duì)象中可以包含一個(gè),或者多個(gè)Axes對(duì)象。每個(gè)Axes對(duì)象都是一個(gè)擁有自己坐標(biāo)系統(tǒng)的繪圖區(qū)域。其邏輯關(guān)系如下: 

 一個(gè)Figure對(duì)應(yīng)一張圖片。

Title為標(biāo)題。Axis為坐標(biāo)軸,Label為坐標(biāo)軸標(biāo)注。Tick為刻度線,Tick Label為刻度注釋。

Title為標(biāo)題。Axis為坐標(biāo)軸,Label為坐標(biāo)軸標(biāo)注。Tick為刻度線,Tick Label為刻度注釋。 

 add_subplot()

  • 官網(wǎng)matplotlib.pyplot.figure
    pyplot.figure()是返回一個(gè)Figure對(duì)象的,也就是一張圖片。
  • add_subplot(args, *kwargs)

The Axes instance will be returned.

twinx()

  • matplotlib.axes.Axes method2 
 
 
  1. 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.

意思就是,創(chuàng)建了一個(gè)獨(dú)立的Y軸,共享了X軸。雙坐標(biāo)軸!

類似的還有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)
    這是一個(gè)類,創(chuàng)建一個(gè)時(shí)間格式的實(shí)例。

strftime方法(傳入格式化字符串)。

 
 
  1. strftime(dt, fmt=None) 
  2.  
  3. Refer to documentation for datetime.strftime. 
  4.  
  5. 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)
 
 
  1. # return locs, labels where locs is an array of tick locations and 
  2. # labels is an array of tick labels. 
  3. locs, labels = xticks() 
  4.  
  5. # set the locations of the xticks 
  6. xticks( arange(6) ) 
  7.  
  8. # set the locations and labels of the xticks 
  9. xticks( arange(5), ('Tom', 'Dick', 'Harry', 'Sally', 'Sue') ) 

代碼匯總

 
 
  1. #coding:utf-8 
  2.  
  3. import matplotlib.pyplot as plt 
  4.  
  5. import matplotlib as mpl 
  6.  
  7. import matplotlib.dates as mdate 
  8.  
  9. import matplotlib.ticker as mtick 
  10.  
  11. import numpy as np 
  12.  
  13. import pandas as pd 
  14.  
  15. import os 
  16.  
  17. mpl.rcParams['font.sans-serif']=['SimHei'] #用來正常顯示中文標(biāo)簽 
  18.  
  19. mpl.rcParams['axes.unicode_minus']=False #用來正常顯示負(fù)號(hào) 
  20.  
  21. mpl.rc('xtick', labelsize=20) #設(shè)置坐標(biāo)軸刻度顯示大小 
  22.  
  23. mpl.rc('ytick', labelsize=20) 
  24.  
  25. font_size=30 
  26.  
  27. #matplotlib.rcParams.update({'font.size': 60}) 
  28.  
  29. %matplotlib inline 
  30.  
  31. plt.style.use('ggplot') 
  32.  
  33. data=pd.read_csv('simsendLogConvert_20160803094801.csv',index_col=0,encoding='gb2312',parse_dates=True) 
  34.  
  35. columns_len=len(data.columns) 
  36.  
  37. data_columns=data.columns 
  38.  
  39. for x in range(0,columns_len,2): 
  40.  
  41. print('第{}列'.format(x)) 
  42.  
  43. total=data.ix[:,x] 
  44.  
  45. print('第{}列'.format(x+1)) 
  46.  
  47. successRate=(data.ix[:,x+1]/data.ix[:,x]).fillna(0) 
  48.  
  49. yLeftLabel=data_columns[x] 
  50.  
  51. yRightLable=data_columns[x+1] 
  52.  
  53. print('------------------開始繪制類型{}曲線圖------------------'.format(data_columns[x])) 
  54.  
  55. fig=plt.figure(figsize=(25,20)) 
  56.  
  57. ax1=fig.add_subplot(111) 
  58.  
  59. #繪制Total曲線圖 
  60.  
  61. ax1.plot(total,color='#4A7EBB',label=yLeftLabel,linewidth=4) 
  62.  
  63. # 設(shè)置X軸的坐標(biāo)刻度線顯示間隔 
  64.  
  65. ax1.xaxis.set_major_formatter(mdate.DateFormatter('%Y-%m-%d %H:%M:%S'))#設(shè)置時(shí)間標(biāo)簽顯示格式 
  66.  
  67. plt.xticks(pd.date_range(data.index[0],data.index[-1],freq='1min'))#時(shí)間間隔 
  68.  
  69. plt.xticks(rotation=90) 
  70.  
  71. #設(shè)置雙坐標(biāo)軸,右側(cè)Y軸 
  72.  
  73. ax2=ax1.twinx() 
  74.  
  75. #設(shè)置右側(cè)Y軸顯示百分?jǐn)?shù) 
  76.  
  77. fmt='%.2f%%' 
  78.  
  79. yticks = mtick.FormatStrFormatter(fmt) 
  80.  
  81. # 繪制成功率圖像 
  82.  
  83. ax2.set_ylim(0,110) 
  84.  
  85. ax2.plot(successRate*100,color='#BE4B48',label=yRightLable,linewidth=4) 
  86.  
  87. ax2.yaxis.set_major_formatter(yticks) 
  88.  
  89. ax1.set_xlabel('Time',fontsize=font_size) 
  90.  
  91. ax1.set_ylabel(yLeftLabel,fontsize=font_size) 
  92.  
  93. ax2.set_ylabel(yRightLable,fontsize=font_size) 
  94.  
  95. legend1=ax1.legend(loc=(.02,.94),fontsize=16,shadow=True) 
  96.  
  97. legend2=ax2.legend(loc=(.02,.9),fontsize=16,shadow=True) 
  98.  
  99. legend1.get_frame().set_facecolor('#FFFFFF') 
  100.  
  101. legend2.get_frame().set_facecolor('#FFFFFF') 
  102.  
  103. plt.title(yLeftLabel+'&'+yRightLable,fontsize=font_size) 
  104.  
  105. plt.savefig('D:\\JGT\\Work-YL\\01布置的任務(wù)\\04繪制曲線圖和報(bào)告文件\\0803\\出圖\\{}-{}'.format(yLeftLabel.replace(r'/',' '),yRightLable.replace(r'/',' ')),dpi=300)  

參考

  1. Vami-繪圖: matplotlib核心剖析 
  2. Secondary axis with twinx(): how to add to legend? 

本文標(biāo)題:Matplotlib繪圖雙縱坐標(biāo)軸設(shè)置及控制設(shè)置時(shí)間格式
分享路徑:http://m.5511xx.com/article/dpjpjcs.html