最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

拓端tecdat|約會數(shù)據(jù)動態(tài)可視化分析:R語言使用ggplot和ganimate制作的動畫圖

2021-08-19 21:21 作者:拓端tecdat  | 我要投稿

原文鏈接:http://tecdat.cn/?p=23440

原文出處:拓端數(shù)據(jù)部落公眾號


你知道嗎,你可以把普通的靜態(tài)ggplot圖轉(zhuǎn)換成動畫圖?在R軟件包ganimate的幫助下,你可以做到這一點,而且效果非常好。對所有類型的幾何圖形都能毫不費力地轉(zhuǎn)化為超級流暢的動畫,讓我和我的同事印象非常深刻。這篇文章中,我將對ganimate的一些奇妙功能進行簡短的概述,我希望你會像我們一樣喜歡這些功能!

由于七夕節(jié)剛剛過去,我們將探索約會實驗數(shù)據(jù)集。希望我們能了解軟件包以及如何找到我們的另一半。

約會實驗數(shù)據(jù)集

是什么影響了一見鐘情?

數(shù)據(jù)是從約會活動的參與者那里收集的。在這些活動中,參與者將與其他每個異性參與者進行四分鐘的 "第一次約會"。在四分鐘結(jié)束后,參與者被問及是否愿意再次見到他們的約會對象。他們還被要求在六個方面對他們的約會對象進行評分。吸引力、真誠、智慧、樂趣、有雄心壯志和共同的興趣。最后,我們想通過比較人們自我報告的評分和實際影響人們決定的因素,來確定人們是否真的知道他們想要什么。

定義基本動畫:過渡_*

靜態(tài)圖如何變成動態(tài)圖?基本上,ganimate創(chuàng)建了數(shù)據(jù)子集,這些子集被單獨繪制,并構(gòu)成了幀,當連續(xù)播放時,就形成了基本動畫。

transition_*函數(shù)定義了數(shù)據(jù)子集是如何產(chǎn)生的,從而定義了任何動畫的一般特征。在本文中,我們將探討三種類型的過渡:transition_states(), transition_reveal() 和 transition_filter()。我們從頭開始吧。

我們將從transition_states()開始。在這里,數(shù)據(jù)根據(jù)提供給states參數(shù)的變量的類別被分割成子集。如果一個數(shù)據(jù)集的幾行與同一個觀察單位有關(guān),并且應該可以被識別出來,那么需要提供一個定義觀察單位的分組變量。

請注意,為了確保這篇文章的可讀性,所有關(guān)于快速約會數(shù)據(jù)解釋的文字都是用斜體書寫的。如果你對這部分不感興趣,你可以直接跳過這些段落。

首先,我們要探討快速約會實驗的參與者在伴侶中尋找什么。參與者被要求對潛在約會對象中的屬性的重要性進行評分,將100分的預算分配給幾個特征,數(shù)值越高表示越重要。參與者被要求根據(jù)他們自己的觀點對這些屬性進行評分。

