您好,登錄后才能下訂單哦!
這篇“怎么用Python繪制動態可視化圖表”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“怎么用Python繪制動態可視化圖表”文章吧。
首先第一步的話我們需要安裝相關的模塊,通過pip
命令來安裝
pip install gif
另外由于gif模塊之后會被當做是裝飾器放在繪制可視化圖表的函數上,主要我們依賴的還是Python當中繪制可視化圖表的matplotlib
、plotly
、以及altair
這些模塊,因此我們還需要下面這幾個庫
pip install "gif[altair]" pip install "gif[matplotlib]" pip install "gif[plotly]"
我們先來看gif
和matplotlib
模塊的結合,我們先來看一個簡單的例子,
代碼如下:
import random from matplotlib import pyplot as plt import gif x = [random.randint(0, 100) for _ in range(100)] y = [random.randint(0, 100) for _ in range(100)] gif.options.matplotlib["dpi"] = 300 @gif.frame def plot(i): xi = x[i*10:(i+1)*10] yi = y[i*10:(i+1)*10] plt.scatter(xi, yi) plt.xlim((0, 100)) plt.ylim((0, 100)) frames = [] for i in range(10): frame = plot(i) frames.append(frame) gif.save(frames, 'example.gif', duration=3.5, unit="s", between="startend")
output:
代碼的邏輯并不難理解,首先我們需要定義一個函數來繪制圖表并且帶上gif
裝飾器,接著我們需要一個空的列表,通過for循環將繪制出來的對象放到這個空列表當中然后保存成gif格式的文件即可。
除了和matplotlib
的聯用之外,gif
和plotly
之間也可以結合起來用
代碼如下:
import random import plotly.graph_objects as go import pandas as pd import gif df = pd.DataFrame({ 't': list(range(10)) * 10, 'x': [random.randint(0, 100) for _ in range(100)], 'y': [random.randint(0, 100) for _ in range(100)] }) @gif.frame def plot(i): d = df[df['t'] == i] fig = go.Figure() fig.add_trace(go.Scatter( x=d["x"], y=d["y"], mode="markers" )) fig.update_layout(width=500, height=300) return fig frames = [] for i in range(10): frame = plot(i) frames.append(frame) gif.save(frames, 'example_plotly.gif', duration=100)
output:
整體的代碼邏輯和上面的相似,這里也就不做具體的說明了
上面繪制出來的圖表都是在單張圖表當中進行的,那當然了我們還可以在多張子圖中進行動態可視化的展示,
代碼如下:
# 讀取數據 df = pd.read_csv('weather_hourly_darksky.csv') df = df.rename(columns={"time": "date"}) @gif.frame def plot(df, date): df = df.loc[df.index[0]:pd.Timestamp(date)] fig, (ax1, ax2, ax3) = plt.subplots(3, figsize=(10, 6), dpi=100) ax1.plot(df.temperature, marker='o', linestyle='--', linewidth=1, markersize=3, color='g') maxi = round(df.temperature.max() + 3) ax1.set_xlim([START, END]) ax1.set_ylim([0, maxi]) ax1.set_ylabel('TEMPERATURE', color='green') ax2.plot(df.windSpeed, marker='o', linestyle='--', linewidth=1, markersize=3, color='b') maxi = round(df.windSpeed.max() + 3) ax2.set_xlim([START, END]) ax2.set_ylim([0, maxi]) ax2.set_ylabel('WIND', color='blue') ax3.plot(df.visibility, marker='o', linestyle='--', linewidth=1, markersize=3, color='r') maxi = round(df.visibility.max() + 3) ax3.set_xlim([START, END]) ax3.set_ylim([0, maxi]) ax3.set_ylabel('VISIBILITY', color='red') frames = [] for date in pd.date_range(start=df.index[0], end=df.index[-1], freq='1M'): frame = plot(df, date) frames.append(frame) gif.save(frames, "文件名稱.gif", duration=0.5, unit='s')
output:
最后我們用plotly
模塊來繪制一個動態的氣泡圖,
代碼如下:
import gif import plotly.graph_objects as go import numpy as np np.random.seed(1) N = 100 x = np.random.rand(N) y = np.random.rand(N) colors = np.random.rand(N) sz = np.random.rand(N) * 30 layout = go.Layout( xaxis={'range': [-2, 2]}, yaxis={'range': [-2, 2]}, margin=dict(l=10, r=10, t=10, b=10) ) @gif.frame def plot(i): fig = go.Figure(layout=layout) fig.add_trace(go.Scatter( x=x[:i], y=y[:i], mode="markers", marker=go.scatter.Marker( size=sz[:i], color=colors[:i], opacity=0.6, colorscale="Viridis" ) )) fig.update_layout(width=500, height=300) return fig frames = [] for i in range(100): frame = plot(i) frames.append(frame) gif.save(frames, "bubble.gif")
output:
以上就是關于“怎么用Python繪制動態可視化圖表”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。