欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python matplotlib實(shí)時(shí)畫(huà)圖案例

 更新時(shí)間:2020年04月23日 10:34:31   作者:Mrzhang先森  
這篇文章主要介紹了Python matplotlib實(shí)時(shí)畫(huà)圖案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

實(shí)時(shí)畫(huà)圖

import matplotlib.pyplot as plt

ax = []   # 定義一個(gè) x 軸的空列表用來(lái)接收動(dòng)態(tài)的數(shù)據(jù)
ay = []   # 定義一個(gè) y 軸的空列表用來(lái)接收動(dòng)態(tài)的數(shù)據(jù)
plt.ion()   # 開(kāi)啟一個(gè)畫(huà)圖的窗口
for i in range(100): # 遍歷0-99的值
 ax.append(i)  # 添加 i 到 x 軸的數(shù)據(jù)中
 ay.append(i**2) # 添加 i 的平方到 y 軸的數(shù)據(jù)中
 plt.clf()  # 清除之前畫(huà)的圖
 plt.plot(ax,ay) # 畫(huà)出當(dāng)前 ax 列表和 ay 列表中的值的圖形
 plt.pause(0.1)  # 暫停一秒
 plt.ioff()  # 關(guān)閉畫(huà)圖的窗口

實(shí)時(shí)畫(huà)圖 效果圖

補(bǔ)充知識(shí):Python 繪圖與可視化 matplotlib 動(dòng)態(tài)條形圖 bar

第一種辦法

一種方法是每次都重新畫(huà),包括清除figure

def animate(fi):
 bars=[]
 if len(frames)>fi:
  # axs.text(0.1,0.90,time_template%(time.time()-start_time),transform=axs.transAxes)#所以這樣
  time_text.set_text(time_template%(0.1*fi))#這個(gè)必須沒(méi)有axs.cla()才行
  # axs.cla()
  axs.set_title('bubble_sort_visualization')
  axs.set_xticks([])
  axs.set_yticks([])
  bars=axs.bar(list(range(Data.data_count)),#個(gè)數(shù)
    [d.value for d in frames[fi]],#數(shù)據(jù)
    1,    #寬度
    color=[d.color for d in frames[fi]]#顏色
    ).get_children()
 return bars
 anim=animation.FuncAnimation(fig,animate,frames=len(frames), interval=frame_interval,repeat=False)

這樣效率很低,而且也有一些不可取的弊端,比如每次都需要重新設(shè)置xticks、假如figure上添加的有其他東西,這些東西也一并被clear了,還需要重新添加,比如text,或者labale。

第二種辦法

可以像平時(shí)畫(huà)線更新data那樣來(lái)更新bar的高

'''
遇到問(wèn)題沒(méi)人解答?小編創(chuàng)建了一個(gè)Python學(xué)習(xí)交流QQ群:857662006 
尋找有志同道合的小伙伴,互幫互助,群里還有不錯(cuò)的視頻學(xué)習(xí)教程和PDF電子書(shū)!
'''
import matplotlib.pyplot as plt
import numpy as np
from matplotlib import animation
 
 
fig=plt.figure(1,figsize=(4,3))
ax=fig.add_subplot(111)
ax.set_title('bar_animate_test')
#ax.set_xticks([])注釋了這個(gè)是能看到變化,要不看不到變化,不對(duì),能看到變化,去了注釋吧
#ax.set_yticks([])
ax.set_xlabel('xlable')
N=5
frames=50
x=np.arange(1,N+1)
 
collection=[]
collection.append([i for i in x])
for i in range(frames):
 collection.append([ci+1 for ci in collection[i]])
print(collection)
xstd=[0,1,2,3,4]
bars=ax.bar(x,collection[0],0.30)
def animate(fi):
 # collection=[i+1 for i in x]
   ax.set_ylim(0,max(collection[fi])+3)#對(duì)于問(wèn)題3,添加了這個(gè)
 for rect ,yi in zip(bars,collection[fi]):
 rect.set_height(yi)
 # bars.set_height(collection)
 return bars