我們將繪制所有這些評級(X軸)的所有屬性(Y軸)。由于我們想把自我評分與實際影響評分進行比較,我們將在這兩組評分之間進行轉(zhuǎn)換。顏色表示參與者的個人愿望。一個的氣泡表示一個的參與者對某一屬性的評分。


  1. ## 靜態(tài)圖

  2. # ...特征與(假定的)評級...

  3. # ...顏色和大小映射到自己的評級,按ID分組

  4. ggplot(df_what_look_for,


  5. color = own_rating, # bubbels總是根據(jù)自己的愿望來著色的

  6. group = iid)) + # 不同狀態(tài)下觀察結(jié)果的標識符

  7. labs(y = "", # 沒有軸標簽

  8. x = "100分", # X軸標簽




  9. ## 動畫圖譜

  10. plot1 +

  11. transition_states(states = rating) # 根據(jù)變量等級,對對比度子集進行動畫處理


靜態(tài)圖:?

動態(tài)圖:??

?

首先,如果你有點困惑哪種評分是自我評分和實際評分,我們將在下文探討動態(tài)標簽。

顯然,不同的人在伴侶身上尋找不同的東西。然而,吸引力往往被優(yōu)先于其他品質(zhì)。但在所有屬性中,吸引力的重要性在個人之間的差異最大。有趣的是,人們很清楚,他們的約會對象的評價可能與他們自己的觀點不同。

因此,我們所有人都有希望,尋找和我們一樣有雄心壯志或一樣聰明的人。然而,重要的并不總是內(nèi)在價值。

gganimate允許我們根據(jù)自己的意愿來定制動畫的細節(jié)。通過參數(shù)transition_length,我們可以定義從一個數(shù)據(jù)子集過渡到另一個數(shù)據(jù)子集所需的相對長度,通過state_length,相對而言,每個原始數(shù)據(jù)子集的顯示時間。只有當wrap參數(shù)設置為 "true "時,最后一幀才會被變形回動畫的第一幀,形成一個無盡的無縫循環(huán)。當然,不同的過渡函數(shù)的參數(shù)可能有所不同。


  1. ## 動畫

  2. #...替換默認參數(shù)


  3. transition_length = 3, # 總時間的3/4用于轉(zhuǎn)換

  4. state_length = 1, # 1/4的時間用于顯示實際數(shù)據(jù)

  5. wrap = FALSE) # 沒有無盡的循環(huán)


動態(tài)圖:??

?

過渡風格

如前所述,ganimate負責計算額外的數(shù)據(jù)點,以便在實際輸入數(shù)據(jù)的連續(xù)顯示點之間創(chuàng)造平滑過渡。通過ease_aes,我們可以控制哪個所謂的緩和函數(shù)被用來將原始數(shù)據(jù)點 "變形 "到彼此之間。默認參數(shù)用于聲明一個圖中所有美學的緩和函數(shù)。另外,緩和函數(shù)也可以通過名稱分配給各個美學模型。其中有四維、三維、正弦和指數(shù)緩和函數(shù),線性緩和函數(shù)是默認的。這些函數(shù)可以通過添加修飾詞后綴來進一步定制:用-in,函數(shù)按原樣應用;用-out,函數(shù)反向應用;用-in-out,函數(shù)在過渡的前半段按原樣應用,在后半段反向應用。

在這里我使用緩和函數(shù),模擬球的彈跳。


  1. ## 動畫

  2. # ......添加特殊的緩和

  3. ease_aes("bounce-in") # 反彈式緩和


動態(tài)圖:???

動態(tài)標示。{幀變量}

ganimate提供了所謂的幀變量,提供關(guān)于整個動畫或前一幀/當前幀/下一幀的元數(shù)據(jù)。幀變量--當用大括號包括時--在所有圖像標簽中可用于字符串字面解釋。例如,我們可以用定義了當前(或即將)顯示的實際數(shù)據(jù)子集的狀態(tài)變量的值來標記每一幀。

  1. ## 動畫

  2. # .添加動態(tài)標簽:帶有狀態(tài)變量當前/下一個值的副標題

  3. labs(subtitle = "{closest_state}") + # 添加幀變量作為副標題

動態(tài)圖:??

?

可用的變量集取決于過渡函數(shù)。要獲得任何動畫可用的幀變量列表(默認是最后一個),可以調(diào)用 frame_vars() 函數(shù),以獲得可用變量的名稱和值。

表明先前的數(shù)據(jù):shadow_*

為了強調(diào)不同幀之間的相互聯(lián)系,我們可以應用Gganimates的一個 "陰影"。默認情況下,shadow_null()即沒有陰影被添加到動畫中。一般來說,陰影以不同的方式顯示過去幀的數(shù)據(jù)點:shadow_trail()創(chuàng)建一個均勻間隔的數(shù)據(jù)點的痕跡,而shadow_mark()顯示所有原始數(shù)據(jù)點。

