作者pp61022 (fight)
看板R_Language
標題[問題] plot label overlapping
時間Tue May 22 23:35:09 2018
[問題類型]:
程式諮詢(我想用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://webptt.com/m.aspx?n=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
1F:→ andrew43: 我的經驗中最接近的是vegan::orditkplot() 05/23 02:23
2F:→ andrew43: 剛好該function可以接受同套件中rda()結果而rda()可以做 05/23 02:24
3F:→ andrew43: PCA 05/23 02:24
4F:→ andrew43: 但如果是要輸出成圖檔要美觀,我會用inkscape認真調啦 05/23 02:25
5F:推 cywhale: ggplot2可以畫PCA沒問題,其實就只是把主成分兩個軸當X,Y 05/23 08:25
6F:→ cywhale: arrow 可以用geom_segment 圖標重疊用ggrepel中的 05/23 08:26
7F:→ cywhale: geom_text_repel or geom_label_repel 很好用 05/23 08:27
8F:→ cywhale: 我推薦這個,如果你不想試ggplot 上次看到factoextra 05/23 08:30
10F:→ cywhale: 有repel=TRUE 功能,可以試看看,可能沒有ggrepel強 05/23 08:31
11F:推 seimwiwa: 推ggrepl 05/23 10:32
12F:→ pp61022: 謝謝各位的建議 我再嘗試看看 謝謝大家! 05/24 00:29