วิธีการพล็อตแฟนคลับ (Polar) Dendrogram ใน R


9

ฉันหมายถึงสิ่งนี้:

ข้อความแสดงแทน

ชุดข้อมูลที่แนะนำสำหรับการแสดงวิธีแก้ไข:

data(mtcars)
plot(hclust(dist(mtcars)))

1
ข้อดีของการเป็นตัวแทนแบบขั้ว (นอกเหนือจากการประหยัดพื้นที่) คืออะไร? ดูเหมือนว่าฉันจะดูยากกว่า
โก้

1
@nico มันเจ๋งกว่านี้อีก (-;

1
นอกจากนี้ยังเป็นประโยชน์เมื่อคุณไม่ได้หนึ่งต้นกำเนิด ...
Tal Galili

3
@mbq: คุณพลาด "ดี" ปุนมี ... คุณอาจจะได้กล่าวว่า "มันมากขึ้นแฟน " :)
นิโก้

คำตอบ:


10

ใน phylogenetics นี้เป็น phylogram แฟนดังนั้นคุณสามารถแปลงเป็นphyloและใช้ape:

library(ape)
library(cluster) 
data(mtcars)
plot(as.phylo(hclust(dist(mtcars))),type="fan")

ผลลัพธ์:
ข้อความแสดงแทน


(+1) ฉันมองหาอันนี้ แต่ไม่พบในapeแพ็คเกจ!
chl

การเล่นชนิดหนึ่ง นั่นคือสิ่งที่ฉันกำลังมองหา ฉันสงสัยว่ามีอะไรบางอย่างที่คล้ายกันใน ggplot2 ...
Tal Galili

@Tal ไม่มีการสนับสนุนอย่างเป็นทางการสำหรับโครงสร้างต้นไม้ใน ggplot2 ดูกระทู้กลุ่มนี้ของ Google, j.mp/c85l5l (แต่มันไม่ใช่วงกลมแน่นอน)
chl

สวัสดี chl ขอบคุณสำหรับลิงค์ ฉันจะตอบสนองต่อการมีมีการอ้างอิงถึงรหัสนี้เช่นกัน ...
Tal Galili

5

คุณเห็นโพสต์นี้หรือไม่? http://groups.google.com/group/ggplot2/browse_thread/thread/8e1efd0e7793c1bb

ยกตัวอย่างเพิ่ม coord_polar () และกลับแกนและคุณเข้าใกล้:

library(cluster) 
data(mtcars)
x <- as.phylo(hclust(dist(mtcars)))

p <- ggplot(data=x)
p <- p + geom_segment(aes(y=x,x=y,yend=xend,xend=yend), colour="blue",alpha=1) 
p <- p + geom_text(data=label.phylo(x), aes(x=y, y=x, label=label),family=3, size=3) + xlim(0, xlim) + coord_polar()

theme <- theme_update(  axis.text.x = theme_blank(),
                        axis.ticks = theme_blank(),
                        axis.title.x = theme_blank(),
                        axis.title.y = theme_blank(),
                        legend.position = "none"
                     )
p <- p + theme_set(theme)
print(p)

1
p <- ggplot(data=x)ฉันได้รับข้อผิดพลาดนี้: ggplot2 doesn't know how to deal with data of class phylo. ฉันพลาดอะไรไป
GaBorgulya

1

สี่ปีต่อมาฉันสามารถตอบคำถามนี้ได้แล้ว ก็สามารถทำได้โดยการรวมสองแพคเกจใหม่: circlizeและdendextend

พล็อตสามารถทำได้โดยใช้circlize_dendrogramฟังก์ชั่น (ช่วยให้สามารถควบคุมรูปแบบ "แฟน" ของฟังก์ชั่น

# install.packages("dendextend")
# install.packages("circlize")
library(dendextend)
library(circlize)

# create a dendrogram
hc <- hclust(dist(datasets::mtcars))
dend <- as.dendrogram(hc)

# modify the dendrogram to have some colors in the branches and labels
dend <- dend %>% 
   color_branches(k=4) %>% 
   color_labels

# plot the radial plot
par(mar = rep(0,4))
# circlize_dendrogram(dend, dend_track_height = 0.8) 
circlize_dendrogram(dend, labels_track_height = NA, dend_track_height = .4) 

และผลลัพธ์คือ:

ป้อนคำอธิบายรูปภาพที่นี่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.