我們將使用shadow_wake()來創(chuàng)建一個過去數(shù)據(jù)點的 "喚醒",這些數(shù)據(jù)點正在逐漸縮小和消失。參數(shù)wake_length允許我們設置wake的長度,相對于總幀數(shù)。由于喚醒是重疊的,幾何圖形的透明度可能需要調(diào)整。很明顯,對于有很多數(shù)據(jù)點的圖來說,陰影會妨礙其清晰度。

  1. # 與plot1相同,但在geom_jitter中使用alpha = 0.1


  2. shadow_wake(wake_length = 0.5) # 添加陰影


動態(tài)圖:???

過渡的好處_*

雖然我只是喜歡動畫圖的視覺效果,優(yōu)點是更容易通過動畫過渡來追蹤單個觀察樣本。

同樣地,例如transition_reveal對時間序列持有額外的價值,它不僅在其中一個軸上映射時間變量,而且還映射到實際時間,讓我們快速看一下不同約會活動中 "成功"案例。


  1. ## 靜態(tài)圖

  2. #......女性、男性或情侶的事件日期與第二次約會的興趣對比

  3. aes(x = 日期, # 快速約會事件的日期

  4. y = count, # 對第二次約會的興趣

  5. color = info, # 哪一組:女性/男性/情侶


  6. title = "第二次約會的總體興趣")





動態(tài)圖:???

顯示的是每次約會后對第二次約會感興趣的女性和男性的百分比,以及雙方都想再見面的情侶的百分比。

大多數(shù)情況下,女性比男性對第二次約會更感興趣。此外,約會伙伴之間的吸引力往往不是雙向的:情侶雙方都想進行第二次約會的情況比男性和女性的興趣要少得多。雖然很難確定一年中最浪漫的時間,但根據(jù)數(shù)據(jù),初秋時節(jié)似乎有一種懈怠的浪漫。也許每個人都還在為他們的夏季戀情而心碎?

另一個非常方便的選項是transition_filter(),它是展示你的數(shù)據(jù)探索中選定的關(guān)鍵見解的一個好方法。在這里,動畫瀏覽了由一系列過濾條件定義的數(shù)據(jù)子集。由你決定你想要哪個數(shù)據(jù)子集的階段。數(shù)據(jù)是根據(jù)transition_filter()中定義的邏輯語句過濾的。所有語句成立的行都被包含在相應的子集中。我們可以為邏輯表達式分配名稱,這些名稱可以作為框架變量被訪問。如果keep參數(shù)被設置為 "true",那么之前的幀的數(shù)據(jù)將永久地顯示在后面的幀中。

我想探討的是,一個人自身的特點是否與他尋找的伴侶的屬性有關(guān)。異性相吸嗎?

下面顯示的是約會參與者對潛在伴侶的不同屬性的重要性。對比的是參與者的子集,他們被約會伙伴評為特別有趣、有吸引力、真誠、聰明或有野心。評分標準從1=低到10=高,因此我認為>7的值是相當出色的。


  1. ## 靜態(tài)圖

  2. # ...不同屬性的重要性評級

  3. aes(x = 變量, # 不同屬性

  4. 對潛在伴侶的重要性

  5. 顏色 = 變量, # 不同的屬性

  6. 填充 = 變量)) +


  7. ## 動畫

  8. # ......顯示不同子集的參與者的評分


  9. transition_filter("更有吸引力" = Attractive > 7, # 添加命名的過濾器表達式

  10. "不那么有吸引力" = 有吸引力 <= 7

  11. "更有趣" = 有趣 > 7,

  12. "較少樂趣"= 樂趣<=5)


動態(tài)圖:???

當然,特別有吸引力、聰明或有趣的參與者的數(shù)量相對較少。令人驚訝的是,低分和高分的參與者在尋找伴侶方面似乎沒有什么區(qū)別。相反,低分組包括了更多對某些特征有偏離期望的人。個人的品味似乎或多或少獨立于個人特征而變化。

數(shù)據(jù)的外觀:enter_* / exit_*

