[問題] plot label overlapping

看板R_Language作者 (fight)時間7年前 (2018/05/22 23:35), 7年前編輯推噓2(2010)
留言12則, 4人參與, 7年前最新討論串1/1
[問題類型]: 程式諮詢(我想用R 做某件事情,但是我不知道要怎麼用R 寫出來) [軟體熟悉度]: 使用者(已經有用R 做過不少作品) [問題敘述]: 我想要自己畫出circle of correlation,有順利畫出, 但是由於我的資料的共變異數矩陣有結構性, 有好幾個變數的分配是一樣的, 所以去做主成分之後, 這幾個相關係數是很接近的,所以PLOT上面的LABEL就疊在一起了, 但變數實在太多,沒辦法自己慢慢給定他label的位置, ex. X1~X4相關係數很接近,X5~X8相關係數很接近,X9~X18相關係數很接近。 變數實際上更多,這裡是小範例。 如下圖所示, https://imgur.com/a/ewGenyB 我有查到有避免label overlapping的函數, 但似乎都只能跟ggplot2、lattice搭配才能使用, 但ggplot2與lattice好像不能畫出circle of correlation plot, 想問版友有沒有遇過類似的問題,可以怎麼解決這種label重疊的問題,謝謝大家。 [程式範例]: 我的程式碼如下: PCA.cor Comp.1 Comp.2 [1,] -0.4004015 -0.91530070 [2,] -0.4031804 -0.91388941 [3,] -0.4009309 -0.91467268 [4,] -0.4051744 -0.91267974 [5,] 0.9511231 -0.30135543 [6,] 0.9435535 -0.32519751 [7,] 0.9466522 -0.31579510 [8,] 0.9435672 -0.32456862 [9,] 0.9987228 -0.01456728 [10,] 0.9980840 -0.02914308 [11,] 0.9977504 -0.03330187 [12,] 0.9981728 -0.02351494 [13,] 0.9976536 -0.02976503 [14,] 0.9984927 -0.01768483 [15,] 0.9980019 -0.02672811 [16,] 0.9976367 -0.04240636 [17,] 0.9976763 -0.03634121 [18,] 0.9984849 -0.01990170 corrplot <- function(pca.cor, main){ a <- seq(0, 2*pi, length = 100) plot(cos(a), sin(a), type = 'l', col="gray", xlab = "PC1", ylab = "PC2", main=main) abline(h = 0, v = 0, lty = 2) # Add active variables arrows(0, 0, pca.cor[, 1], pca.cor[, 2], length = 0.1, angle = 15, code = 2) # Add labels text(pca.cor+0.05, labels=1:100, cex = 1, adj=1) } [環境敘述]: 請提供 sessionInfo() 的輸出結果, 裡面含有所有你使用的作業系統、R 的版本和套件版本資訊, 讓版友更容易找出錯誤 [關鍵字]: label overlapping -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.115.206.241 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1527003312.A.EC2.html ※ 編輯: pp61022 (59.115.206.241), 05/22/2018 23:38:41 ※ 編輯: pp61022 (59.115.206.241), 05/22/2018 23:44:52

05/23 02:23, 7年前 , 1F
我的經驗中最接近的是vegan::orditkplot()
05/23 02:23, 1F

05/23 02:24, 7年前 , 2F
剛好該function可以接受同套件中rda()結果而rda()可以做
05/23 02:24, 2F

05/23 02:24, 7年前 , 3F
PCA
05/23 02:24, 3F

05/23 02:25, 7年前 , 4F
但如果是要輸出成圖檔要美觀,我會用inkscape認真調啦
05/23 02:25, 4F

05/23 08:25, 7年前 , 5F
ggplot2可以畫PCA沒問題,其實就只是把主成分兩個軸當X,Y
05/23 08:25, 5F

05/23 08:26, 7年前 , 6F
arrow 可以用geom_segment 圖標重疊用ggrepel中的
05/23 08:26, 6F

05/23 08:27, 7年前 , 7F
geom_text_repel or geom_label_repel 很好用
05/23 08:27, 7F

05/23 08:30, 7年前 , 8F
我推薦這個,如果你不想試ggplot 上次看到factoextra
05/23 08:30, 8F

05/23 08:30, 7年前 , 9F

05/23 08:31, 7年前 , 10F
有repel=TRUE 功能,可以試看看,可能沒有ggrepel強
05/23 08:31, 10F

05/23 10:32, 7年前 , 11F
推ggrepl
05/23 10:32, 11F

05/24 00:29, 7年前 , 12F
謝謝各位的建議 我再嘗試看看 謝謝大家!
05/24 00:29, 12F
文章代碼(AID): #1R13Ymx2 (R_Language)
文章代碼(AID): #1R13Ymx2 (R_Language)