您好,登錄后才能下訂單哦!
如何分析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)
該數(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()
因?yàn)閍rea僅僅是定義了一個(gè)數(shù)值型變量的方塊大小,填充顏色是可以單獨(dú)定義的。但是顏色往往也可以單獨(dú)作為一個(gè)數(shù)值型度量的表達(dá)方式。
ggplot(G20, aes(area = gdp_mil_usd)) +
geom_treemap(fill="steelblue")
ggplot(G20, aes(area = gdp_mil_usd, fill = hdi)) +
geom_treemap()+
scale_fill_distiller(palette="Greens")
添加標(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")
其中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")
其中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))
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)
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í)。
免責(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)容。