特別是當顯示的數(shù)據(jù)子集不重疊或只有部分重疊時,enter_*()和exit_*()函數(shù)是一個很好的方法,它使我們能夠設計數(shù)據(jù)點的進入和退出。有許多可組合的選項:數(shù)據(jù)點可以簡單地(不)出現(xiàn)(默認),淡出(enter_fade()/exit_fade()),增長或縮?。╡nter_grow()/exit_shrink()),逐漸改變顏色(enter_recolor()/exit_recolor()),飛入和飛出(enter_fly()/exit_fly())或漂移(enter_drift()/exit_drift())。我們可以用這些風格化的手段來強調(diào)不同幀的數(shù)據(jù)基礎的變化。


  1. ## 動畫

  2. # ......顯示不同子集的參與者的評分


  3. transition_filter("更有吸引力" = Attractive > 7, #

  4. "不那么有吸引力" = 有吸引力 <= 7,


  5. "較少樂趣" = 樂趣 <= 5) +

  6. exit_fade() # ...當顏色變淡時


動態(tài)圖:???

微調(diào)和保存:animate() & anim_save()

ganimate讓我們非常容易地完成和保存我們的動畫。我們可以將完成的ganimate對象傳遞給animate(),除其他外,定義要渲染的幀數(shù)(nframes)和/或每秒的幀率(fps)和/或動畫應該持續(xù)的秒數(shù)(duration)。我們還可以定義渲染各個幀的設備(默認是device = "png",但所有流行的設備都可用)。此外,我們還可以定義傳遞給設備的參數(shù),比如說寬度或高度。

函數(shù)anim_save()的工作方式簡單明了。我們可以定義文件名和路徑(默認為當前工作目錄),以及動畫對象(默認為最近創(chuàng)建的動畫)。


  1. # 創(chuàng)建一個 gganimate 對象

  2. transition_filter("更有吸引力" = 吸引力>7,

  3. "不那么有吸引力" = 有吸引力 <= 7)


  4. # 將最后創(chuàng)建的動畫保存到當前目錄中

  5. anim_save("plot.gif")


結(jié)論

我希望這篇博文能讓你了解如何使用ganimate將你自己的圖片升級為漂亮的、內(nèi)容豐富的動畫。

但更重要的是:不要等待愛情。約會的數(shù)據(jù)顯示,很可能有一個人正在尋找和你一樣的人。

heart gif


  1. ##愛心動畫

  2. plot(heart %>% #包括顏色和像素的x/y位置

  3. geom_point(size = 18, # 取決于動畫的高度和寬度

  4. shape = 15) + # 正方形


  5. guide = FALSE) + # 不包括圖例




最受歡迎的見解

1.R語言動態(tài)圖可視化:如何、創(chuàng)建具有精美動畫的圖

2.R語言生存分析可視化分析

3.Python數(shù)據(jù)可視化-seaborn Iris鳶尾花數(shù)據(jù)

4.r語言對布豐投針(蒲豐投針)實驗進行模擬和動態(tài)

5.R語言生存分析數(shù)據(jù)分析可視化案例

6.r語言數(shù)據(jù)可視化分析案例:探索brfss數(shù)據(jù)數(shù)據(jù)分析

7.R語言動態(tài)可視化:制作歷史全球平均溫度的累積動態(tài)折線圖動畫gif視頻圖

8.R語言高維數(shù)據(jù)的主成分pca、 t-SNE算法降維與可視化分析案例報告

9.python主題LDA建模和t-SNE可視化


拓端tecdat|約會數(shù)據(jù)動態(tài)可視化分析:R語言使用ggplot和ganimate制作的動畫圖的評論 (共 條)

分享到微博請遵守國家法律
广宗县| 屯留县| 济源市| 通江县| 南充市| 双流县| 夏邑县| 福清市| 磴口县| 平果县| 咸阳市| 扶沟县| 萝北县| 酒泉市| 南丹县| 海门市| 香港 | 芷江| 玛多县| 鹤峰县| 通辽市| 青冈县| 兴仁县| 四子王旗| 和硕县| 宜丰县| 盐津县| 满洲里市| 铜山县| 岳池县| 玉屏| 兴化市| 剑河县| 曲沃县| 红河县| 三江| 长岭县| 呼伦贝尔市| 车致| 忻城县| 城固县|