国产毛多水多高潮高清,久热这里只有精品视频6,国内精品久久久久久久久电影网,国产男同志CHINA69,精品999日本久久久影院,人人妻人人澡人人爽人人精品,亚洲中文无码永久免

利用Python的matplotlib库绘制动态图形-3374财神网站推荐

利用Python的matplotlib库绘制动态图形

2026-01-17 23:40:00投稿人:推薦買NBA籃彩APP(呼倫貝爾)有限公司圍觀25563 評論

利用Python的matplotlib庫繪制動態(tài)圖形

一、python 繪制動畫圖

python繪制動態(tài)圖形是數據可視化更直觀、更好看的一種方式 ,matplotlib工具包是常用的繪圖工具,也可以用來繪制動態(tài)圖形。本文介紹四種繪制動態(tài)圖形的方法  ,包括生成圖形的代碼和動態(tài)圖形演示示例  。

用matplotlib工具包創(chuàng)建動畫圖有兩種方法 :

  • 使用 pause() 函數
  • 使用 FuncAnimation() 函數

動畫柱狀圖,使用FuncAnimation() 函數

代碼如下:

from matplotlib import pyplot as pltfrom matplotlib.animation import FuncAnimation, writersimport numpy as np  fig = plt.figure(figsize = (7,5))axes = fig.add_subplot(1,1,1)axes.set_ylim(0, 300)palette = ['blue', 'red', 'green',            'darkorange', 'maroon', 'black']  y1, y2, y3, y4, y5, y6 = [], [], [], [], [], []  def animation_function(i):    y1 = i    y2 = 5 * i    y3 = 3 * i    y4 = 2 * i    y5 = 6 * i    y6 = 3 * i      plt.xlabel("Country")    plt.ylabel("GDP of Country")          plt.bar(["India", "China", "Germany",              "USA", "Canada", "UK"],            [y1, y2, y3, y4, y5, y6],            color = palette)  plt.title("Bar Chart Animation")  animation = FuncAnimation(fig, animation_function,                           interval = 50)plt.show()

如下圖:


橫向柱狀跑圖 (Horizontal Bar Chart Race),使用FuncAnimation() 函數

以下代碼是繪制世界1500年-2018年主要城市人口變化橫向柱狀跑圖,需要數據集文件city_populations.csv評論區(qū)留言 。

程序代碼如下  :

import pandas as pdimport matplotlib.pyplot as pltimport matplotlib.ticker as tickerfrom matplotlib.animation import FuncAnimationdf = pd.read_csv('city_populations.csv',usecols=['name', 'group', 'year', 'value'])colors = dict(zip(['India','Europe','Asia','Latin America','Middle East','North America','Africa'],['#adb0ff', '#ffb3ff', '#90d595','#e48381', '#aafbff', '#f7bb5f','#eafb50']))group_lk = df.set_index('name')['group'].to_dict()def draw_barchart(year):dff = df[df['year'].eq(year)].sort_values(by='value',ascending=True).tail(10)ax.clear()ax.barh(dff['name'], dff['value'],color=[colors[group_lk[x]] for x in dff['name']])dx = dff['value'].max() / 200for i, (value, name) in enumerate(zip(dff['value'],dff['name'])):ax.text(value-dx, i, name,size=14, weight=600,ha='right', va='bottom')ax.text(value-dx, i-.25, group_lk[name],size=10, color='#444444',ha='right', va='baseline')ax.text(value+dx, i, f'{ value:,.0f}',size=14, ha='left', va='center')# polished stylesax.text(1, 0.4, year, transform=ax.transAxes,color='#777777', size=46, ha='right',weight=800)ax.text(0, 1.06, 'Population (thousands)',transform=ax.transAxes, size=12,color='#777777')ax.xaxis.set_major_formatter(ticker.StrMethodFormatter('{ x:,.0f}'))ax.xaxis.set_ticks_position('top')ax.tick_params(axis='x', colors='#777777', labelsize=12)ax.set_yticks([])ax.margins(0, 0.01)ax.grid(which='major', axis='x', linestyle='-')ax.set_axisbelow(True)ax.text(0, 1.12, 'The most populous cities in the world from 1500 to 2018',transform=ax.transAxes, size=24, weight=600, ha='left')ax.text(1, 0, ' ',transform=ax.transAxes, ha='right', color='#777777',bbox=dict(facecolor='white', alpha=0.8, edgecolor='white'))plt.box(False)plt.show()fig, ax = plt.subplots(figsize=(15, 8))animator = FuncAnimation(fig, draw_barchart,frames = range(1990, 2019))plt.show()



散點圖動畫,使用FuncAnimation()函數

在本例中, 使用random 數據和自定義函數animation_func()

from matplotlib import pyplot as pltfrom matplotlib.animation import FuncAnimationimport randomimport numpy as npx = []y = []colors = []fig = plt.figure(figsize=(7,5))def animation_func(i):x.append(random.randint(0,100))y.append(random.randint(0,100))colors.append(np.random.rand(1))area = random.randint(0,30) * random.randint(0,30)plt.xlim(0,100)plt.ylim(0,100)plt.scatter(x, y, c = colors, s = area, alpha = 0.5)animation = FuncAnimation(fig, animation_func,interval = 100)plt.show()

如下圖 :


使用 pause() 函數繪制動態(tài)直線

matplotlib工具包的pyplot模塊中有pause()函數,可用來設置時間間隔參數 ,達到繪制直線的動畫效果。

代碼如下 :

from matplotlib import pyplot as pltx = []y = []for i in range(100):x.append(i)y.append(i)# Mention x and y limits to define their rangeplt.xlim(0, 100)plt.ylim(0, 100)# Ploting graphplt.plot(x, y, color = 'green')plt.pause(0.01)plt.show()

如下圖 :


使用 FuncAnimation() 繪制動態(tài)直線

FuncAnimation() 函數本身并不能創(chuàng)建動畫效果,而是通過生成一系列不同參數的圖片來實現(xiàn)動畫效果.

Syntax: FuncAnimation(figure, animation_function, frames=None, init_func=None, fargs=None, save_count=None, *, cache_frame_data=True, **kwargs)

在這個實例代碼中,使用FuncAnimation函數創(chuàng)建一條直線的簡單動畫效果  ,只需要調整參數即刻 。

from matplotlib import pyplot as pltfrom matplotlib.animation import FuncAnimationimport numpy as np  x = []y = []  figure, ax = plt.subplots()  # Setting limits for x and y axisax.set_xlim(0, 100)ax.set_ylim(0, 12)  # Since plotting a single graphline,  = ax.plot(0, 0)   def animation_function(i):    x.append(i * 15)    y.append(i)      line.set_xdata(x)    line.set_ydata(y)    return line,  animation = FuncAnimation(figure,                          func = animation_function,                          frames = np.arange(0, 10, 0.1),                           interval = 10)plt.show()

如下圖:

二 、如何把python繪制的動態(tài)圖形保存為gif文件或視頻

使用Matplotlib中的matplotlib.animation 方法可以繪制更好看