動畫是使可視化更具吸引力和用戶吸引力的好方法。它幫助我們以有意義的方式展示數據可視化。Python 幫助我們使用現有的強大 Python 庫創建動畫可視化。Matplotlib是一個非常流行的數據可視化庫,通常用于數據的圖形表示以及使用內置函數的動畫。
直接跳到末尾 去評論區領書
使用 Matplotlib 創建動畫有兩種方法:
在暫停()的matplotlib庫的pyplot模塊在功能上用于暫停為參數提到間隔秒。考慮下面的示例,我們將使用 matplotlib 創建一個簡單的線性圖并在其中顯示動畫:
創建 2 個數組 X 和 Y,并存儲從 1 到 100 的值。
使用 plot() 函數繪制 X 和 Y。
以合適的時間間隔添加 pause() 函數
運行程序,你會看到動畫。
Python
from matplotlib import pyplot as plt x = []y = [] for i in range(100): x.append(i) y.append(i) # 提及 x 和 y 限制以定義其范圍 plt.xlim(0, 100) plt.ylim(0, 100) # 繪制圖形 plt.plot(x, y, color = "green") plt.pause(0.01) plt.show()
輸出 :
同樣,你也可以使用 pause() 函數在各種繪圖中創建動畫。
這個FuncAnimation() 函數不會自己創建動畫,而是從我們傳遞的一系列圖形中創建動畫。
語法: FuncAnimation(figure, animation_function, frames=None, init_func=None, fargs=None, save_count=None, *, cache_frame_data=True,
**kwargs)
現在您可以使用 FuncAnimation 函數制作多種類型的動畫:
在這個例子中,我們將創建一個簡單的線性圖,它將顯示一條線的動畫。同樣,使用 FuncAnimation,我們可以創建多種類型的動畫視覺表示。我們只需要在一個函數中定義我們的動畫,然后用合適的參數將它傳遞給FuncAnimation。
Python
from matplotlib import pyplot as pltfrom matplotlib.animation import FuncAnimationimport numpy as np x = []y = [] figure, ax = plt.subplots() # 設置 x 和 y 軸的限制ax.set_xlim(0, 100)ax.set_ylim(0, 12) # 繪制單個圖形line, = 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
from matplotlib import pyplot as pltfrom matplotlib.animation import FuncAnimation, writersimport numpy as npplt.rcParams["font.sans-serif"] = ["Microsoft YaHei"] 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 = 6 * i y3 = 3 * i y4 = 2 * i y5 = 5 * i y6 = 3 * i plt.xlabel("國家") plt.ylabel("國家GDP") plt.bar(["印度", "中國", "德國", "美國", "加拿大", "英國"], [y1, y2, y3, y4, y5, y6], color = palette)plt.title("條形圖動畫")animation = FuncAnimation(fig, animation_function, interval = 50)plt.show()
輸出:
在這個例子中,我們將使用隨機函數在 python 中動畫散點圖。我們將遍歷animation_func并在迭代時繪制 x 和 y 軸的隨機值。
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()
輸出:
在這里,我們將使用城市數據集中的最高人口繪制條形圖競賽。
不同的城市會有不同的條形圖,條形圖追趕將從 1990 年到 2018 年迭代。
我從人口最多的數據集中選擇了最高城市的國家。
需要用到的數據集可以從這里下載:city_populations
Python
import pandas as pdimport matplotlib.pyplot as pltimport matplotlib.ticker as tickerfrom matplotlib.animation import FuncAnimation plt.rcParams["font.sans-serif"] = ["Microsoft YaHei"] df = 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() / 200 for 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") ax.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, "從 1500 年到 2018 年世界上人口最多的城市", transform=ax.transAxes, size=24, weight=600, ha="left") ax.text(1, 0, "by haiyong.site | 海擁", 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()
輸出:
? 歡迎大家在評論區提出意見和建議!(抽兩位幸運兒送書,實物圖如下)?
《機器學習入門:基于數學原理的Python實戰》
簡介:理論性與實用性兼備,既可作為初學者的入門書籍,也可作為求職者的面試寶典,更可作為職場人士轉崗的實用手冊。本書適合需要全面學習機器學習算法的初學者、希望掌握機器學習算法數學理論的程序員、想轉行從事機器學習算法的專業人員、對機器學習算法興趣濃厚的人員、專業培訓機構學員和希望提高 Python 編程水平的程序員。
優點:
?1.與周志華編寫的《機器學習》相比,本書多了對算法的數學原理詳細嚴謹的推導。
?2.與李銳翻譯的《機器學習實戰》相比,本書多了用面向對象思想將算法模塊化,并且書中代碼在Python 3 環境下運行。
?3.為了照顧初學者,本書補充了全書涉及的高等數學、線性代數、概率論與數理統計、Jessen不等式等數學基礎知識。
也有不想抽獎自己買的同學可以參考下面的鏈接
京東自營購買鏈接:
《機器學習入門:基于數學原理的Python實戰》(戴璞微,潘斌)【摘要 書評 試讀】- 京東圖書
當當自營購買鏈接:
《機器學習入門:基于數學原理的Python實戰》(戴璞微)【簡介_書評_在線閱讀】 - 當當圖書
? 注意:
大家點贊關注,三天后也就是 9月28日 從評論區留言的同學中抽取兩位送書
? 行業資料:精品PPT模板幾千套,簡歷模板一千多套
? 面試題庫:Java核心知識點大全和面試真題資料
? 學習資料:2300套PHP建站源碼,微信小程序入門資料,Python全集(400集)
如果中獎了聯系不上則視為放棄,可以從下方公眾號里找到作者的聯系方式,回復【資源】獲取上面的資料??????
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/121147.html
作者:海擁 主頁:https://haiyong.blog.csdn.net/ ? Pygame是一組跨平臺的 Python 模塊,專為編寫視頻游戲而設計。它包括旨在與 Python 編程語言一起使用的計算機圖形和聲音庫。您可以使用 pygame 創建不同類型的游戲,包括街機游戲、平臺游戲等等。 使用的圖像: ?你可以控制玩家的移動。為此,首先使用 pygame 的 display.set...
??蘇州程序大白一文從基礎手把手教你Python數據可視化大佬??《??記得收藏??》 目錄 ????開講啦!!!!????蘇州程序大白?????博主介紹前言數據關系可視化散點圖 Scatter plots折線圖強調連續性 Emphasizing continuity with line plots同時顯示多了圖表 數據種類的可視化 Plotting with categorical da...
摘要:文章目錄情景再現本文關鍵詞挑個軟柿子單頁爬取數據處理翻頁操作擼代碼主調度函數頁面抓取函數解析保存函數可視化顏色分布評價詞云圖源碼獲取方式情景再現今日天氣尚好,女友忽然欲買文胸,但不知何色更美,遂命吾剖析何色買者益眾,為點議,事后而獎勵之。 ...
閱讀 2508·2023-04-26 02:47
閱讀 2999·2023-04-26 00:42
閱讀 864·2021-10-12 10:12
閱讀 1371·2021-09-29 09:35
閱讀 1688·2021-09-26 09:55
閱讀 477·2019-08-30 14:00
閱讀 1531·2019-08-29 12:57
閱讀 2349·2019-08-28 18:00