日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
兩個簡單的代碼片段讓你的圖表動起來

本篇文章整列了2個簡單的代碼片段,可以讓你的圖表動起來。

目前成都創(chuàng)新互聯(lián)公司已為近千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)頁空間、網(wǎng)站托管運營、企業(yè)網(wǎng)站設(shè)計、奎屯網(wǎng)站維護等服務(wù),公司將堅持客戶導向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

動畫

Python中有許多用于繪制圖形的庫。Matplotlib, Seaborn, Bokeh, Plotly等等。

但是我們繪圖的目的是要向聽眾和要傳遞的信息。如果你的圖能夠動起來那么他們肯定會讓聽眾在看第一眼的時候就印象深刻。但是并不是每個圖形或數(shù)據(jù)集都適合動畫。一般情況下,動畫對時間序列來說非常有效。例如,根據(jù)時間變化進行數(shù)據(jù)的對比。

Plotly Express

Plotly Express,可以直接為我們創(chuàng)建動態(tài)圖表:

import plotly.express as px
import pandas as pd
import numpy as np

讓我們在數(shù)據(jù)集中創(chuàng)建一些值。

df = pd.DataFrame( {'week': np.random.randint(1,21, size=200),
'P1': np.random.randint(10,220, size=200),
'P2': np.random.randint(15,200, size=200),
'P3': np.random.randint(10,490, size=200),
'P4': np.random.randint(10,980, size=200) } )
df = pd.DataFrame( {'week': np.random.randint(1,21, size=200),
'P1': np.random.randint(10,220, size=200),
'P2': np.random.randint(15,200, size=200),
'P3': np.random.randint(10,490, size=200),
'P4': np.random.randint(10,980, size=200) } )

現(xiàn)在我們可以繪制一個動畫圖來查看產(chǎn)品按周的變化情況。

創(chuàng)建散點圖動畫也同樣簡單。

fig = px.scatter(df, x="week", y="sales", animation_frame="week", animation_group="product", size="sales", color="product", hover_name="product", range_x=[0,20], range_y=[0,800])
fig.update_layout(height=600, width=1000)

gif庫

如果你向我一樣是matplot和seaborn的粉絲,并且不太喜歡用Plotly的話,那么可以試試這個庫。這個庫的作用是創(chuàng)建一系列繪圖,并將它們放在一個幀序列中并創(chuàng)建一個動態(tài)的gif圖。

首先,還是獲取一些用于繪圖的時間序列數(shù)據(jù)。

import seaborn as sns
df = sns.load_dataset('flights')

接下來創(chuàng)建一個函數(shù),該函數(shù)將為每個觀察創(chuàng)建一個繪圖。

@gif.frame
def plot_flights(df, i):
df = df.copy()
# Get the year for the plot title
yr = df['year'][i]
# Force X axis to be entirely plotted at once
df.iloc[i:] = np.nan
#Plot
ax = df.plot(x='month', y= 'passengers', legend=False,
style="o-", figsize=(20,10))
ax.set_title(f"Air Passengers {yr}", size=20)
ax.set_xlabel("Months")
ax.set_ylabel("Number of Passengers")

@gif.frame是GIF庫用來創(chuàng)建幀序列的裝飾器。

df.iloc[i:] = np.nan將把所有未來的數(shù)據(jù)轉(zhuǎn)換到NA。這是一種每次只繪制一個值的編程方式(i=0所有都為nan, i=1,只繪制索引0,i=2,只繪制0和1…),通過這種方法我們可以端到端繪制X軸,因為在動畫期間是不會改變的。這樣也可以保持圖表的大小不變,使其更容易觀看。

現(xiàn)在我們使用函數(shù)創(chuàng)建一個循環(huán)來創(chuàng)建幀。

frames = []
for i in range(df.shape[0]):
frame = plot_flights(df, i)
frames.append(frame)

最后,保存生成的GIF圖像。

gif.save(frames, 'gif_example.gif', duration=180)

看,是不是很簡單

最后總結(jié)

動畫圖是一個很有影響力的展示方法,但是并不是所有的圖都適合動畫化。我們應(yīng)該根據(jù)實際的情況來選擇是否需要創(chuàng)建動畫圖,因為動畫圖并不是深入分析的最佳選擇他只是在視覺上有一些更大的沖擊,所以當你需要觀察、比較和理解時也許靜態(tài)圖是更好的選擇。

要創(chuàng)建動圖,我建議您使用gif庫,因為對于這種圖形類型,它比plotly更簡單(因為我個人更喜歡seaborn,哈)。


分享標題:兩個簡單的代碼片段讓你的圖表動起來
網(wǎng)頁地址:http://www.5511xx.com/article/cdhpcos.html