今天給大家講述圓形樹圖的展現方式,它表達的內容和樹圖一樣,區別在於它佔用的空間更小,展現層級結構更加整潔。


先教大家最簡單的圓形樹圖怎麼繪製,每一個圓表示不同的類別,而圓的大小由數值表示。

library(packcircles)
library(ggplot2)

# 創建數據集
data=data.frame(group=paste("Group", letters[1:20]), value=sample(seq(1,100),20))

#根據數據集生成圓心和半徑
packing <- circleProgressiveLayout(data$value, sizetype=area)

data = cbind(data, packing)
#head(data)
#圓的面積和數值大小成正比
#plot(data$radius^2, data$value)

# 生成50條直線用於繪製圓
dat.gg <- circleLayoutVertices(packing, npoints=50)

ggplot() +

# 通過繪製大量的直線來填充這個圓
geom_polygon(data = dat.gg, aes(x, y, group = id, fill=as.factor(id)), colour = "white", alpha = 0.6) +

# 在圓心位置添加文本
geom_text(data = data, aes(x, y, size=value, label = group)) +
scale_size_continuous(range = c(1.2,4)) +

# General theme:
theme_void() +
theme(legend.position="none") +
coord_equal()#保證x,y尺度大小相同


colors <- colorRampPalette(c("blue", "red"))(5)
plot(5:1, bg = colors[rank(5:1)], cex = 2, pch = 22)

用於生成漸變色,tips

推薦閱讀:

相关文章