anim=animation.FuncAnimation(fig,animate,frames=frames,interval=10,repeat=False)
plt.show()

問(wèn)題

*)TypeError: ‘numpy.int32' object is not iterable

x=np.arange(1,N+1)<br>collection=[i for i in x]
#collection=[i for i in list(x)]#錯(cuò)誤的認(rèn)為是dtype的原因,將這里改成了list(x)
for i in range(frames):
 collection.append([ci+1 for ci in collection[i]])#問(wèn)題的原因是因?yàn)榇藭r(shí)的collection還是一個(gè)一位數(shù)組,所以這個(gè)collection[i]是一個(gè)x里的一個(gè)數(shù),并不是一個(gè)列表,我竟然還以為的dtype的原因,又改了
xstd=[0,1,2,3,4]

應(yīng)該是

'''
遇到問(wèn)題沒(méi)人解答?小編創(chuàng)建了一個(gè)Python學(xué)習(xí)交流QQ群:857662006 
尋找有志同道合的小伙伴,互幫互助,群里還有不錯(cuò)的視頻學(xué)習(xí)教程和PDF電子書(shū)!
'''
collection=[]
collection.append([i for i in x])#成為二維數(shù)組
for i in range(frames):
 collection.append([ci+1 for ci in collection[i]])

然后又出現(xiàn)了下面的問(wèn)題:

*)TypeError: only size-1 arrays can be converted to Python scalars

Traceback (most recent call last):
 File "forTest.py", line 22, in <module>
 bars=ax.bar(x,collection,0.30)
 File "C:\Users\Administrator.SC-201605202132\Envs\sort\lib\site-packages\matplotlib\__init__.py", line 1589, in inner
 return func(ax, *map(sanitize_sequence, args), **kwargs)
 File "C:\Users\Administrator.SC-201605202132\Envs\sort\lib\site-packages\matplotlib\axes\_axes.py", line 2430, in bar
 label='_nolegend_',
 File "C:\Users\Administrator.SC-201605202132\Envs\sort\lib\site-packages\matplotlib\patches.py", line 707, in __init__
 Patch.__init__(self, **kwargs)
 File "C:\Users\Administrator.SC-201605202132\Envs\sort\lib\site-packages\matplotlib\patches.py", line 89, in __init__
 self.set_linewidth(linewidth)
 File "C:\Users\Administrator.SC-201605202132\Envs\sort\lib\site-packages\matplotlib\patches.py", line 368, in set_linewidth
 self._linewidth = float(w)
TypeError: only size-1 arrays can be converted to Python scalars

應(yīng)該是傳遞的參數(shù)錯(cuò)誤,仔細(xì)想了一下,在報(bào)錯(cuò)的代碼行中,collection原來(lái)是沒(méi)錯(cuò)的,因?yàn)樵瓉?lái)是一維數(shù)組,現(xiàn)在變成二維了,改為

bars=ax.bar(x,collection[0],0.30)

好了

*)出現(xiàn)的問(wèn)題,在上面的代碼中,運(yùn)行的時(shí)候不會(huì)畫(huà)布的大小不會(huì)變,會(huì)又條形圖溢出的情況,在animate()中添加了

'''
遇到問(wèn)題沒(méi)人解答?小編創(chuàng)建了一個(gè)Python學(xué)習(xí)交流QQ群:857662006 
尋找有志同道合的小伙伴,互幫互助,群里還有不錯(cuò)的視頻學(xué)習(xí)教程和PDF電子書(shū)!
'''
def animate(fi):
 # collection=[i+1 for i in x]
 ax.set_ylim(0,max(collection[fi])+3)#添加了這個(gè)
 for rect ,yi in zip(bars,collection[fi]):
 rect.set_height(yi)
 
 # bars.set_height(collection)
 return bars

別的屬性

*)條形圖是怎樣控制間隔的:

是通過(guò)控制寬度

width=1,#沒(méi)有間隔,每個(gè)條形圖會(huì)緊挨著

*)errorbar:

