簡體   English   中英

如何在 Spyder/IPython/matplotlib 中再次獲得交互式繪圖?

[英]How do I get interactive plots again in Spyder/IPython/matplotlib?

我在 Windows 7 中從 Python(x,y) 2.7.2.3 升級到2.7.6.0 (很高興看到我終於可以輸入function_name?並再次在對象檢查器中查看文檔字符串)但現在繪圖不起作用像以前一樣。

以前(Spyder 2.1.9、IPython 0.10.2、matplotlib 1.2.1),例如,當我繪制此腳本時,它會在交互式窗口中並排繪制子圖:

在此處輸入圖片說明

現在(Spyder 2.2.5,IPython 1.2.0,Matplotlib 1.3.1)當我嘗試繪制事物時,它將子圖作為微小的內聯 PNG 執行,這是IPython 的一個變化

微小的內聯 PNG

所以我進入了選項並發現了這個:

圖形選項

這似乎是說我可以恢復舊的交互式繪圖,並排顯示 4 個子繪圖,但是當我切換到“自動”並嘗試繪制某些內容時,它什么也沒做。 根本沒有情節。

如果我將此下拉菜單切換到 Qt,或取消選中“激活支持”,它只會繪制第一個子圖或其中的一部分,然后停止:

在此處輸入圖片說明

如何在我可以交互的單個圖形中獲得 4 個並排子圖的舊行為?

將后端更改為自動:

工具 > 首選項 > IPython 控制台 > 圖形 > 圖形后端 > 后端:自動

然后關閉並打開 Spyder。

您可以通過在 Spyder 的 IPython 控制台中輸入內置魔法命令來快速控制它,我發現這比從首選項菜單中選擇這些命令更快。 更改立即生效,無需重新啟動 Spyder 或內核。

要切換到“自動”(即交互式)繪圖,請鍵入:

%matplotlib auto

然后,如果您想切換回“內聯”,請鍵入:

%matplotlib inline

(注意:這些命令在非 IPython 控制台中不起作用)

查看有關此主題的更多背景信息: “%matplotlib inline”的目的

應用后:工具>首選項>圖形>后端>自動只需重新啟動內核在此處輸入圖片說明

你一定會得到交互式情節。 快樂編碼!

正如評論中所說,問題在於您的腳本。 其實有2個問題:

  • 有一個 matplotlib 錯誤,我猜您在某處將參數作為None傳遞。 也許是由於 defaultdict ?
  • 在每個子圖之后調用show() show()應該在腳本結束時調用一次。 另一種方法是使用交互模式,在 matplotlib 的文檔中查找ion

這實際上很容易修復並且不需要任何編碼:

1. 單擊控制台上方的 Plots 選項卡。 2.然后在繪圖屏幕的右上角單擊選項按鈕。 3.最后取消選中“靜音內聯繪圖”按鈕

現在重新運行您的腳本,您的圖形應該會顯示在控制台中。

干杯。

對於大多數數學編碼,我使用這個網站和他們的服務,因為他們為每個主題提供示例,他們的支持非常有幫助:
https://labdeck.com/application-examples-screenshots/

如果您希望圖形以可變數量變化,那么您要使用的代碼是

   import matplotlib.pyplot as plt
   import time
   vec1=[1, 2, 3, 4, 5]
   vec2py=[10, 12, 9, 11, 13]
   plt.show()
   axes = plt.gca()
   axes.set_xlim(0, 6)
   axes.set_ylim(5, 50)
   plt.xlabel('x - axis')
   plt.ylabel('y - axis')
   plt.title('Example 1')
   plt.grid()
   line,= axes.plot(vec1,vec2py,color='red',lw=1)
   for x in range(0,10):
      vec2py = [x + 2 for x in vec2py]
      line.set_ydata(vec2py)
      plt.draw()
      plt.pause(1e-17)
      time.sleep(0.5)
   plt.show()

您必須更改 x 以表示您想要的圖形迭代次數以及您希望它運行多長時間,以及 vec2py 行中的 +2 以表示您想要更改它的變量數量。 當然,代碼是一個模板,您可以進行任何美學上的更改。 該代碼文件位於上面鏈接中python編程下的顯示動態圖下。

如果你想顯示來自源的信息的持續依賴,我不確定如何做到這一點,但之前提到的網站確實有一個例子,但它不是在 python 中,而是在 C++ 的簡化形式中。如果您確實想看到它,那么鏈接是https://labdeck.com/examples/dsp-ecg-processing/ecg-9-leads-graphs.pdf?01a96f&01a96f及其下 ECG 9 Leads graphs in ECG on the link at開始。 圖形可以在文檔中顯示,也可以獨立於文檔顯示。

PS 這適用於有相同問題但不一定是相同場景的人,因為我認為這會更有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM