溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何分析ggplot2樹(shù)狀圖

發(fā)布時(shí)間:2022-01-15 11:37:19 來(lái)源:億速云 閱讀:171 作者:柒染 欄目:大數(shù)據(jù)

如何分析ggplot2樹(shù)狀圖,針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。

2017年8月份的R語(yǔ)言更新包中,默默地加入了支持ggplot2樹(shù)狀圖的新幾何對(duì)象,從此在R語(yǔ)言中制作樹(shù)狀圖,不用再求助于第三方包的輔助了。

該包既有Cran上的正式發(fā)行版,也有托管在GitHub上的開(kāi)發(fā)版,安裝方式如下:

CRAN:

install.package("treemapify")

Github:

devtools::install_github("wilkox/treemapify")

GitHub主頁(yè):

https://github.com/wilkox/treemapify

載入本文章所需的擴(kuò)展包:

library("ggplot2")

library("treemapify")

library("tweenr")

library("gganimate")

library("RColorBrewer")

安裝該包之后,你的ggplot2中會(huì)多出一個(gè)樹(shù)狀圖幾何對(duì)象——geom_treemap()。

實(shí)際上我曾經(jīng)分享過(guò)一個(gè)樹(shù)狀圖案例,但是是使用第三方輔助包制作,一直在等ggplot2出樹(shù)狀圖圖層。

R語(yǔ)言數(shù)據(jù)可視化之——TreeMap

本次案例使用該(treemapify)包內(nèi)的內(nèi)置數(shù)據(jù)集:

預(yù)覽一下數(shù)據(jù)集結(jié)構(gòu):

str(G20)

head(G20)

如何分析ggplot2樹(shù)狀圖

該數(shù)據(jù)集描述20峰會(huì)參會(huì)國(guó)家的經(jīng)濟(jì)指標(biāo),里面包含了五個(gè)字段,分別是全球的大區(qū)(region)、國(guó)家名稱(country)、GDP指標(biāo)(gdp_mil_usd)(應(yīng)該是二次計(jì)算的某種指標(biāo)),人類發(fā)展指數(shù)(hdi),已經(jīng)經(jīng)濟(jì)發(fā)展程度(econ_classification)。

字段名稱               類型

region                 因子型

country                因子型

gdp_mil_usd        數(shù)值型(整數(shù))

hdi                        數(shù)值型(浮點(diǎn))

econ_classification    因子型

樹(shù)狀圖是沒(méi)有顯式坐標(biāo)系統(tǒng)的一類特殊圖形,依靠正方化算法,將樣本總體正方形按照實(shí)際觀測(cè)值占總體比例分割成單個(gè)矩形方塊。因而其至少需要一個(gè)數(shù)值型變量作為輸入?yún)?shù)。

一個(gè)簡(jiǎn)單的樹(shù)狀圖:

ggplot(G20, aes(area = gdp_mil_usd)) + 

  geom_treemap()

如何分析ggplot2樹(shù)狀圖

因?yàn)閍rea僅僅是定義了一個(gè)數(shù)值型變量的方塊大小,填充顏色是可以單獨(dú)定義的。但是顏色往往也可以單獨(dú)作為一個(gè)數(shù)值型度量的表達(dá)方式。

ggplot(G20, aes(area = gdp_mil_usd)) + 

  geom_treemap(fill="steelblue")

如何分析ggplot2樹(shù)狀圖

ggplot(G20, aes(area = gdp_mil_usd, fill = hdi)) + 

  geom_treemap()+

  scale_fill_distiller(palette="Greens")

如何分析ggplot2樹(shù)狀圖

添加標(biāo)簽:

包作者針對(duì)ggplot樹(shù)狀圖寫(xiě)了優(yōu)化好的文本 標(biāo)簽函數(shù)geom_treemap_text(剛開(kāi)始就說(shuō)過(guò)樹(shù)狀圖超越了傳統(tǒng)三大坐標(biāo)系的范疇,沒(méi)有顯式聲明的坐標(biāo)系統(tǒng),算法比較特殊因而無(wú)法使用常規(guī)的geom_text()進(jìn)行添加標(biāo)簽)。

ggplot(G20, aes(area = gdp_mil_usd, fill = hdi, label = country)) +

  geom_treemap() +

  geom_treemap_text(fontface = "italic", colour = "red", place = "centre",grow = TRUE,alpha=.6)+

  scale_fill_distiller(palette="Greens")

如何分析ggplot2樹(shù)狀圖

其中place參數(shù)控制每一個(gè)方塊中標(biāo)簽相對(duì)于四周的位置,grow則控制標(biāo)簽是否與方塊大小自適應(yīng)(呈大致比例放大縮?。?/p>

次級(jí)分組(亞群):

該包支持次級(jí)分組(專業(yè)術(shù)語(yǔ)叫做亞群),這在實(shí)際應(yīng)用場(chǎng)景中非常廣泛,比如我們?cè)谟^察國(guó)家指標(biāo)大小的同時(shí),還想獲取國(guó)家所屬大區(qū)的總體指標(biāo),通過(guò)加入次級(jí)分組,我們可以獲取兩個(gè)維度信息。通過(guò)在美學(xué)映射中設(shè)置subgroup參數(shù)(一個(gè)類別型變量),函數(shù)內(nèi)部可以自動(dòng)完成亞群的變量聚合計(jì)算,并在圖形成用框線顯示出次級(jí)類別大小的規(guī)模。

ggplot(G20, aes(area = gdp_mil_usd, fill = hdi, label = country,subgroup = region)) +

  geom_treemap() +

  geom_treemap_subgroup_border() +

  geom_treemap_subgroup_text(place = "centre", grow = T, alpha = 0.5, colour ="black", fontface = "italic", min.size = 0) +

  geom_treemap_text(colour = "red", place = "topleft", reflow = T,alpha=.5)+

  scale_fill_distiller(palette="Greens")

如何分析ggplot2樹(shù)狀圖

其中reflow參數(shù)用于控制標(biāo)簽是否自適應(yīng)矩形塊大小,若按照原始大小超過(guò)矩形塊,則會(huì)自動(dòng)換行顯示。

分面系統(tǒng):

當(dāng)你覺(jué)得使用次級(jí)分組不能獲得一個(gè)很好地視覺(jué)呈現(xiàn)效果,geom_treemap還支持ggplot函數(shù)中的fact_grid分面參數(shù),這就是所有g(shù)gplot2擴(kuò)展函數(shù)的好處,可以繼承源自于ggplot2的高級(jí)圖形屬性。

ggplot(G20, aes(area = gdp_mil_usd, fill = region, label = country)) +

  geom_treemap() +

  geom_treemap_text(grow = T, reflow = T, colour = "black") +

  facet_wrap( ~ econ_classification) +

  scale_fill_brewer(palette="Blues")+

  labs(

 title = "The G-20 major economies",

caption = "The area of each country is proportional to its relative GDP within the economic group (advanced or developing)",

 fill = "Region" )+

theme(legend.position = "bottom",

plot.caption=element_text(hjust=0)) 

如何分析ggplot2樹(shù)狀圖

GIF動(dòng)畫(huà)流:

借助tweened包提供的差值方法,你可以實(shí)現(xiàn)將不同時(shí)間點(diǎn)的截面數(shù)據(jù)進(jìn)行追加,并且編組成gganimate函數(shù)可識(shí)別的動(dòng)畫(huà)幀組,通過(guò)tweenlength、statelength和nframes 參數(shù)來(lái)控制變化的長(zhǎng)度、每一幀停留的時(shí)間以及切換的幀數(shù)。

G20_alt <- G20

G20_alt$gdp_mil_usd <- sample(G20$gdp_mil_usd, nrow(G20))

G20_alt$hdi <- sample(G20$hdi, nrow(G20))

tweened <- tween_states(list(G20,G20_alt,G20), tweenlength = 8, statelength = 5, ease = 'cubic-in-out', nframes = 30)

animated_plot <- ggplot(tweened, aes(area = gdp_mil_usd, fill = hdi,label = country, subgroup = region,frame = .frame)) +

  geom_treemap(fixed = T) +

  geom_treemap_subgroup_border(fixed = T) +

  geom_treemap_subgroup_text(place = "centre", grow = T, alpha = 0.5,colour = "black", fontface = "italic", min.size = 0,fixed = T) +

  geom_treemap_text(colour = "white", place = "topleft", reflow = T, fixed = T)+

  scale_fill_distiller(palette="Greens")

ani.options(interval = 1/10)

gganimate(animated_plot, "E:/animated_treemap.gif", title_frame = F,ani.width = 1000, ani.height = 800)

如何分析ggplot2樹(shù)狀圖

treemapify包給ggplot2提供的geom_treemap(),填補(bǔ)了ggplot2原生幾何對(duì)象在樹(shù)狀圖領(lǐng)域的空白,可謂是進(jìn)一步擴(kuò)展、豐富ggplot2生態(tài)系統(tǒng)。

關(guān)于如何分析ggplot2樹(shù)狀圖問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI