自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Matplotlib繪圖雙縱坐標(biāo)軸設(shè)置及控制設(shè)置時(shí)間格式

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

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

今天利用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'] #用來(lái)正常顯示中文標(biāo)簽 
  18.  
  19. mpl.rcParams['axes.unicode_minus']=False #用來(lái)正常顯示負(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('------------------開(kāi)始繪制類型{}曲線圖------------------'.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? 

 

 

責(zé)任編輯:龐桂玉 來(lái)源: segmentfault
相關(guān)推薦

2015-07-29 10:25:05

數(shù)據(jù)開(kāi)發(fā)產(chǎn)品必修課

2013-07-29 04:57:47

iOS開(kāi)發(fā)iOS開(kāi)發(fā)學(xué)習(xí)時(shí)間設(shè)置和格式輸出

2024-12-13 09:42:38

javascripmatch方法

2009-12-22 09:04:35

ACL時(shí)間控制列表

2022-07-25 14:17:04

JS應(yīng)用開(kāi)發(fā)

2023-04-07 08:02:30

圖形編輯器對(duì)齊功能

2017-04-06 15:49:18

機(jī)器人控制方式特點(diǎn)

2009-12-24 17:41:12

ADO Connect

2011-01-19 14:32:17

Thunderbird設(shè)置

2013-04-01 14:40:34

App內(nèi)購(gòu)家長(zhǎng)蘋果

2010-07-26 09:57:21

telnet pop

2010-09-29 16:51:10

訪問(wèn)控制

2012-02-02 10:23:41

2009-12-03 15:24:39

雙wan路由器設(shè)置

2019-03-24 19:16:35

FedoraSSH系統(tǒng)運(yùn)維

2013-05-30 09:58:50

RouterosADSL負(fù)載均衡技術(shù)

2011-07-27 14:48:21

iPhone Cocos2D 坐標(biāo)

2012-10-11 15:28:18

設(shè)置默認(rèn)打印機(jī)

2010-04-14 17:11:13

Oracle管理
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)