我试图使用ggplot2和coord_polar()获取径向坐标图。我使用了R中的drep包并获得了radviz2d(),参见NotMyRadViz。由于我希望在ggplot中执行此操作,因此我提取了所有必需的函数。另外我希望使用coord_polar()来获取它,当我这样做时,我的变量会旋转MyRadViz2D。有没有人知道如何解决这个问题?
library("dprep")
radviz2d(iris,name="Iris")
#-------------------- Extracted from mmnorm.R
n <- dim(iris)[1]
p <- dim(iris)[2]
classes <- iris[,p]
varnames <- colnames(iris)
dataset <- as.matrix(mmnorm(iris))
dataset <- dataset[,-p]
sumrows <- rowSums(dataset)
columns <- seq(0,p-2)
angles <- (2*pi*columns)
angles <- angles/(p-1)
cosines <- cos(angles)
sines <- sin(angles)
proj.x <- (dataset%*%cosines)
proj.x <- proj.x/sumrows
proj.y <- (dataset%*%sines)
proj.y <- proj.y/sumrows
#--------------- What I'd been doing
library("ggplot2")
library("reshape2")
dataset2 <- melt(dataset/sumrows)
classnumbers <- 1:length(unique(classes))
classes <- as.numeric(classes,drop=TRUE)
Projxy <- data.frame(Projx = proj.x, Projy = proj.y, Ids = classes)
Cos_Sin <- data.frame(Angle = angles,Cos=cosines,
Sin = sines, Varnames = varnames[-p])
theta <- angles * 180/pi
d2 <- data.frame(theta,Varnames=varnames[-p])
#------------ My ggplot2
ggplot(data=dataset2,aes(x = Var2, y = value)) + geom_blank() +
ylab("") + xlab("") + ggtitle(paste("RadViz 2D for", "Iris")) +
coord_polar("y",start = pi/2) +
geom_point(data = Projxy,aes(x = Projx, y = Projy,col = factor(Ids))) +
coord_polar() + theme(legend.position = "bottom")