2013-07-30 65 views
1

下面的代碼給了我更深的圖像。如何在iPython筆記本中重複使用繪圖佈局?

flowRates=[2,5,10,20,50] 
flowRateTol=0.2 

#sets the limits for the plot 
xRange=(0,700) 
yRange=(0,70) 

ax=axes() 
ax.set_xlabel('Time (s)') 
#ax.set_ylabel('Reaction Force (lbf)') 
ax.legend(loc=0) 

#set up the second axis 
ax.twinx() 
ax.set_ylabel('10s Average Flow Rate') 

ax.set_xlim(xRange) 
ax.set_ylim(yRange) 

#shade the acceptable tolerance bands 
for flowRate in flowRates: 
    rectX=[0,xRange[1],xRange[1],0] 
    rectY=[ flowRate*(1-flowRateTol), 
      flowRate*(1-flowRateTol), 
      flowRate*(1+flowRateTol), 
      flowRate*(1+flowRateTol)] 
    ax.fill(rectX,rectY,'b', alpha=0.2, edgecolor='r') 

enter image description here

但是我想在我的下IPython的細胞做的是真正在圖形上繪製數據。我正在使用的代碼(失敗的代碼是)只是打電話給ax.plot(),但我無法得到一張圖顯示我的數據。

有什麼想法?我的目標是有一個worflow(我會介紹)這樣的事情:

  1. 看看我如何導入我的數據!
  2. 這是我如何設置我的圖! (顯示底圖)
  3. 這就是我如何繪製我的所有數據! (用數據顯示底圖)
  4. 這就是我如何過濾我的數據! (做一些奇特的過濾)
  5. 這就是過濾的數據看起來像! (在相同的底圖上顯示新數據)
+1

您需要'plt.draw()'或'ax.figure.canvas.draw()'來重新渲染座標軸。您應該將第二個軸捕獲爲'ax2 = ax.twinx()'。 – tacaswell

回答

2

我會建議將不同的想法包裝到函數中。例如

  1. 這是我如何導入數據:

    高清Import_Data(FILE_NAME,...): #東西導入數據 返回數據

  2. 這是我繪製我的數據: 高清圖(數據..)

繪製只是基本的情節好像是你可以做一次特殊的情況下,b如果你真的希望能夠顯示這一點,並最大限度地減少重複代碼的數量,只允許data=None忽略錯誤,而不是繪製任何內容。

關於如何分割代碼的好處是,只需對一個函數進行更改就可以了,只需要擔心輸入和輸出。例如,要過濾,您可以添加一個過濾器paramateter到plot函數,或創建以相同方式繪製的新過濾數據!

+0

這種感覺就像我有一個結構問題,而不是編程問題。你的解決方案運作良好謝謝。 – Chris

相關問題