是加一個(gè)橫線,能通過(guò)xerr和yerr來(lái)調(diào)整方向

xstd=[0,1,2,3,4]
bars=ax.bar(x,collection,0.30,xerr=xstd)

以上這篇Python matplotlib實(shí)時(shí)畫(huà)圖案例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python實(shí)現(xiàn)王者榮耀自動(dòng)刷金幣的完整步驟

    Python實(shí)現(xiàn)王者榮耀自動(dòng)刷金幣的完整步驟

    這篇文章主要介紹了Python實(shí)現(xiàn)王者農(nóng)藥自動(dòng)刷金幣的完整步驟,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • Python自動(dòng)化測(cè)試之異常處理機(jī)制實(shí)例詳解

    Python自動(dòng)化測(cè)試之異常處理機(jī)制實(shí)例詳解

    為了保持自動(dòng)化測(cè)試用例的健壯性,異常的捕獲及處理,日志的記錄對(duì)掌握自動(dòng)化測(cè)試執(zhí)行情況尤為重要,下面這篇文章主要給大家介紹了關(guān)于Python自動(dòng)化測(cè)試之異常處理機(jī)制的相關(guān)資料,需要的朋友可以參考下
    2022-06-06
  • python處理cookie詳解

    python處理cookie詳解

    Cookie用于服務(wù)器實(shí)現(xiàn)會(huì)話,用戶登錄及相關(guān)功能時(shí)進(jìn)行狀態(tài)管理,本文介紹了使用python處理cookie的方法,需要的朋友可以參考下
    2014-02-02
  • 淺析Python字符串索引、切片、格式化

    淺析Python字符串索引、切片、格式化

    除了數(shù)字,Python中最常見(jiàn)的數(shù)據(jù)類(lèi)型就是字符串,無(wú)論那種編程語(yǔ)言,字符串無(wú)處不在。本文將為大家詳細(xì)介紹Python中字符串的使用方法,需要的朋友可以參考一下
    2021-12-12
  • python編寫(xiě)俄羅斯方塊

    python編寫(xiě)俄羅斯方塊

    這篇文章主要為大家詳細(xì)介紹了python編寫(xiě)俄羅斯方塊,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • python django 增刪改查操作 數(shù)據(jù)庫(kù)Mysql

    python django 增刪改查操作 數(shù)據(jù)庫(kù)Mysql

    下面小編就為大家?guī)?lái)一篇python django 增刪改查操作 數(shù)據(jù)庫(kù)Mysql。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-07-07
  • Python實(shí)戰(zhàn)之單詞打卡統(tǒng)計(jì)

    Python實(shí)戰(zhàn)之單詞打卡統(tǒng)計(jì)

    這篇文章主要介紹了Python實(shí)戰(zhàn)之單詞打卡統(tǒng)計(jì),文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)python的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • python如何統(tǒng)計(jì)序列中元素

    python如何統(tǒng)計(jì)序列中元素

    這篇文章主要為大家詳細(xì)介紹了python如何統(tǒng)計(jì)序列中的元素,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • Python基礎(chǔ)之logging模塊知識(shí)總結(jié)

    Python基礎(chǔ)之logging模塊知識(shí)總結(jié)

    用Python寫(xiě)代碼的時(shí)候,在想看的地方寫(xiě)個(gè)print xx 就能在控制臺(tái)上顯示打印信息,這樣子就能知道它是什么了,但是當(dāng)我需要看大量的地方或者在一個(gè)文件中查看的時(shí)候,這時(shí)候print就不大方便了,所以Python引入了logging模塊來(lái)記錄我想要的信息,需要的朋友可以參考下
    2021-05-05
  • Python利用多線程枚舉實(shí)現(xiàn)獲取wifi信息

    Python利用多線程枚舉實(shí)現(xiàn)獲取wifi信息

    這篇文章主要為大家詳細(xì)介紹了Python如何利用枚舉字典的方式來(lái)實(shí)現(xiàn)獲取wifi信息,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2022-12-12

最新評(píng)論