第一次發布問題并且對 R 比較陌生,所以請多多包涵。我正在構建一個回圈,一次使用 2 列來計算大約 50 個變數的對稱樞軸坐標(等距對數比),并在每個回圈中生成一個 xy 圖。我有兩個關于繪圖的問題。1) 我設法使用基本 R 圖獲得回圈作業和繪圖圖,彩色樣本點基于第 1 列(群集)中的變數。我在圖例中苦苦掙扎,因為它從列中獲取了集群的名稱,但沒有為一個集群生成預期的顏色。有什么幫助嗎?2)我更喜歡在此回圈中使用 ggplot 但它不起作用,有人可以幫忙嗎?因此,該回圈將創建具有兩列的資料框 Z,其中計算出的樞軸由 df 中的兩個變數協調。在劇情中,
set.seed(42) ## for sake of reproducibility
df_syn <- as.data.frame(matrix(runif(n=50, min=1, max=20), nrow=10))
names(df_syn) <- c('A', 'B', 'C', 'D', 'E')
df_cr <- data.frame(Cluster=c('A', 'A', 'B', 'B', 'C', 'C', 'C', 'C', 'A', 'B'))
df_syn <- cbind(df_cr, df_syn)
D <- ncol(df_syn[, 2:6])
for (i in 2:D) {
for (j in 2:D) {
if (i == j) {
plot(0, 0, type="n", xaxt="n", yaxt="n")
text(0, 0, names(df_syn[i]))
} else {
Z <- robCompositions::pivotCoord(df_syn[, c(i, j, 2:D[-c(i, j)])], method="symm")
plot(Z[, 1:2],
xlab=paste(colnames(df_syn[i])), ylab=paste(colnames(df_syn[j])), col=factor(df_syn$Cluster), pch=19)
legend("bottomright", legend=unique(df_syn[, 1]), pch=19, ncol=1, col=factor(df_syn$Cluster))
}
}
}
uj5u.com熱心網友回復:
這實際上是一個簡單的修復。您指定col=factor(df_syn$Cluster)
了 ,它給出1, 1, 2, 2, 3, 3, 3, 3, 1, 2
,并且由于只需要前三個元素,所以您得到黑色、黑色、紅色。你想要什么unique(factor(df_syn$Cluster))
。
par(mfrow=c(D - 1, D - 1))
for (i in 2:D) {
for (j in 2:D) {
if (i == j) {
plot(0, 0, type="n", xaxt="n", yaxt="n")
text(0, 0, names(df_syn[i]))
} else {
Z <- robCompositions::pivotCoord(df_syn[, c(i, j, 2:D[-c(i, j)])], method="symm")
plot(Z[, 1:2],
xlab=paste(colnames(df_syn[i])), ylab=paste(colnames(df_syn[j])), col=factor(df_syn$Cluster), pch=19)
legend("bottomright", legend=unique(df_syn[, 1]), pch=19, ncol=1, col=unique(factor(df_syn$Cluster)))
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/536371.html
標籤:r循环阴谋
上一篇:在R編程中使用函式