<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          怎樣用Python制作好玩的GIF動(dòng)圖?

          共 1658字,需瀏覽 4分鐘

           ·

          2021-01-23 12:43


          來(lái)源:集智小編 ? ? ?

          鏈接:https://jizhi.im/blog/post/pytogif

          之前我們分享過(guò)數(shù)據(jù)可視化的多種方式,我們?cè)趺茨茏尶梢暬瘓D形逼格更高一些?今天就分享一下如何讓可視化秀起來(lái):用Python和matplotlib制作GIF圖表

          假如電腦上沒(méi)有安裝ImageMagick,先去這里(https://www.imagemagick.org/script/download.php)按照自己的電腦系統(tǒng)下載對(duì)應(yīng)版本,如果我們想用matplotlib的save方法渲染GIF動(dòng)圖,就需要安裝ImageMagick。

          下圖是我們制作的一個(gè)動(dòng)圖示例:

          有兩點(diǎn)需要注意:圖表中的散點(diǎn)不會(huì)動(dòng),會(huì)動(dòng)的是直線。X軸標(biāo)題每一幀都在變化。

          下面是我們制作上面GIF圖的代碼:

          import sys
          import numpy as np
          import matplotlib.pyplot as plt
          from matplotlib.animation import FuncAnimation

          fig, ax = plt.subplots()
          fig.set_tight_layout(True)

          # 詢問(wèn)圖形在屏幕上的大小和DPI(每英寸點(diǎn)數(shù))
          # 注意當(dāng)把圖形保存為文件時(shí),需要為此單獨(dú)再提供一個(gè)DPI
          print('fig size: {0} DPI, size in inches {1}'.format(
          ? ?fig.get_dpi(), fig.get_size_inches()))

          # 繪制一個(gè)保持不變(不會(huì)被重新繪制)的散點(diǎn)圖以及初始直線
          x = np.arange(0, 20, 0.1)
          ax.scatter(x, x + np.random.normal(0, 3.0, len(x)))
          line, = ax.plot(x, x - 5, 'r-', linewidth=2)

          def update(i):
          ? ?label = 'timestep {0}'.format(i)
          ? ?print(label)
          # 更新直線和軸(用一個(gè)新X軸標(biāo)簽)
          ? ?# 以元組形式返回這一幀需要重新繪制的物體
          ? ?line.set_ydata(x - 5 + i)
          ? ?ax.set_xlabel(label)
          ? ?return line, ax

          if __name__ == '__main__':
          ? ?# 會(huì)為每一幀調(diào)用Update函數(shù)
          ? ?# 這里FunAnimation設(shè)置一個(gè)10幀動(dòng)畫,每幀間隔200ms
          ? ?anim = FuncAnimation(fig, update, frames=np.arange(0, 10), interval=200)
          ? ?if len(sys.argv) > 1 and sys.argv[1] == 'save':
          ? ? ? ?anim.save('line.gif', dpi=80, writer='imagemagick')
          ? ?else:
          ? ? ? ?# Plt.show()會(huì)一直循環(huán)動(dòng)畫
          ? ? ? ?plt.show()

          如果你想換個(gè)再酷炫點(diǎn)的主題,可以用seaborn庫(kù),只需添加:

          import seaborn

          那么就會(huì)得到下面這張GIF圖:

          稍微提醒一下:雖然我們這里的GIF圖只有10幀,圖形內(nèi)容也很簡(jiǎn)單,但每一幀仍有160k左右。因?yàn)镚IF動(dòng)圖不使用跨幀壓縮,所以這就讓幀比較長(zhǎng)的GIF圖變得很大。將幀數(shù)盡量減少,并且讓每一幀的圖像再小一點(diǎn)(通過(guò)在matplotlib中調(diào)整圖形大小或DPI)能或多或少有助于緩解這個(gè)問(wèn)題。

          戀習(xí)Python

          關(guān)注戀習(xí)Python,Python都好練
          好文章,我在看??
          瀏覽 39
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  狠狠狠狠狠狠狠狠狠操 | 日本级婬片A片AAA毛片炙热 | 一级内射片在线网站观看 | 青青视频理论在线观看 | 青娱乐一级无码 |