径向可视化与ggplot2协调

时间:2016-04-12 02:50:22

标签: r ggplot2 data-visualization polar-coordinates

我试图使用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")

0 个答案:

没有答案