使用matplotlib動態重新整理指定曲線例項

2022-10-04 14:30:53 字數 2222 閱讀 9003

我就廢話不多說啦,還是直接看**吧!

from matplotlib import pyplot as plt

import numpy as np

x = np.linspace(1, 100, 20)

y = x *2 +3

fig = plt.figure()

ax = fig.add_subplot(1,1,1)

ax.scatter(x, y)

plt.ion()

for i in range(10):

y = x*i*0.1 + i

try:

ax.lines.remove(lines[0])

except exception:

pass

lines = ax.plot(x ,y)

plt.pause(0.1)

補充知識:用python的matplotlib庫動態顯示不斷增長的資料

"""created on mon dec 07 16:34:10 2015

@author: superwang

tezxq"""

import matplotlib.pyplot as plt

import numpy as np

figfig2,ax2=plt.subplots()

y1=y2=

for i in range(50):

y1.append(np.sin(i))

y2.append(np.cos(i))

ax.cla()

ax.set_title("loss")

ax.set_xlabel("iteration")

ax.set_ylabel("loss")

ax.set_xlim(0,55)

ax.set_ylim(-1,1)

ax.grid()

ax.plot(y1,label='train')

ax.plot(y2,label='test')

ax.legend(loc='best')

ax2.cla()

ax2.set_title("loss")

ax2.set_xlabel("iteration")

ax2.set_ylabel("loss")

ax2.set_xlim(0,55)

ax2.set_ylim(-1,1)

ax2.grid()

ax2.plot(y1,label='train')

ax2.plot(y2,label='test')

ax2.legend(loc='best')

plt.pause(1)

要解決的問題如標題所示,原理很簡單,就是當資料增長時,不斷清空以前的繪畫內容,然後把現有的資料重新畫出來(資料是胡亂生成的)。

具體過程如下:

fig,ax=plt.subplots() 產生乙個figure物件和乙個axis物件。figure相當於乙個視窗,而axis相當於乙個畫布。此句也可以用兩句生成,即fig=plt.figure(num),括號中的引數是figure的id,如果只需建立乙個figure物件,那麼可以省略。然後ax=fig.subplot(1,1,1),subplot()的具體用法可以去google或百度一下。ax.cla()就是在新資料到來時,先把之前的繪製的內容清空,接下來,ax.set_title(「loss」),ax.set_xlabel(「iteration」),ax.set_ylabel(「loss」)都很簡單,見名知意。ax.set_xlim(0,55),ax.set_ylim(-1,1)分別用來設定x軸和y軸的兩個端點。ax.grid()給畫布加上網格。ax.plot(y1,label='train'),ax.plot(y2,label='test')這兩句是實際的繪製命令,其中,引數label是為以後生成圖例用的。ax2.legend(loc='best')用來生成圖例,loc引數代表圖例位置location,而value:『best'是其中的一種選擇,除此之外,還有左上角等其他選項。最後,plt.pause(1)是為了顯示上更直觀,故意每繪製一次,暫停1秒,注意,這裡的單位是秒。如果是實際的應用,而資料生成的過程又比較慢,此句完全可以省略。

這段**中建立了兩個視窗,在實驗過程中,我發現只能有乙個視窗被選中,即用滑鼠點選哪個視窗,哪個視窗會動態地顯示繪畫過程,而另乙個保持不動。

繪畫過程截圖如下:

本文標題: 使用matplotlib動態重新整理指定曲線例項

本文位址: /jiaoben/python/309528.html

matplotlib 基本使用

1,plot import matplotlib.pyplot as plt import numpy as np numpy庫,製作資料 x np.linspace 1,1,50 y 2 x 1 plt.plot x,y plot.show linspace x,y,n 範圍 x,y n個點 2,...

matplotlib的基本使用

容器層 1 canvas 畫布,位於最底層,使用者一般接觸不到 2 figure 圖,建立在canvas之上 3 axes 座標系 繪圖區,建立在figure之上,圖形繪製在這個範圍 輔助顯示層 最好放在影象層之後編寫 1 起到輔助作用,提高圖的可讀性 2 網格線,圖例,x y軸的標籤,圖的標籤,刻...

matplotlib的使用記錄

隨手記點東西,想到什麼補充什麼。子圖t1 np.arange 0,5,0.1 t2 np.arange 0,5,0.02 plt.figure 1 建立乙個圖,名為1 plt.subplot 2,2,1 在圖1裡面定義2行2列,一共4個子圖位置,取第1個位置 plt.plot t2,np.cos 2...