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