如何根据主成分对 17 种颜色的点进行着色?

how to color points in 17 colors based on principal component?

我正在 R 中对数据框进行 PCA(df_f)

pc_gtex <- prcomp(df_f)

plot(pc_gtex$x[,1], pc_gtex$x[,2], col=gtex_group, main = "PCA", xlab = "PC1", ylab = "PC2")
legend("topleft", col=1:17, legend = paste(unique(gtex_pm$tissue), 1:17), pch = 20, bty='n', cex=1.5)

下面是我的组table,这个PCA.The样本列在这个table实际上代表了主要数据的行是那个[=的plotted.The列32=] 是 genes.So 基本上我有 17 groups/tissues 要在 PCA 上表示。

head(gtex_pm)

     sample   tissue

   1 SRR1069514 Prostate
   2 SRR1071717  Bladder
   3 SRR1073069 Prostate

基于以上gtex_group对象看起来像关卡:

head(gtex_group)
[1] 1 2 1 1 1 

PCA 的 Main table 样本头是:行名是样本

   SRR1069514   0   0.0009995   5.773065971 1.644998088 0.142367241 0.176471143 0.195566784 0.0009995   0.025667747 3.380994674 1.762502288 0   0.077886539 0   0.002995509 0.01093994  2.110576771 1.38829236  2.26186726  0.431132855 3.108480433 3.96347629  0   0   0.41012092  3.48452699  1.68565794  0   1.425034189 1.87456758  2.590542128 0   0   0   1.941471742 0.961646434 0   1.17711535  0.058268908 0   0.260824618 3.08534443  1.10426296  0.242946179 0.0009995   0   0   0   0.0009995   1.560247668 1.517541898 0.016857117 0.767326579 0.0009995   3.0191069   0   2.607050533 1.446683661 2.288384744 2.62082062  0.19309663  0   0   0.234281296 0   1.415610416 2.328837464 0.008959741 0.911479175 0.375005901 0.660107327 3.184739763 1.16064768  0.001998003 0.138891999 2.219855445 3.1011278   1.81872592  2.98229236  2.4114395   3.24528404  0   1.54734972  0.406131553 0.029558802 0.003992021 0.693647056 2.07581 2.8357982   0.0009995   0.082501222 1.09661029  2.75829962  0.635518068 3.11484775  0.01291623  3.40837159  0   
   SRR1071717   0   0   0.0009995   4.99519673  1.626491667 0.100749903 0.327863862 0.09531018  0   0.056380333 3.328196489 1.541373182 0   0.091667189 0.044973366 0   0.033434776 1.953311265 1.56444055  1.79142608  0.993622075 3.206236281 3.82609468  0   0   2.565487674 3.2202349   1.1304339   0   1.092258815 1.80203978  2.645394351 0   0   0.0009995   1.681200279 2.047434746 0   0.948176921 0.006975614 0.014888613 0.298622013 2.49667052  1.01884732  0.38662202  0   0   0   0   0.0009995   0.941958479 1.752845376 0.017839918 0.216722984 0.051643233 3.0505518   0   2.034444176 0.988053098 2.235804059 1.89686995  0.090754363 0   0   0.198850859 0   1.585554972 2.274905524 0   0.04305949  0.056380333 0.044016885 0.771496147 1.195436473 0   0.368801124 1.974636427 2.7700856   2.00120969  2.88875935  2.2651947   2.66242502  0   0.429181635 0.04018179  0.034401427 0   0.242161557 1.9907469   2.1384177   0.0009995   0.008959741 0.99916021  2.3892214   0.086177696 3.16821391  0   3.2038434   0
   SRR1073069   2.19544522  1.32866525  0.0009995   4.50198508  1.159707388 0.141499562 0.265436464 0.026641931 2.3330173   0.028587457 3.140698044 1.537297235 0.012916225 0.023716527 0   0.002995509 0.049742092 2.071157322 1.02460688  2.11818137  0.359072069 2.419656765 3.5065479   0.137149838 2.121902193 0.305276381 2.95958683  1.49939981  3.14397985  1.001366904 1.450911    1.39475844  1.930071085 1.140074079 0.037295785 1.609437912 0.412109651 0.870456196 0.943516718 0.013902905 0   0.152721087 2.88836976  1.482967248 0.272314595 2.061532121 0.552159487 2.394890764 1.391033116 0.443402947 1.593714952 1.285921387 0.00796817  0.371563556 0.020782539 3.1946651   1.26327891  2.212003715 1.46672161  2.140183804 2.71997877  0.294161039 0.018821754 0.0009995   0.179818427 1.893714192 1.731478538 2.502255288 0.013902905 0.752830183 0.347129531 0.407463111 2.467082065 0.558472277 1.563812734 0.022739487 1.608837732 2.8176816   1.30670988  2.44495233  1.81107178  3.03254625  0.569283193 0.948176921 0.101653654 0.036331929 0   0.786182047 1.9867779   3.5039946   2.463427618 0.008959741 0.76360564  2.20640453  0.514618422 2.87964779  1.11021142  3.18750899  1.22436349
   SRR1074410   2.69022562  1.70055751  0.013902905 3.314622273 0.503196597 0.4940863   0.044016885 0.023716527 1.753884517 0.03246719  2.767324893 1.666385193 0.009950331 0.05259245  0   0   0.017839918 1.575260461 0.76779072  2.22202559  0.83377831  2.198113071 3.57953881  0.051643233 2.207284913 0.072320662 3.04414141  1.39177929  2.851746423 0.982452934 1.33210213  1.888583654 1.871340532 1.238664044 0.03246719  1.734659877 0.486737828 0.412109651 1.126551657 0.035367144 0   0.213497174 2.76032635  1.131402111 0.572108852 2.102425378 0.291175962 1.85159947  0.943516718 0.283674051 1.232560261 0.982078472 0   0.223943232 0.035367144 2.9064091   1.583299255 2.376671636 1.185095749 2.07681309  2.20794469  0.877549904 0.151002874 0   0.107059072 3.038312721 1.486365915 2.633829402 0   0.403463105 0.195566784 0.285930539 1.296643139 0.48796633  1.664115474 0.054488185 1.884034745 2.3757426   1.71036863  2.61732284  1.9348492   3.1138708   1.220239777 0.322807874 0.12398598  0.004987542 0.002995509 0.446607051 1.939317    3.8484227   2.78346684  0.025667747 0.78253074  2.03352848  0.181487876 2.7091163   1.00430161  3.1429015   1.24875495

图形最终代表8种颜色然后自己重​​复,所以我们无法区分一些tissues.I想显示17种不同的colors.How我这样做吗?

如果不知道您的数据究竟是什么样子,很难说,但也许像这样的东西会起作用:

cols <- rainbow(17)[as.factor(gtex_pm$tissue)]

plot(pc_gtex$x[,1], pc_gtex$x[,2], col=cols, main = "PCA", xlab = "PC1", ylab = "PC2")